最短路径分词
中文分词有很多方法,比如N-最短路径法,N元语言模型,CRF模型等等。大致可以分为两类:一是机械化的分词,二是用机器学习方法分词。最短路径算法可以划分到第一种。这个算法效果并不是最好的,大体和IK分词打成平手。今天用最简洁语言描述一下:这个算法主要分两步:第一,构造DAG(有向无环图),第二找出最优路径。以下图为例 "有意见分歧”进行分词。首先构造下图中的左边的DAG:节点用0~5来表示,每条边都有起点和终点构成有向图。比如从0节点开始,0~1和0~2构成了两条边,分别代表右图中的有和有意两个词。以此类推,1节点:1~2,1~3。其中,用词在词典中出现的频率来代表边的属性。构建完毕后,我们发现,从0~5有多条路径:0-1-3-5,0-1-2-4-5,0-1-2-3-5,0-1-2-3-4-5,……找出最优路径来,即找出频率之和最大的路径,也就是对应每个起点的边的属性最大。比如,从0开始,0-1的属性最大,然后以1为起点,1-3属性最大,再以3为起点,3-5属性最大。即最优路径:0-1-3-5.有 意见 分歧。下面用Python代码简单示例之:
1 # encoding=utf-8 2 3 class WordDictModel: 4 def __init__(self): 5 self.word_dict = {} 6 self.stop_words = {} 7 8 def