目录
viterbi算法是学习自然语言处理的基础算法,已经会有很多博客写了关于viterbi算法的数学介绍。
但是对于在nlp中实践应用的博客很少,导致很多朋友在学习viterbi算法之后,对于viterbi算法在nlp领域的应用还有一些困惑。
那么这也是我写这篇博客的意图,现在对于英文词性标注都可以通过调取很多包来完成(nltk,pyhanlp,jieba之类的)
但是自己实现英文词性标注可以增加对于底层的理解,
那么这篇博客就讲解英文词性标注中的viterbi算法和动态规划,提供所有语料库和代码。
一、viterbi算法
viterbi算法其实就是多步骤每步多选择模型的最优选择问题,其在每一步的所有选择都保存了前续所有步骤到当前步骤当前选择的最小总代价(或者最大价值)以及当前代价的情况下前继步骤的选择。依次计算完所有步骤后,通过回溯的方法找到最优选择路径。符合这个模型的都可以用viterbi算法解决。
二、英文分词基础知识
2.1场景
英文词性标注语料库:https://download.csdn.net/download/qq_35883464/11463932
代码:https://download.csdn.net/download/qq_35883464/11463943
场景:给定一个英文句子S=’I like …’其中每个单词由w表示,z表示那个单词对应的词性。
目标:给定一个句子S=w1,w2,w3,w4,w5 .可以得出每个单词对应的词性
2.2 公式推导(naisy channel model)
naisy channel model:
我们这里的语言模型只考虑bigram,就是2元语言模型。
因为只是比较概率的大小,所以最后一步加了log