NLP 自然语言处理「一文让你入门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算法也能游刃有余。

#423头条知识节#

#科技青年#

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

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

一文看懂自然语言处理NLP(4个应用 5个难点 6个实现步骤)

在人工智能出现之前,机器智能处理结构化的数据(例如 Excel 里的数据)。但是网络中大部分的数据都是非结构化的,例如:文章、图片、音频、视频…

在非结构数据中,文本的数量是最多的,他虽然没有图片和视频占用的空间大,但是他的信息量是最大的。

为了能够分析和利用这些文本信息,我们就需要利用 NLP 技术,让机器理解这些文本信息,并加以利用。

每种动物都有自己的语言,机器也是!

自然语言处理(NLP)就是在机器语言和人类语言之间沟通的桥梁,以实现人机交流的目的。

人类通过语言来交流,狗通过汪汪叫来交流。机器也有自己的交流方式,那就是数字信息。

不同的语言之间是无法沟通的,比如说人类就无法听懂狗叫,甚至不同语言的人类之间都无法直接交流,需要翻译才能交流。

而计算机更是如此,为了让计算机之间互相交流,人们让所有计算机都遵守一些规则,计算机的这些规则就是计算机之间的语言。

既然不同人类语言之间可以有翻译,那么人类和机器之间是否可以通过“翻译”的方式来直接交流呢?

NLP 就是人类和机器之间沟通的桥梁!

为什么是“自然语言”处理?

自然语言就是大家平时在生活中常用的表达方式,大家平时说的「讲人话」就是这个意思。

NLP 有2个核心的任务:

自然语言理解就是希望机器像人一样,具备正常人的语言理解能力,由于自然语言在理解上有很多难点(下面详细说明),所以 NLU 是至今还远不如人类的表现。

自然语言理解的5个难点:

想要深入了解NLU,可以看看这篇文章《一文看懂自然语言理解-NLU(基本概念 实际应用 3种实现方式)》

NLG 是为了跨越人类和机器之间的沟通鸿沟,将非语言格式的数据转换成人类可以理解的语言格式,如文章、报告等。

NLG 的6个步骤:

想要深入了解NLG,可以看看这篇文章《一文看懂自然语言生成 – NLG(6个实现步骤 3个典型应用)》

情感 分析

互联网上有大量的文本信息,这些信息想要表达的内容是五花八门的,但是他们抒发的 情感 是一致的:正面/积极的 – 负面/消极的。

通过 情感 分析,可以快速了解用户的舆情情况。

聊天机器人

过去只有 Siri、小冰这些机器人,大家使用的动力并不强,只是当做一个 娱乐 的方式。但是最近几年智能音箱的快速发展让大家感受到了聊天机器人的价值。

而且未来随着智能家居,智能 汽车 的发展,聊天机器人会有更大的使用价值。

语音识别

语音识别已经成为了全民级的引用,微信里可以语音转文字, 汽车 中使用导航可以直接说目的地,老年人使用输入法也可以直接语音而不用学习拼音…

机器翻译

目前的机器翻译准确率已经很高了,大家使用 Google 翻译完全可以看懂文章的大意。传统的人肉翻译未来很可能会失业。

NLP 可以使用传统的机器学习方法来处理,也可以使用深度学习的方法来处理。2 种不同的途径也对应着不同的处理步骤。详情如下:

方式 1:传统机器学习的 NLP 流程

方式 2:深度学习的 NLP 流程

英文 NLP 语料预处理的 6 个步骤

中文 NLP 语料预处理的 4 个步骤

自然语言处理(NLP)就是在机器语言和人类语言之间沟通的桥梁,以实现人机交流的目的。

NLP的2个核心任务:

NLP 的5个难点:

NLP 的4个典型应用:

NLP 的6个实现步骤:

百度百科版本

自然语言处理是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。自然语言处理是一门融语言学、计算机科学、数学于一体的科学。因此,这一领域的研究将涉及自然语言,即人们日常使用的语言,所以它与语言学的研究有着密切的联系,但又有重要的区别。自然语言处理并不是一般地研究自然语言,而在于研制能有效地实现自然语言通信的计算机系统,特别是其中的软件系统。因而它是计算机科学的一部分。

自然语言处理(NLP)是计算机科学,人工智能,语言学关注计算机和人类(自然)语言之间的相互作用的领域。


维基百科版本

自然语言处理(NLP)是计算机科学,信息工程和人工智能的子领域,涉及计算机与人类(自然)语言之间的交互,特别是如何对计算机进行编程以处理和分析大量自然语言数据。自然语言处理中的挑战通常涉及语音识别,自然语言理解和自然语言生成。

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

