个人简介

Echo Blog


江湖无名 安心练剑
  • 结巴分词与繁简体转换
    结巴分词 请参考 结巴分词原理。 结巴分词的不足 这里是针对如果使用繁简体转换,仅仅想使用分词。 那么结巴分词会有哪些不足呢? HMM 是一种面向未来的分词(预测),但是繁体是一种面向过去的(词组/字固定) 看似非常有用的 HMM,到了繁简体转换全部成为了鸡肋。 词库较大。 结巴分词是面向全体汉字分组的,所以分词的词库较大,这对于繁简体转换的词组某种程度而言是...
    2020-01-08 02:09:32 | Java
  • 结巴分词原理讲解之数据归一化
    结巴分词的归一化 结巴分词的字典加载有一段源码,做了数据的归一化,使用的是 log 函数。 截取如下: for (Entry<String, Double> entry : freqs.entrySet()) { entry.setValue((Math.log(entry.getValue() / total))); minFreq = Math.min(...
    2020-01-08 02:09:32 | NLP
  • 结巴分词原理讲解
    分词的必要性 我们平时做文本分析,或者我个人想做一个繁简体转换/同义词替换等工具,分词都是必须的。 对于文本的朗读,统计等等,都是需要基于分词实现。 算法 前缀树算法+DAG 算法 其实是非常有用的。 我们基于最基础的一点,就可以实现最简单的分词。 敏感词(其他词语匹配),也可以基于这种算法。 正则表达式+搜索引擎,也和这些东西是紧密相连的。 算法的重要性 单单就 DFA ...
    2020-01-08 02:09:32 | Java
  • java 敏感词工具实现思路
    敏感词 我们只要是涉及到用户可以自由发表言论的网站,或者说收集对应的信息。 都会涉及到用户的输入词敏感问题。 敏感类别 类似于直接给敏感词打一个标签。(label) 内容安全 内容暴露个人信息。 身份证,密码,手机号。银行卡号。 用户名,出生年月,家庭住址。年龄。 暴力色情 反动违法 广告推广垃圾信息 ...
    2020-01-07 02:09:32 | Java
  • java 敏感词之 StopWord 停止词优化与特殊符号
    背景 默认收集的敏感词字典,实际上有非常多的重复信息。 比如说: 兼职 兼!职 兼@职 兼#职 兼¥职 这种最核心的内容其实只有一个,如果将全部的停止词进行穷尽的话,将会使得敏感词构建的 Map 变得非常大,而且也没办法穷尽。 这种全部存储的方式非常的不灵活。 目的 所以这一节将停止词作为单独的内容,进行相关的处理。 核心目的如下: (1)为敏感词库瘦身 (2)为后期 ...
    2020-01-07 02:09:32 | Java
  • java 敏感词之字典瘦身
    背景 默认收集的敏感词字典,实际上有非常多的重复信息。 比如说: 兼职 兼!职 兼@职 兼#职 兼¥职 这种最核心的内容其实只有一个,如果将全部的停止词进行穷尽的话,将会使得敏感词构建的 Map 变得非常大,而且也没办法穷尽。 这种全部存储的方式非常的不灵活。 目的 所以这一节将停止词作为单独的内容,进行相关的处理。 核心目的如下: (1)为敏感词库瘦身 (2)为后期 ...
    2020-01-07 02:09:32 | Java
  • java 敏感词之 DFA 算法(Tire Tree 算法)详解
    背景 想实现一个基于敏感词库的敏感词工具。 遍历匹配 发现如果是逐个字符遍历的话,效率实在是太低。 这里我首先想到了两种算法: KMP 算法 Brute-Force 算法 当然单纯只是匹配,其实性能依然非常的低。 正则表达式 当然还有一种方式就是基于正则表达式,个人感觉这种性能也比较差。 正则表达式 直接查了下资料,可以使用 DFA 算法来解决这个问题。 DFA 算法...
    2020-01-07 02:09:32 | Java
  • Regex 正则表达式与 DFA
    业务背景 我希望通过 DFA 算法验证一个字符串中是否包含 url/邮箱/数字 等信息,这些直接使用 regex 判断起来比较简单。 因为复杂的事情已经被 regex 处理了,但是个人是在处理 DFA,就不想依赖 regex。 所以就学习下,如何将 regex 转换为 DFA 进行处理。 问题概述 随着计算机语言的结构越来越复杂,为了开发优秀的编译器,人们已经渐渐感到将词法分析独立...
    2020-01-07 02:09:32 | Java