ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【实战技能】自然语言处理(NLP)的案例二:语言建模和词性标注

2021-05-22 21:30:49  阅读:339  来源: 互联网

标签:NLP 词性 标记 模型 建模 HMM 算法 自然语言 标注


自然语言处理,前面和大家说了

今天继续和大家聊聊我自己做的作业案例。作业来自Coursera上的Introduction to Natural Language Processing这门课,讲师是Dragomir R. Radev, Ph.D.,University of Michigan的教授。关于课程内容,虽然现在没有了,但是2016年的链接是https://www.coursera.org/learn/natural-language-processing/home/welcome

模型:HMM 隐式马尔科夫模型

这个案例我们会用到HMM (Hidden Markov Model,HMM) (隐式马尔科夫模型)

HMM的模型是一个五元组:

  • StatusSet: 状态值集合

  • ObservedSet: 观察值集合

  • TransProbMatrix: 转移概率矩阵

  • EmitProbMatrix: 发散概率矩阵

  • InitStatus: 初始状态分布

HMM模型用来解决以下三种问题:

  1. 在参数(StatusSet, TransProbMatrix, EmitRobMatrix,
    InitStatus)已知的情况下,求解观察值序列,这是Forward-backward算法。

  2. 在参数(ObservedSet, TransProbMatrix, EmitRobMatrix,
    InitStatus)已知的情况下,求解状态值序列,这是Viterbi算法, 可以用于中文分词、语音识别、新词发现和词性标注。

  3. 在参数(ObservedSet)已知的情况下,求解(TransProbMatrix, EmitRobMatrix,
    InitStatus),这是Baum-Welch算法。

语言建模

如何预测下一个词呢?这是语言建模的一个任务。我们使用Brown Corpus布朗语料库来创建、训练和评估语言模型。关于语料库,请查看此链接http://icame.uib.no/brown/bcm.html

我们使用Python最流行的NLP库自然语言工具包(NLTK)来完成语言模型的相关任务。

步骤如下:
1.计算Brown语料库未标注的训练集中的数据的一元,二元和三元对数概率。

2.使用模型来查找每个n元模型的布朗训练数据中每个句子的对数概率或得分。

如果发现任何n-gram不在训练句子里 ,将整个句子的log-probability设置为-1000。

3.在创建的三个n元模型中实现线性插值。

线性插值是一种旨在通过同时使用所有三个标注器,即一元、二元和三元语法标注器来导出更好的标注器的方法。 每个标注器被赋予由参数λ描述的权重。 有一些方法可以得出最好的一组λ,目前我们暂时设置所有三个λ相等。关于线性插值的具体内容,可以阅读Speech and Language Processing一书(http://web.stanford.edu/~jurafsky/slp3/)4.4.3节

词性标注

步骤如下

1.在已标记的数据集中分隔标记和单词。 在一个数据结构中存储没有标记的句子,而在另一个数据结构中存储这些标记, 确保将句子开始和停止符号添加到单词和标签的列表中。

2.计算标记的三元概率。

3.实现平滑方法。 使用标记“RARE”替换出现五次或少于五次的每个单词。创建在训练数据中出现超过五次的单词列表; 当标记时,不会出现在此列表中的任何单词应该被替换为标记“RARE”。

4.计算修改后的数据集的发散概率。

5.实现HMM (Hidden Markov Model,HMM) (隐式马尔科夫模型)标注器的Viterbi算法。Viterbi算法是一种具有许多应用的动态规划算法,也是用于找到给定句子的最高得分标签序列的相对有效的方法。关于算法的细节,可以阅读Speech and Language Processing一书(http://web.stanford.edu/~jurafsky/slp3/)第8.4和9.4节。

6.创建一个NLTK的三元标注器的实例,以回退到NLTK的二元标注器。 让二元标注器自己使用标记“NOUN”,以便回退到NLTK的默认标注器。

欢迎大家留言,和我一起交流自然语言处理。

标签:NLP,词性,标记,模型,建模,HMM,算法,自然语言,标注
来源: https://blog.csdn.net/weixin_38575258/article/details/117171605

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有