中文分词一些思路的总结

中文分词一些思路的总结 
中文分词是中文自然语言处理的第一步,也是最为核心的基础,分词的好坏和准确率直接影响到后续进行的其他处理和分析。常用的中文分词工具包括jieba分词、哈工大分词、Stanford分词等,但是除了会使用这些工具外,掌握相关的模型和思想更为重要。
1 Mmseg
每次从一个完整的句子里,按照从左向右的顺序,识别出多种不同的3个词组合,然后根据下面的4条消歧规则,确定最佳的备选词组合。
备选词组合的长度之和最大;
备选词组合的平均词长最大;
备选词组合的词长变化最小;
备选词组合中,单字词的出现频率统计值最高。
选择备选词组合中的第1个词,作为1次迭代的分词结果,剩余的2个词继续进行下一轮的分词运算。
采用这种办法的好处是,为传统的前向最大匹配算法加入了上下文信息,解决了其每次选词只考虑词本身,而忽视上下文相关词的问题。
2 基于字符串匹配
即扫描字符串,如果发现字符串的子串和词库中的词相同,即算作匹配。这类方法通常会加入一些启发式规则,例如正向/反向最大匹配、长词优先、总词数最少等策略,优点是速度快、实现简单、效果尚可,缺点是对歧义和未登录词处理不好。
2.1 标准Trie树
在Trie树中,每个节点代表单个字符,子节点表示在父节点之后可能出现的字符,例如“电”节点可能包括“灯”、“线”、“路”、“话”等子节点,所以Trie树构建的其实就是所有词语的一个字典。
所有的中文单词用反向方式存储需要55893个节点,用正向方式存储需要55109个节点,词尾用词比较分散,词首用词比较集中。词的尾字意义更专一,因此反向方式具有更好的消歧效果。
2.2 三叉Trie树
三叉Trie树是二叉搜索树和Trie树的结合,详情请阅读这个:Trie树和Ternary Search树的学习总结。
3 基于概率统计以及机器学习
这类分词基于人工标注的词性和统计特征,对中文进行建模和训练。在分词时通过模型计算各种分词出现的概率,将概率最大的分词结果作为最终结果,常见的序列标注模型有N-gram、HMM和CRF。这类分词算法能较好地处理歧义和未登录词问题,但是需要大量人工标注数据并且分词速度较慢。
4 Jieba分词
jieba分词的思路如下,即扫描全部可能的成词分支,并根据统计概率选择最大者。
基于前缀词典实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图 (DAG);
采用了动态规划查找最大概率路径, 找出基于词频的最大切分组合;
对于未登录词,采用了基于汉字成词能力的HMM模型,使用了Viterbi算法(基于动态规划的思想计算HMM模型的最优解)。
参考
知乎,有哪些比较好的中文分词方案?
jieba中文分词
 nlp

你可能感兴趣的:(自然语言处理)