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

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

在人工智能出现之前,机器智能处理结构化的数据(例如 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)是计算机科学,信息工程和人工智能的子领域,涉及计算机与人类(自然)语言之间的交互,特别是如何对计算机进行编程以处理和分析大量自然语言数据。自然语言处理中的挑战通常涉及语音识别,自然语言理解和自然语言生成。

自然语言处理技术有标记化、删除停止词、提取主干、单词嵌入、词频-逆文档频率、主题建模、情感分析。

1、标记化(Tokenization)

标记化指的是将文本切分为句子或单词,在此过程中,我们也会丢弃标点符号及多余的符号。

这个步骤并非看起来那么简单。举个例子:纽约(New York)一词被拆成了两个标记,但纽约是个代名词,在我们的分析中可能会很重要,因此最好只保留一个标记。在这个步骤中要注意这一点。

标记化的好处在于,会将文本转化为更易于转成原始数字的格式,更合适实际处理。这也是文本数据分析显而易见的第一步。

2、删除停止词(Stop Words Removal)

在标记化之后,下一步自然是删除停止词。这一步的目标与上一步类似,也是将文本数据转化为更容易处理的格式。这一步会删除英语中常见的介词,如“and”、“the”、“a”等。之后在分析数据时,我们就能消除干扰,专注于具有实际意义的单词了。

通过比对定义列表中的单词来执行停止词的删除非常轻松。要注意的重要问题是:并没有普天皆适的停止词列表。因此这个列表一般是从零开始创建,并针对所要处理的应用执行了定制。

3、提取主干(Stemming)

清理文本数据的另一个技术就是提取主干。这种方法是将单词还原为词根形式,目的是将因上下文拼写略有不同,但含义相同的单词缩减为相同的标记来统一处理。例如:考虑在句子中使用单词“cook”的情况。

cook的所有形式含义都基本相同,因此理论上,在分析时我们可以将其映射到同一个标记上。在本例中,我们将cook、cooks、cooked和cooking全部标记为“cook”,这将大大简化我们对文本数据的进一步分析。

4、单词嵌入(Word Embeddings)

从上面三个步骤中,我们已经将数据清理完毕,现在可以将其转化为可用于实际处理的格式。

单词嵌入是一种将单词以数字表达的方式,这样一来,具有相似含义的单词表达也会相似。如今的单词嵌入是将单个单词表示为预定义向量空间中的实值向量。

所有单词的向量长度相同,只是值有差异。两个单词的向量之间的距离代表着其语义的接近程度。举个例子:单词“cook”(烹饪)和“bake”(烘焙)的向量就非常接近,但单词“football”(足球)和“bake”(烘焙)的向量则完全不同。

有一种创建单词嵌入的常见方法被称为GloVe,它代表着“全局向量”。GloVe捕获文本语料库的全局统计信息和局部统计信息,以创建单词向量。

GloVe使用了所谓的共现矩阵(co-occurrence matrix)。共现矩阵表示每对单词在语料库里一起出现的频率。

5、词频-逆文档频率(Term Frequency-Inverse Document Frequency,TF-IDF)

术语“词频-逆文档频率”(常被称为TF-IDF)是一种加权因子,经常在诸如信息检索及文本挖掘类的应用中使用。TF-IDF会使用统计数据来衡量某个单词对特定文档的重要程度。

TF-IDF可以达到完美平衡,并考虑到目标单词的本地与全局统计水平。在文档中出现越频繁的单词,其权重也越高,不过前提是这个单词在整个文档中出现并不频繁。

由于其强大程度,TF-IDF技术通常被搜索引擎用在指定关键字输入时,评判某文档相关性的评分与排名上。在数据科学中,我们可以通过这种技术,了解文本数据中哪些单词和相关信息更为重要。

6、主题建模(Topic Modeling)

在自然语言处理中,主题建模是从文本数据或文档的集合中提取主要话题的过程。本质来讲,由于我们将大量文本数据缩减为数量较少的主题,这是一种降维形式。主题建模在许多数据科学场景中都很有用。

7、情感分析(Sentiment Analysis)

