一文让你入门NLP自然语言处理,看不懂你来找我
Posted IT可达鸭
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一文让你入门NLP自然语言处理,看不懂你来找我相关的知识,希望对你有一定的参考价值。
文/IT可达鸭
图/IT可达鸭、网络
前言
作为一门综合学科,NLP(自然语言处理)是研究人与机器之间通信的理论和方法。这需要很多跨学科的知识,需要统计学、语言学、机器学习、深度学习等相关理论模型基础。
纵观所有的NLP算法中,都离不开以下七种基础的操作。可以说,大部分的NLP项目,都会用到以下的操作。
NLP七种基本操作
结合小编这几年的NLP算法研发,简单介绍一下这七种NLP基本操作。
分词(segment, 简称:seg)
词是组成语言文字的基础单位,英文单词之间是以空格作为自然分割的,所以分词只需要根据空格进行切分就可以了。而中文是字为基本的书写单位,以词为基本的理解单位,词语之间没有明显的标记,因此中文就需要设计独特的分词算法。
所有的分词中,特指的是中文分词。中文分词常用的算法是基于字典的最长匹配,据说可以解决85%的问题,但是歧义分词很难。
举个例子,“南京市长江大桥”,我们既可以切分为“南京市/长江大桥”,又可以切分为“南京市/长江/大桥”,还可以切分为“南京/市长/江大桥”。这个例子也是很多NLP算法入门经常会碰到的,是不是觉得每个切分都有理可依据?
所以实际开发中,分词算法,要根据不同场景,选择不同的切分算法,以及不同的字典库。跟实际业务是紧密结合的,不能脱离应用场景去强调哪个分词算法好,哪个不好。
词性标注(part of speech tagging, 简称:pos)
基于机器学习的方法里,往往需要对词的词性进行标注。什么是词性?一般指动词、名词、形容词、副词、代词等。标注的目的是为了找到词语的隐藏状态,隐藏状态构成的转移就构成了状态转移序列。
例如,形容词下一个词是名词,副词下一个词是动词,就有一个状态转移的过程。再举个标注的例子:“我/r 爱/v 工作/ns”, 其中,ns代表名词,v代表动词,都属于标注。
那么,为什么需要对词语进行标注呢?比如,如果我们需要从一篇文章中,提取关键词,关键词只能是名词,所以这个时候,我们就不需要去分析除名词外其他词性的词语,只需专注分析名词即可。
所以,词性分析结果,可以多一个维度的信息去表征词语,从而使分析更有针对性。
命名实体识别(Named Entity Recognition, 简称:NER)
命名实体识别,是指从文本中识别具有特定类别的实体(通常是名词),例如:时间、人名、地名、机构名、专有名词。可以说是除词性外,是词语的另外一个维度的数据表征(标签)。
命名实体识别到底可以用来干什么呢?举个简单的例子,“百度网盘是一款不错的软件。”,从词性分析中,我们分析出“百度网盘”一个词语它是名词,但是通过命名实体识别,就可以知道“百度网盘” 它是一个软件的名称。
句法分析(syntax parsing)
句法分析是一种基于规则的专家系统,它的目的就是解析句子中各个成分的依赖关系。是不是很笼统,莫慌,举个例子就明白了。
“聪明的小明总喜欢在家附近的小卖铺吃零食。”,这里有两个形容词,一个是“聪明的”,一个是“在家附近的”,通过句法分析可以知道,“聪明的”形容的是小明,而“在家附近的”形容的是小卖铺。
再举个例子,“小明是小红的班长”, “小红是小明的班长”,这两句话,分词结果用词袋模型表示完全相同,但是句法分析却可以分析它们的主从关系,真正理清句子的关系。
指代消解(anaphora resolution)
在中文表述中,代词出现的频率是非常高的,它主要是用来指前文出现过的名词。
例如,“小明很喜欢学习,但是他有个缺点,就是经常迟到。” 这里出现了代词“他”,指代前文出现的“小明”。
关于指代消解,目前主要用于语义理解、知识图谱等。这块有很多有难度而且有意思的地方可以研究,感兴趣的小伙伴可以去尝试一下。
情感识别(emotion recognition)
所谓的情感识别、情感分析,其本质上是一个分类问题。情感识别一般可以分为两类,一个是积极情感,另一个是消极情感。也可以分为三类,在前面两类基础上,增加一个中性情感。
小编以前做过电商评论的情感分析,这里就举一个电商评论的例子。情感分析可以分析商品评论的好坏,以此来作为下一个环节的输入。通常是基于词袋模型+分类器(KNN),或者词袋模型+朴素贝叶斯模型,或者词向量模型(word2vec)+RNN。
选择不同算法,在不同的场景都有不同的效果,取决多方面的因素。如果想提高识别速度,接受一定的误差,可以选择词袋模型+分类器,或贝叶斯模型。如果想提高识别精度,同时又有大量的训练语料,就可以选择词向量模型+RNN。
纠错(correction)
自动纠错在搜索技术、输入法、客观题自动批改、英语作文批改中利用比较多。
小编做过一个自动批改的算法,这里就列举一下这个例子。由于学生在答题过程中,特别是客观简答题,出错的可能性比较大,有错别字、错误的点、遗漏的要点等等。所以,需要设计一个纠错系统(这里指的是有针对性的纠错系统,不是通用型的纠错系统)。
对于英文作文批改中,可以基于N-Gram进行纠错(N一般取值2~3),也可以通过字典树(通过相同前缀节约大量的存储空间,同时提升检索速度)、有限状态机等方法进行纠错。
结语
以上每一种NLP技术,都能扯出一系列的算法,例如,有简单的正则表达式、机器学习、深度学习网络等等。而且,在不同场景中,即使是同一个NLP技术点,它都有不同的算法可以选择。所以,只要力所能及,尽量多接触、多学习基础算法。
万变不离其宗,只要你在NLP方向中,打好以上七个方面的基础。相信在一些难度大、场景复杂的NLP算法也能游刃有余。
持续关注"IT可达鸭",每天除了分享有趣Python源码,还会介绍NLP算法。最后,感谢大家的阅读,祝大家工作生活愉快!
长按二维码
获取更多精彩
IT可达鸭
以上是关于一文让你入门NLP自然语言处理,看不懂你来找我的主要内容,如果未能解决你的问题,请参考以下文章
Python爬虫实战❤️ 从零开始分析页面,抓取数据——爬取豆瓣电影任意页数 看不懂你来找我!❤️