自然语言处理(NLP)入门

NLP:计算机或系统真正理解人类语言并以与人类相同的方式处理它的能力。

难度:理解话中的潜在意图;理解句子中的歧义。

歧义包括:单词、句子、语义中歧义。

在文本数据上执行的一些基本操作

正则表达式:对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。

给定一个正则表达式和另一个字符串,我们可以达到如下的目的:
1. 给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”)
2. 可以通过正则表达式,从字符串中获取我们想要的特定部分。

可以读取一个文本文件并根据需要将其转化为一列单词或句子。

方式:
1、将一个单词替换为另一个单词;
2、删除或添加某些特定类型的单词;
...

可以通过urllib包获取。

停止词:索引擎会忽略的常用词。例如:the

是SciKit-Learn库的一个工具,可以接收任何大量的文本,将每个独特的单词作为特征返回,并计算每个单词在文本中出现的 次数。

TF:术语频率。特定单词的计数与文档中单词总数的比率。
IDF:反向文档频率。文档总数与包含特定单词的文档数量的对数比率。
TF-IDF权重:二者的乘积。

作用:衡量一个词对于一段文本的重要性

例如,文本可以被分为正面和负面。通调取TExtBlob包可以获取许多这样的架构。

神经网络的基本结构
基本原理:人工神经元或感知器的基本元素的集合。

采用多个二元输入x1, x2, x3....,如果总和大于激活电位,则产生单个二进制输出,神经元会执行称为"发射"的指令,发射的神经元沿着信号传递到与其他树突相连的神经元,如果超过了激活电位,其他神经元也会发射。

神经网络的类型

前馈神经网络:神经网络家族的基本单元

循环神经网络:处理 NLP 中普遍存在的动态输入序列的一个最佳的技术方案。但是很快被经典的LSTM取代

卷积神经网络:应用于文本的卷积神经网络只在两个维度上工作,其中滤波器(卷积核)只需要沿着时间维度移动。卷积也可以用来 加速 LSTM。

递归神经网络:将句子视为树而不是序列
词嵌入:利用所有个体单词 相邻 的单词,使用给定文本中的信息并将其传递给模型。这使得嵌入以密集向量的形式存在,在连续向量空间中表示个体单词的投影。 即将「不可计算」「非结构化」的词转化为「可计算」「结构化」的向量。
这一步解决的是”将现实问题转化为数学问题“ ,是人工智能非常关键的一步。
嵌入:单词在新学习的向量空间中的 坐标

词嵌入是无监督学习领域最重要的应用之一

2 神经语言模型

Bengio提出的前馈神经网络语言模型(FNNLM)引入了前馈神经网络,是为词嵌入模型奠定了基础。

该模型中仍然用于词嵌入模型的部分有:

1、 嵌入层:
作用:记录训练数据集中所有单词的表示。
初始化:由一组随机权重初始化
组成:词汇表的大小,词嵌入向量输出的大小、模型输入序列的长度
结果输出:二维向量,包含给定单词序列中所有单词的最终嵌入

2、隐藏层:
位置:位于初始层到最终层之间,可以一个或多个
作用:通过将神经网络中的 非线性函数 应用于先前n个词的词嵌入,来产生 输入文本数据的表示 。

3、Softmax层:
位置:神经网络体系结构的最后一层
作用:返回输入词汇表中存在的所用单词的 概率分布

该模型有助于实现当前词汇表中不存在的单词的泛化。

Word2vec 是 Word Embedding 的方法之一,Word Embedding 的模型本身并不重要,重要的是生成出来的结果——词向量。因为在后续的任务中会直接用到这个词向量。

包含两种模型:CBOW(连续词袋)和skip-gram
区别:执行预测的方式。
CBOW:利用上下文或周围的单词来预测中心词
skip-gram:使用中心词来预测上下文
优点:与单热编码相比,word2vec有利于减我码空间大小,并将单词的表示压缩到所需的向量长度。

word2vec创建单词表示的方式基于单词的上下文。

过程:使用序列中的当前单词来预测周围的单词

周围单词的分类 得分 基于 语法关系 和它们与中心词一起出现的 次数

CBOW模型

CBOW是一种基于窗口的语言模型。(窗口:句子中的一个固定长度的片段,窗口中间的词为中心词,其他词问中心词的上下文)

原理:通过三层神经网络接受上下文的特征向量,预测中心词是什么

结构:输入层、隐藏层、输出层

该模型的6个步骤:

上一篇: 女销售原来靠这样卖房(楼盘置业顾问提成大概多少)
下一篇: 吃完饭就犯困是大脑供血不足吗「吃完饭就犯困是大脑供血不足吗」