情感分析是一种自然语言分析技术,旨在识别与提取文本数据中的主观信息。与主题建模类似,情感分析可以将非结构化的文本转为嵌入在数据中的信息基本摘要。

大多情感分析技术都属于以下两个类别之一:基于规则和机器学习的方法。基于规则的方法需要根据简单的步骤来获得结果。在进行了一些类似标记化、停止词消除、主干提取等预处理步骤后,基于规则的方法可能会遵从以下步骤:

(1)对于不同的情感,定义单词列表。例如,如果我们打算定义某个段落是消极的还是积极的,可能要为负面情感定义“坏的”和“可怕的”等单词,为正面情感定义“棒极了”和“惊人的”等单词。

(2)浏览文本,分别计算正面与负面情感单词的数量。

(3)如果标记为正面情感的单词数量比负面的多,则文本情绪是积极的,反之亦然。基于规则的方法在情感分析用于获取大致含义时效果很好。但是,如今最先进的系统通常会使用深度学习,或者至少经典的机器学习技术让整个过程自动化。

通过深度学习技术,将情感分析按照分类问题来建模。将文本数据编码到一个嵌入空间中(与上述的单词嵌入类似),这是功能提取的一种形式。之后将这些功能传递到分类模型,对文本情绪进行分类。

neg=pdread_excel('negxls',header=None,index=None)

pos=pdread_excel('posxls',header=None,index=None) #读取训练语料完毕

pos['mark']=1

neg['mark']=0 #给训练语料贴上标签

pn=pdconcat([pos,neg],ignore_index=True) #合并语料

neglen=len(neg)

poslen=len(pos) #计算语料数目

cw = lambda x: list(jiebacut(x)) #定义分词函数

pn['words'] = pn[0]apply(cw)

comment = pdread_excel('sumxls') #读入评论内容

#comment = pdread_csv('acsv', encoding='utf-8')

comment = comment[comment['rateContent']notnull()] #仅读取非空评论

comment['words'] = comment['rateContent']apply(cw) #评论分词

d2v_train = pdconcat([pn['words'], comment['words']], ignore_index = True)

w = [] #将所有词语整合在一起

for i in d2v_train:

wextend(i)

dict = pdDataFrame(pdSeries(w)value_counts()) #统计词的出现次数

del w,d2v_train

dict['id']=list(range(1,len(dict)+1))

get_sent = lambda x: list(dict['id'][x])

pn['sent'] = pn['words']apply(get_sent)

maxlen = 50

print "Pad sequences (samples x time)"

pn['sent'] = list(sequencepad_sequences(pn['sent'], maxlen=maxlen))

x = nparray(list(pn['sent']))[::2] #训练集

y = nparray(list(pn['mark']))[::2]

xt = nparray(list(pn['sent']))[1::2] #测试集

yt = nparray(list(pn['mark']))[1::2]

xa = nparray(list(pn['sent'])) #全集

ya = nparray(list(pn['mark']))

print 'Build model'

model = Sequential()

modeladd(Embedding(len(dict)+1, 256))

modeladd(LSTM(256, 128)) # try using a GRU instead, for fun

modeladd(Dropout(05))

modeladd(Dense(128, 1))

modeladd(Activation('sigmoid'))

modelcompile(loss='binary_crossentropy', optimizer='adam', class_mode="binary")

print 'Fit model'

modelfit(xa, ya, batch_size=32, nb_epoch=4) #训练时间为若干个小时

classes = modelpredict_classes(xa)

acc = np_utilsaccuracy(classes, ya)

print 'Test accuracy:', acc

可以试一试

w = [] #将所有词语整合在一起

for i in d2v_train:

wextend(i)

newList = list(set(w))

print "newlist len is"

print len(newList)

dict = pdDataFrame(pdSeries(w)value_counts()) #统计词的出现次数

print type(dict)

print len(dict)

情感分析自从2002年由Bo Pang提出之后,获得了很大程度的研究的,特别是在在线评论的情感倾向性分析上获得了很大的发展,目前基于在线评论文本的情感倾向性分析的准确率最高能达到90%以上,但是由于深层情感分析必然涉及到语义的分析,以及文本中情感转移现象的经常出现,所以基于深层语义的情感分析以及篇章级的情感分析进展一直不是很大。情感分析还存在的一个问题是尚未存在一个标准的情感测试语料库,虽然Bo Pang实验用的**评论数据集以及Theresa Wilson等建立的MPQA是目前广泛使用的两类情感分析数据集,但是并没有公认的标准加以确认。

目前研究主要集中于情感词的正面负面分类,标注语料,情感词的提取等。

判断文字聊天中的感情,可以看作是情感分析。之前已有的一些情感分析的研究,主要有两种方法。一种是基于词典的方法,基于词典的方法主要在于词典的质量的好坏,此外,还有一些本身就带有歧义的词,不能够简单判定是正面的或者负面的。另一种是基于机器学习的方法。基于机器学习的方法主要是有监督学习,即要找一些类似的聊天语料来对机器进行训练,使得机器能够正确地判断文字中的感情。在训练集上达到足够高的准确率,才有可能在实际测试的时候,准确地预测情感。此外,目前机器能够区分的感情并不多,之前研究的区分的情感,大多是正负两极,或者五级(负面、轻微负面、中性、轻微正面、正面)情感。人类情感的复杂程度远超出这五种,因此如何识别人类的复杂情感也是机器需要研究的课题。但是随着算法的不断改进,在不久的将来,相信机器的准确率能够达到比人更高。

NLP 是什么?

NLP 是计算机科学领域与 人工智能 领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。自然语言处理是一门融语言学、计算机科学、数学于一体的学科。NLP 由两个主要的技术领域构成:自然语言理解和自然语言生成。

自然语言理解方向,主要目标是帮助机器更好理解人的语言,包括基础的词法、句法等语义理解,以及需求、篇章、情感层面的高层理解。

自然语言生成方向,主要目标是帮助机器生成人能够理解的语言,比如文本生成、自动文摘等。

NLP 技术基于大数据、知识图谱、 机器学习 、语言学等技术和资源,并可以形成机器翻译、深度问答、对话系统的具体应用系统,进而服务于各类实际业务和产品。

NLP在金融方面

金融行业因其与数据的高度相关性,成为人工智能最先应用的行业之一,而NLP与知识图谱作为人工智能技术的重要研究方向与组成部分,正在快速进入金融领域,并日益成为智能金融的基石。舆情分析舆情主要指民众对社会各种具体事物的情绪、意见、价值判断和愿望等。

事件(Event ):在特定时间、特定地点发生的事情。主题(Topic):也称为话题,指一个种子事件或活动以及与它直接相关的事件和活动。专题(Subject):涵盖多个类似的具体事件或根本不涉及任何具体事件。需要说明的是,国内新闻网站新浪、搜狐等所定义的“专题”概念大多数等同于我们的“主题”概念。热点:也可称为热点主题。热点和主题的概念比较接近,但有所区别。

1 词干提取

什么是词干提取?词干提取是将词语去除变化或衍生形式,转换为词干或原型形式的过程。词干提取的目标是将相关词语还原为同样的词干,哪怕词干并非词典的词目。

2 词形还原

什么是词形还原? 词形还原是将一组词语还原为词源或词典的词目形式的过程。还原过程考虑到了POS问题,即词语在句中的语义,词语对相邻语句的语义等。

3 词向量化什么是词向量化?词向量化是用一组实数构成的向量代表自然语言的叫法。这种技术非常实用,因为电脑无法处理自然语言。词向量化可以捕捉到自然语言和实数间的本质关系。通过词向量化,一个词语或者一段短语可以用一个定维的向量表示,例如向量的长度可以为100。

4 词性标注

什么是词性标注?简单来说,词性标注是对句子中的词语标注为名字、动词、形容词、副词等的过程。

5 命名实体消歧

什么是命名实体消岐?命名实体消岐是对句子中的提到的实体识别的过程。例如,对句子“Apple earned a revenue of 200 Billion USD in 2016”,命名实体消岐会推断出句子中的Apple是苹果公司而不是指一种水果。一般来说,命名实体要求有一个实体知识库,能够将句子中提到的实体和知识库联系起来。

6 命名实体识别

体识别是识别一个句子中有特定意义的实体并将其区分为人名,机构名,日期,地名,时间等类别的任务。   

