一文让你入门NLP自然语言处理,看不懂你来找我

文/IT可达鸭

图/IT可达鸭、网络


前言


作为一门综合学科,NLP自然语言处理)是研究人与机器之间通信的理论和方法。这需要很多跨学科的知识,需要统计学、语言学、机器学习、深度学习等相关理论模型基础。

纵观所有的NLP算法中,都离不开以下七种基础的操作。可以说,大部分的NLP项目,都会用到以下的操作。

一文让你入门NLP自然语言处理,看不懂你来找我


NLP七种基本操作


结合小编这几年的NLP算法研发,简单介绍一下这七种NLP基本操作。

  • 分词(segment, 简称:seg)

词是组成语言文字的基础单位,英文单词之间是以空格作为自然分割的,所以分词只需要根据空格进行切分就可以了。而中文是字为基本的书写单位,以词为基本的理解单位,词语之间没有明显的标记,因此中文就需要设计独特的分词算法。

所有的分词中,特指的是中文分词。中文分词常用的算法是基于字典的最长匹配,据说可以解决85%的问题,但是歧义分词很难。

举个例子,“南京市长江大桥”,我们既可以切分为“南京市/长江大桥”

,又可以切分为“南京市/长江/大桥”,还可以切分为“南京/市长/江大桥”。这个例子也是很多NLP算法入门经常会碰到的,是不是觉得每个切分都有理可依据?


一文让你入门NLP自然语言处理,看不懂你来找我


所以实际开发中,分词算法,要根据不同场景,选择不同的切分算法,以及不同的字典库。跟实际业务是紧密结合的,不能脱离应用场景去强调哪个分词算法好,哪个不好。

  • 词性标注(part of speech tagging, 简称:pos)

基于机器学习的方法里,往往需要对词的词性进行标注。什么是词性?一般指动词、名词、形容词、副词、代词等。标注的目的是为了找到词语的隐藏状态,隐藏状态构成的转移就构成了状态转移序列。

例如,形容词下一个词是名词,副词下一个词是动词,就有一个状态转移的过程。再举个标注的例子:“我/r 爱/v 工作/ns”, 其中,ns代表名词,v代表动词,都属于标注。

那么,为什么需要对词语进行标注呢?比如,如果我们需要从一篇文章中,提取关键词,关键词只能是名词,所以这个时候,我们就不需要去分析除名词外其他词性的词语,只需专注分析名词即可。

所以,词性分析结果,可以多一个维度的信息去表征词语,从而使分析更有针对性。


一文让你入门NLP自然语言处理,看不懂你来找我


  • 命名实体识别(Named Entity Recognition, 简称:NER)

命名实体识别,是指从文本中识别具有特定类别的实体(通常是名词),例如:时间、人名、地名、机构名、专有名词。可以说是除词性外,是词语的另外一个维度的数据表征(标签

命名实体识别到底可以用来干什么呢?举个简单的例子,“百度网盘是一款不错的软件。”,从词性分析中,我们分析出“百度网盘”一个词语它是名词,但是通过命名实体识别,就可以知道“百度网盘” 它是一个软件的名称。

一文让你入门NLP自然语言处理,看不懂你来找我


  • 句法分析(syntax parsing)

句法分析是一种基于规则的专家系统,它的目的就是解析句子中各个成分的依赖关系。是不是很笼统,莫慌,举个例子就明白了。

“聪明的小明总喜欢在家附近的小卖铺吃零食。”,这里有两个形容词,一个是“聪明的”,一个是“在家附近的”,通过句法分析可以知道,“聪明的”形容的是小明,而“在家附近的”形容的是小卖铺。

再举个例子,“小明是小红的班长”, “小红是小明的班长”,这两句话,分词结果用词袋模型表示完全相同,但是句法分析却可以分析它们的主从关系,真正理清句子的关系。

一文让你入门NLP自然语言处理,看不懂你来找我


  • 指代消解(anaphora resolution)

在中文表述中,代词出现的频率是非常高的,它主要是用来指前文出现过的名词。

例如,“小明很喜欢学习,但是他有个缺点,就是经常迟到。”

这里出现了代词“他”,指代前文出现的“小明”。

关于指代消解,目前主要用于语义理解、知识图谱等。这块有很多有难度而且有意思的地方可以研究,感兴趣的小伙伴可以去尝试一下。

一文让你入门NLP自然语言处理,看不懂你来找我


  • 情感识别(emotion recognition)

所谓的情感识别、情感分析,其本质上是一个分类问题。情感识别一般可以分为两类,一个是积极情感,另一个是消极情感。也可以分为三类,在前面两类基础上,增加一个中性情感。

小编以前做过电商评论的情感分析,这里就举一个电商评论的例子。情感分析可以分析商品评论的好坏,以此来作为下一个环节的输入。通常是基于词袋模型+分类器(KNN),或者词袋模型+朴素贝叶斯模型,或者词向量模型(word2vec)+RNN。

选择不同算法,在不同的场景都有不同的效果,取决多方面的因素。如果想提高识别速度,接受一定的误差,可以选择词袋模型+分类器,或贝叶斯模型。如果想提高识别精度,同时又有大量的训练语料,就可以选择词向量模型+RNN。

一文让你入门NLP自然语言处理,看不懂你来找我


  • 纠错(correction)

自动纠错在搜索技术、输入法、客观题自动批改、英语作文批改中利用比较多。

小编做过一个自动批改的算法,这里就列举一下这个例子。由于学生在答题过程中,特别是客观简答题,出错的可能性比较大,有错别字、错误的点、遗漏的要点等等。所以,需要设计一个纠错系统(

这里指的是有针对性的纠错系统,不是通用型的纠错系统)。

对于英文作文批改中,可以基于N-Gram进行纠错(N一般取值2~3),也可以通过字典树(通过相同前缀节约大量的存储空间,同时提升检索速度)、有限状态机等方法进行纠错。


一文让你入门NLP自然语言处理,看不懂你来找我

结语

以上每一种NLP技术,都能扯出一系列的算法,例如,有简单的正则表达式、机器学习、深度学习网络等等。而且,在不同场景中,即使是同一个NLP技术点,它都有不同的算法可以选择。所以,只要力所能及,尽量多接触、多学习基础算法。

万变不离其宗,只要你在NLP方向中,打好以上七个方面的基础。相信在一些难度大、场景复杂的NLP算法也能游刃有余。


#423头条知识节#

#科技青年#


持续关注"IT可达鸭"每天除了分享有趣Python源码,还会介绍NLP算法。最后,感谢大家的阅读,祝大家工作生活愉快!


分享到:


相關文章: