第四次作业
一、"广州塔"例子
利用隐马模型对未登录词进行切分
每个字的状态在词表中以<词的位置,词性>存储,每个字的状态有多种,不同字各状态之间有转移概率,利用Viterbi算法寻找最大概率(由初始概率,状态转移概率和发射概率组成),根据各字的状态可以完成未登录词的切分
二、Viterbi算法
1.利用CreateGraph函数找出待分字段S中所有可划分出的词,得到名为WordGraph的嵌套列表,共(len(S) + 2)个列表,第一个和最后一个代表标识位,其余列表表示一个节点,由S中相应位置的单字和该字以及该字之前的字能组成的词构成
2.利用ViterbiSearch函数对每个节点中的每一个词与前一级节点中的每个词之间计算概率,保存最大概率值以及前一级节点的最优词,即找到局部最优
3.利用BackSearch函数回溯最优路径,找到最优的分词组合
三、jieba中的状态转移概率与发射概率
jieba库中的转移概率与字无关,只记录了状态到状态之间的转移概率,例如'E'→'B'的转移概率是'E'→'B'的次数 / 'E'→其他状态的次数
jieba库中的发射概率与字有关,记录了不同状态下不同字的发射概率,例如'B'状态下'\u4e00'字的发射概率等于'B'状态下'\u4e00'字出现的次数 / 'B'状态的次数