7 情感分析

什么是情感分析?情感分析是一种广泛的主观分析,它使用自然语言处理技术来识别客户评论的语义情感,语句表达的情绪正负面以及通过语音分析或书面文字判断其表达的情感等等。

8 语义文本相似度

什么是语义文本相似度分析?语义文本相似度分析是对两段文本的意义和本质之间的相似度进行分析的过程。注意,相似性与相关性是不同的。

9语言识别

什么是语言识别?语言识别指的是将不同语言的文本区分出来。其利用语言的统计和语法属性来执行此任务。语言识别也可以被认为是文本分类的特殊情况。

10 文本摘要

什么是文本摘要?文本摘要是通过识别文本的重点并使用这些要点创建摘要来缩短文本的过程。文本摘要的目的是在不改变文本含义的前提下最大限度地缩短文本。

11评论观点抽取

自动分析评论关注点和评论观点,并输出评论观点标签及评论观点极性。目前支持 13 类产品用户评论的观点抽取,包括美食、酒店、汽车、景点等,可帮助商家进行产品分析,辅助用户进行消费决策。

11DNN 语言模型

语言模型是通过计算给定词组成的句子的概率,从而判断所组成的句子是否符合客观语言表达习惯。在机器翻译、拼写纠错、语音识别、问答系统、词性标注、句法分析和信息检索等系统中都有广泛应用。

12依存句法分析

利用句子中词与词之间的依存关系来表示词语的句法结构信息 (如主谓、动宾、定中等结构关系),并用树状结构来表示整句的的结构 (如主谓宾、定状补等)。

1、NLTK

一种流行的自然语言处理库、自带语料库、具有分类,分词等很多功能,国外使用者居多,类似中文的 jieba 处理库

2、文本处理流程

大致将文本处理流程分为以下几个步骤:

Normalization

Tokenization

Stop words

Part-of-speech Tagging

Named Entity Recognition

Stemming and Lemmatization

下面是各个流程的具体介绍

Normalization

第一步通常要做就是Normalization。在英文中,所有句子第一个单词的首字母一般是大写,有的单词也会全部字母都大写用于表示强调和区分风格,这样更易于人类理解表达的意思。

Tokenization

Token是"符号"的高级表达, 一般值具有某种意义,无法再拆分的符号。在英文自然语言处理中,Tokens通常是单独的词,因此Tokenization就是将每个句子拆分为一系列的词。

Stop Word

Stop Word 是无含义的词,例如’is’/‘our’/‘the’/‘in’/'at’等。它们不会给句子增加太多含义,单停止词是频率非常多的词。 为了减少我们要处理的词汇量,从而降低后续程序的复杂度,需要清除停止词。

Named Entity

Named Entity 一般是名词短语,又来指代某些特定对象、人、或地点 可以使用 ne_chunk()方法标注文本中的命名实体。在进行这一步前,必须先进行 Tokenization 并进行 PoS Tagging。

Stemming and Lemmatization

为了进一步简化文本数据,我们可以将词的不同变化和变形标准化。Stemming 提取是将词还原成词干或词根的过程。

3、Word2vec

Word2vec是一种有效创建词嵌入的方法,它自2013年以来就一直存在。但除了作为词嵌入的方法之外,它的一些概念已经被证明可以有效地创建推荐引擎和理解时序数据。在商业的、非语言的任务中。

### 四、NLP前沿研究方向与算法

1、MultiBERT

2、XLNet

3、bert 模型

BERT的全称是Bidirectional Encoder Representation from Transformers,即双向Transformer的Encoder,因为decoder是不能获要预测的信息的。模型的主要创新点都在pre-train方法上,即用了Masked LM和Next Sentence Prediction两种方法分别捕捉词语和句子级别的representation。

BERT提出之后,作为一个Word2Vec的替代者,其在NLP领域的11个方向大幅刷新了精度,可以说是近年来自残差网络最优突破性的一项技术了。BERT的主要特点以下几点:

使用了Transformer作为算法的主要框架,Trabsformer能更彻底的捕捉语句中的双向关系;

使用了Mask Language Model(MLM)和 Next Sentence Prediction(NSP) 的多任务训练目标;

