目录
1.引言
2.IK-Analyzer是什么? (IK是分词器)
3.分词的原理
4.分词的逻辑
5.附1 : 官方文档
6.附2 : 项目中使用的字典
1.引言
全文搜索是一场 查准率 与 查全率 之间的较量 (引用百度百科: 两者关系为互逆的关系 )
查准率即尽量返回较少的无关文档,而查全率则尽量返回较多的相关文档。
尽管能够精准匹配用户查询的单词,但这仍然不够,我们会错过很多被用户认为是相关的文档。 因此,我们需要把网撒得更广一些,去搜索那些和原文不是完全匹配但却相关的单词。
难道你不期待在搜索“quick brown fox“时匹配到包含“fast brown foxed“的文档,或是搜索“Johnny Walker“时匹配到“Johnnie Walker“, 又或是搜索“Arnolt Schwarzenneger“时匹配到“Arnold Schwarzenegger“吗?
如果文档 确实 包含用户查询的内容,那么这些文档应当出现在返回结果的最前面,而匹配程度较低的文档将会排在靠后的位置。
如果没有任何完全匹配的文档,我们至少可以给用户展示一些潜在的匹配结果;它们甚至可能就是用户最初想要的结果。
2.IK-Analyzer是什么?
IK-Analyzer是轻量级中文分词工具包 (它开源,基于JAVA语言)。IK 实现了简单的分词歧义排除算法,标志着 IK 分词器从单纯 的词典分词向模拟语义分词衍化。
它采用了特有的“正向迭代最细粒度切分算法“,支持细粒度和智能分词两种切分模式;
目前是放在项目中的Elasticsearch中集成使用.
3.分词的原理
分词过程 = 输入一段文本, 程序从某处获取词库数据, 运行时使用某种数据结构, 去执行某种算法, 最终获得多个词元
4.分词的逻辑
纬度 | 说明 | 示例 | 项目中使用 | |
---|---|---|---|---|
1 | 词库数据 | 扩展词字典 | 3W咖啡 5G卡 Python开发 新浪微博 |
远程存储,HTTP访问定时刷新词库 |
停用词字典 | 工程师 开发 q w e |
|||
同义词字典 | 月薪,薪资,年薪,薪酬,工资,薪水 hr,招聘,人事,人力资源,人力 |
|||
2 | 数据结构 | Tire(字典树) | ||
3 | 算法 | 正向迭代最细粒度切分算法 算法1: 中日韩处理 算法2: 中文数字处理 算法3: 英文字符阿拉伯数字处理[步奏1英文,步奏2阿拉伯数字, 步奏3.混合字母] |
||
处理逻辑: 普通切词 |
假设文本为: 张柏芝士蛋糕旗舰店11房 fsdZ H22好 假设词库数据为: 扩展词:[张柏芝,张柏,芝士,蛋糕] 停用词:[旗舰店] 那么数据结构则为: 张→ 柏(是否是词=true,默认=false)→ 芝 芝→ 士 蛋→ 糕 算法流程则为: 获得的词元为: 张柏芝 张柏 芝士 蛋糕 1 房 fsdz h 好 停用词为: 旗舰店(输出结果时会检查是否在停用词库, 是的话不输出) |
|||
处理逻辑: 歧义切词 | ||||
4 | 词元-分类 | UNKNOWN=未知 |
其他字符 | |
ENGLISH=英文 | ascII码中的英文 | |||
ARABIC=数字 | ascII码中的数字 | |||
LETTER=英文数字混合 | ascII码中的英文 + ascII码中的数字 | |||
CNWORD=中文词元 | UTF-8Unicode的中文词汇 文章末尾有下载链接 |
|||
CNCHAR=中文单字 | UTF-8Unicode的中文单字 | |||
OTHER_CJK=日韩文字 | UTF-8Unicode的日韩文字 | |||
CNUM=中文数字 | [ 一二两三四五六七八九十零壹贰叁肆伍陆柒捌玖拾百千万亿拾佰仟萬億兆卅廿 ] |
|||
COUNT=中文量词 | 纯中文量词 |
|||
CQUAN=中文数量词 |
英文数词+中文量词 2世纪 |
|||
附1:官方文档
(点我另存为下载) IKAnalyzer中文分词器V3.0使用手册.pdf.
(点我另存为下载) IKAnalyzer中文分词器V2012使用手册.pdf.
附2:项目中使用的字典
扩展词字典
http://common.iterget.com/es/dict/ext_company.dic;
http://common.iterget.com/es/dict/ext_position.dic;
http://common.iterget.com/es/dict/rs_anti_company.dic;
http://common.iterget.com/es/dict/mydict.dic
http://common.iterget.com/es/dict/iterget.dic
(目前ig的新词都放在iterget.dic里)
量词字典
点击下载量词词库quantifier.dic
停用词字典
http://common.iterget.com/es/stopwords/stop_word.dic
同义词字典
http://common.iterget.com/es/synonym/company.dic
http://common.iterget.com/es/synonym/project.dic
http://common.iterget.com/es/synonym/position.dic
基本字符串算法
1.Trie树 (字典树)
2.DoubleArrayTrie树 (双数组字典树)
3.字符串匹配算法(线性,hash)
4.字符串匹配算法 (KMP算法)
5.Aho-Corasick automaton (AC自动机,整合Trie与KMP)