使用更强大的机器训练更大规模的数据,使BERT的结果达到了全新的高度,并且Google开源了BERT模型,用户可以直接使用BERT作为Word2Vec的转换矩阵并高效的将其应用到自己的任务中。

BERT的本质上是通过在海量的语料的基础上运行自监督学习方法为单词学习一个好的特征表示,所谓自监督学习是指在没有人工标注的数据上运行的监督学习。在以后特定的NLP任务中,我们可以直接使用BERT的特征表示作为该任务的词嵌入特征。所以BERT提供的是一个供其它任务迁移学习的模型,该模型可以根据任务微调或者固定之后作为特征提取器。

模型结构: 由于模型的构成元素Transformer已经解析过,就不多说了,BERT模型的结构如下图最左:

对比OpenAI GPT(Generative pre-trained transformer),BERT是双向的Transformer block连接;就像单向rnn和双向rnn的区别,直觉上来讲效果会好一些。

优点: BERT是截至2018年10月的最新state of the art模型,通过预训练和精调横扫了11项NLP任务,这首先就是最大的优点了。而且它还用的是Transformer,也就是相对rnn更加高效、能捕捉更长距离的依赖。对比起之前的预训练模型,它捕捉到的是真正意义上的bidirectional context信息。

缺点: MLM预训练时的mask问题

[MASK]标记在实际预测中不会出现,训练时用过多[MASK]影响模型表现

每个batch只有15%的token被预测,所以BERT收敛得比left-to-right模型要慢(它们会预测每个token)

BERT火得一塌糊涂不是没有原因的:

使用Transformer的结构将已经走向瓶颈期的Word2Vec带向了一个新的方向,并再一次炒火了《Attention is All you Need》这篇论文;

11个NLP任务的精度大幅提升足以震惊整个深度学习领域;

无私的开源了多种语言的源码和模型,具有非常高的商业价值。

迁移学习又一次胜利,而且这次是在NLP领域的大胜,狂胜。

BERT算法还有很大的优化空间,例如我们在Transformer中讲的如何让模型有捕捉Token序列关系的能力,而不是简单依靠位置嵌入。BERT的训练在目前的计算资源下很难完成,论文中说的训练需要在64块TPU芯片上训练4天完成,而一块TPU的速度约是目前主流GPU的7-8倍。

有两大类,一类是主观性:主观、客观、中性;一类是情感倾向:褒义、贬义、中性。

文本分析的话,主要是对词、句子中观点的挖掘。

你所说的机器学习法,现在基本用于对**观点的打分系统吧。基本上就是利用分类计数,对文档中存在的情感进行分类的。

就我个人理解而言,我认为机器学习法只是情感文本分析的方法论之一,至于数据挖掘,也是通过对文档的数据收取,进行情感分析的。也是对情感文本分析的方法论之一。

所以,情感分析是主体的话,文本分类、机器学习、数据挖掘都是方式方法。这些方法可以共同应用在一个情感分析中,也可以分别独立存在。

目前英文类的文本情感分析比较多,中文类的相对少一点,你要做这方面的研究路漫漫其修远啊。嘿嘿。

网络舆情大数据要根据信息导向和主流价值观进行分析。

具体上讲,舆情监测是指整合互联网信息采集技术及信息智能处理技术,通过对互联网海量信息自动抓取、自动分类聚类、主题监测、专题聚焦,实现用户的网络舆情监测和新闻专题追踪等信息需求,形成简报、报告、图表等分析结果,为客户全面掌握群众思想动态,做出正确舆论引导,提供分析依据。

需要舆情分析可以联系上海蜜度,新浪舆情通是上海蜜度信息技术有限公司研发的政企舆情大数据服务平台。 新浪舆情通以中文互联网大数据及新浪微博的官方数据为基础,724小时不间断采集新闻、报刊、政务、微博、公众号、博客、论坛、视频、网站、客户端等全网11大信息来源,每天采集超过14亿条数据。

欢迎分享,转载请注明来源:浪漫分享网

原文地址:https://hunlipic.com/qinggan/749711.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-07-08
下一篇2023-07-08

发表评论

登录后才能评论

评论列表(0条)

    保存