自然语言处理(NLP)——简介

⾃然语⾔处理(NLP)——简介
⾃然语⾔处理(NLP Natural Language Processing)是⼀种专业分析⼈类语⾔的⼈⼯智能。就是在机器语⾔和⼈类语⾔之间沟通的桥梁,以实现⼈机交流的⽬的。
在⼈⼯智能出现之前,机器智能处理结构化的数据(例如Excel⾥的数据)。但是⽹络中⼤部分的数据都是⾮结构化的,例如:⽂章、图⽚、⾳频、视频...
在⾮结构数据中,⽂本的数量是最多的,他虽然没有图⽚和视频占⽤的空间⼤,但是他的信息量是最⼤的。
为了能够分析和利⽤这些⽂本信息,我们就需要利⽤NLP技术,让机器理解这些⽂本信息,并加以利⽤。
植物蛋白提取
结盟NLP 的主要内容⼤概如下:
2个核⼼⼼任务:
1. ⾃然语⾔理解 - NLU
2. ⾃然语⾔⽣成 - NLG
5个难点:
1. 语⾔是没有规律的,或者说规律是错综复杂的。
2. 语⾔是可以⾃由组合的,可以组合复杂的语⾔表达
3. 语⾔是⼀个开放集合,我们可以任意的发明创造⼀些新的表达⽅式。
4. 语⾔需要联系到实践知识,有⼀定的知识依赖。
5. 语⾔的使⽤要基于环境和上下⽂。
4个典型应⽤:
1. 情感分析
2. 聊天机器⼈
3. 语⾳识别
4. 机器翻译
6个实现步骤:
1. 分词-tokenization
2. 次⼲提取-stemming
3. 词形还原-lemmatization
4. 词性标注-pos tags
5. 命名实体识别-ner
6. 分块-chunking
⾃然语⾔理解 - NLU
1. 什么是⾃然语⾔理解(NLU)?
⾃然语⾔处理(N LP , Natural Language Processing)是使⽤⾃然语⾔同计算机进⾏通讯的技术, 因为处理⾃然语⾔的关键是要让计算机“理解”⾃然语⾔,所以⾃然语⾔处理⼜叫做⾃然语⾔理解(NLU ,Natural Language Understanding), 也称为计算语⾔学(Computational Ling uistics)。⼀⽅⾯它是语⾔
信息处理的⼀个分⽀ , 另⼀⽅⾯它是⼈⼯智能(AI , Artificial Intelligence)的核⼼课题之⼀。
⽐如我们平时⽤的智能⾳箱:
我想听歌
放⾸歌
来点⾳乐
...
⼈们会有很多种⾃然的表达,可以说“⾃然的表达”有⽆穷多的组合都是在代表“听歌”这个意图的。⽽要理解这么多种不同的表达,对机器是个挑战。早些时候,机器只能处理结构化的数据(⽐如关键词),也就是说如果要听懂⼈在讲什么,必须要⽤户输⼊精确的指令。
⽽这些指令的关键词肯定在不同表达中会被误判,所以显得很笨。⾃然语⾔理解这个技能出现后,可以让机器从各种⾃然语⾔的表达中,区分出来,哪些话归属于这个意图;⽽那些表达不是归于这⼀类的,⽽不再依赖那么死板的关键词。
再⽐如说智能⾳响:
“太吵了”
机器:“已帮您调⼩⾳量”
⽤户并没有提到⾳量,但是机器需要知道⽤户的意图——⾳量太⾼,需要把⾳量调⼩。
2. ⾃然语⾔理解(NLU)的应⽤
机器翻译(有道、百度翻译等)
机器客服(各种app⾥⾯的机器客户)
智能⾳箱(⼩爱⾳箱、天猫精灵等)
3. ⾃然语⾔理解(NLU)的难点
难点1:语⾔的多样性PL2303
⾃然语⾔有很多不同的表达,组合⽅式⾮常灵活,不同的组合可以表达多种含义,总能到很多例外的情况。
难点2:语⾔的歧义性
如果不联系上下⽂,缺少环境的约束,语⾔有很⼤的歧义性。
难点3:语⾔的鲁棒性
⾃然语⾔在输⼊的过程中,尤其是通过语⾳识别获得的⽂本,会存在多字、少字、错字、噪⾳等问题。
难点4:语⾔的知识依赖
语⾔是对世界的符号化描述,语⾔天然连接着世界知识。
难点5:语⾔的上下⽂
上下⽂的概念包括很多种:对话的上下⽂、设备的上下⽂、应⽤的上下⽂、⽤户画像。
4. NLU的实现⽅式
⾃然语⾔理解⼀共经历了 3次迭代:
1. 基于规则的⽅法
2. 基于统计的⽅法
3. 基于深度学习的⽅法
总结规律来判断⾃然语⾔的意图,常见的⽅法有:CFG、JSGF等。
基于统计学的NLU⽅式,常见的⽅法有:SVM、ME等。
随着深度学习的爆发,CNN、RNN、LSTM都成为了最新的主流,Transformer是⽬前最先进的⽅法。
⾃然语⾔⽣成 - NLG
NLG是为了跨越⼈类和机器之间的沟通鸿沟,将⾮语⾔格式的数据转换成⼈类可以理解的语⾔格式,如⽂章、报告等
1. ⾃然语⾔⽣成-NLG有2种⽅式:
1. text - to - text:⽂本到语⾔的⽣成
2. data - to - text :数据到语⾔的⽣成
2. NLG的3个LEVEL
简单的数据合并:⾃然语⾔处理的简化形式,这将允许将数据转换为⽂本(通过类似 Excel的函数)。
模板化的NLG:这种形式的NLG使⽤模板驱动模式来显⽰输出。。数据动态地保持更改,并由预定义的业务规则集(如if/else循环语句)⽣成。
⾼级NLG:这种形式的⾃然语⾔⽣成就像⼈类⼀样。它理解意图,添加智能,考虑上下⽂,并将结果呈现在⽤户可以轻松阅读和理解的富有洞察⼒的叙述中。
3. NLG的6个步骤
第⼀步:内容确定-Content Determination
作为第⼀步,NLG系统需要决定哪些信息应该包含在正在构建的⽂本中,哪些不应该包含。通常数据中包含的信息⽐最终传达的信息要多。
第⼆步:⽂本结构-Text Structuring
确定需要传达哪些信息后,NLG系统需要合理的组织⽂本的顺序。例如在报道⼀场篮球⽐赛时,会优先表达「什么时间」「什么地点」「哪2⽀球队」,然后再表达「⽐赛的概况」,最后表达「⽐赛的结局」。
第三步:句⼦聚合-Sentence Aggregation
不是每⼀条信息都需要⼀个独⽴的句⼦来表达,将多个信息合并到⼀个句⼦⾥表达可能会更加流畅,也更易于阅读。
第四步:语法化-Lexicalisation
当每⼀句的内容确定下来后,就可以将这些信息组织成⾃然语⾔了。这个步骤会在各种信息之间加⼀些连接词,看起来更像是⼀个完整的句⼦。
第五步:参考表达式⽣成-Referring Expression Generation|REG
这个步骤跟语法化很相似,都是选择⼀些单词和短语来构成⼀个完整的句⼦。不过他跟语法化的本质区别在于“REG需要识别出内容的领域,然后使⽤该领域(⽽不是其他领域)的词汇"。
第六步:语⾔实现-Linguistic Realisation
紫外光固化树脂
最后,当所有相关的单词和短语都已经确定时,需要将它们组合起来形成⼀个结构良好的完整句⼦。
4. NLG的3种典型应⽤
⾃动写作(⾃动写新闻,⾃动写论⽂等)
聊天机器⼈(各种⼿机开发的内置聊天机器⼈,智能⾳响,商场导航机器⼈等)
BI的解读和报告⽣成(各⾏各业解读报告⽣成⽐如体检报告)
分词-TOKENIZATION
分词就是将句⼦、段落、⽂章这种长⽂本,分解为以字词为单位的数据结构,⽅便后续的处理分析⼯作。随着深度学习,部分⼯作中也可以进⾏【分字】。
⼀般分词我们使⽤到中英⽂分词,中英⽂分词有不同
区别1:分词⽅式不同,中⽂更难
英⽂有天然的空格作为分隔符,但是中⽂没有。所以如何切分是⼀个难点,再加上中⽂⾥⼀词多意的情况⾮常多,导致很容易出现歧义。
区别2:英⽂单词有多种形态
英⽂单词存在丰富的变形变换。为了应对这些复杂的变换,英⽂NLP相⽐中⽂存在⼀些独特的处理步
骤,我们称为词形还原
(Lemmatization)和词⼲提取(Stemming)。中⽂则不需要
词性还原:does, done, doing, did需要通过词性还原恢复成do。
词⼲提取:cities, children, teeth这些词,需要转换为city, child, tooth"这些基本形态。
区别3:中⽂分词需要考虑粒度问题
粒度越⼤,表达的意思就越准确,但是也会导致召回⽐较少。
分词的⽅法⼤致分为3类:
1. 基于词典匹配
2. 基于统计
3. 基于深度学习
给予词典匹配的分词⽅式
优点:速度快、成本低
缺点:适应性不强,不同领域效果差异⼤
我的这篇博⽂就是⼀个基于词典匹配的分词⽅法:
基于统计的分词⽅法
优点:适应性较强
缺点:成本较⾼,速度较慢
这类⽬前常⽤的是算法是HMM、CRF、SVM、深度学习等算法,⽐如Stanford、Hanlp分词⼯具是基于CRF算法。
基于深度学习
优点:准确率⾼、适应性强缺点:成本⾼,速度慢
例如有⼈员尝试使⽤双向LSTM+CRF实现分词器,其本质上是序列标注,所以有通⽤性,命名实体识别等都可以使⽤该模型,据报道其分词器字符准确率可⾼达97.5%。
中⽂分词⼯具
下⾯排名根据GitHub上的star数排名:
1. Hanlp
2. Stanford 分词
3. ansj分词器
4. 哈⼯⼤LTP
5. KCWS分词器
6. jieba
7. IK
8. 清华⼤学THULAC
9. ICTCLAS
英⽂分词⼯具
1. Keras
2. Spacy
3. Gensim
4. NLTK
词⼲提取STEMMING 和词形还原 LEMMATISATION
词⼲提取和词形还原是英⽂语料预处理中的重要环节,英⽂单词有多种形态,需要词性还原和词⼲提取,中⽂不需要!谨慎性原则
银行钱荒的影响词⼲提取是去除单词的前后缀得到词根的过程。⼤家常见的前后词缀有「名词的复数」、「进⾏式」、「过去分词」...等等提取出词⼲来。⽐如[dogs]提取[dog]。
词⼲提取更多被应⽤于信息检索领域,如Solr、Lucene等,⽤于扩展检索,粒度较粗。
词形还原是基于词典,将单词的复杂形态转变成最基础的形态。词形还原不是简单地将前后缀去掉,
⽽是会根据词典将单词进⾏转换。⽐如
[drove] 转换为[drive]。
形还原更主要被应⽤于⽂本挖掘、⾃然语⾔处理,⽤于更细粒度、更为准确的⽂本分析和表达。
三种主流词⼲提取算法:Porter、Snowball、Lancaster
词性标注-PART OF SPEECH
词性标注(Part-Of-Speech tagging, POS tagging)也被称为语法标注(grammatical tagging)或词类消疑(word-category disambiguation),是语料库语⾔学(corpus linguistics)中将语料库内单词的词性按其含义和上下⽂内容进⾏标记的⽂本数据处理技术。词性标注就是在给定句⼦中判定每个词的语法范畴,确定其词性并加以标注的过程,如下是汉语的词性部分对照表:
命名实体识别 NAMED-ENTITYRECOGNITION | NER
命名实体识别(Named Entity Recognition,NER)是NLP中⼀项⾮常基础的任务。NER是信息提取、问答系统、句法分析、机器翻译等众多NLP任务的重要基础⼯具。
命名实体识别,那什么是实体,简单的理解,实体,可以认为是某⼀个概念的实例。
例如,“⼈名”是⼀种概念,或者说实体类型,那么“孙权”就是⼀种“⼈名”实体了。“时间”是⼀种实体类型,那么“国庆节”就是⼀种“时间”实体了。
所谓实体识别,就是将你想要获取到的实体类型,从⼀句话⾥⾯挑出来的过程。只有好的实体识别才会让其它任务的开展更有效,⽐如事件抽取、关系抽取等。
分块-chunking
⽂本分块是将⼀⼤段⽂本分割成⼏段⼩⽂本,其⽬的是⽐如想获取⼀段⽂本中的⼀⼩部分,或分割得到固定单词数⽬的⼩部分等,经常⽤于⾮常⼤的⽂本。
注意⽂本分块和分词不⼀样,分词的⽬的是把⼀段⽂本分割成单词,⽽⽂本分块的⽬的是把⼀⼤段⽂本分割成多个⼩段⽂本。
组块分析 (Chunking):标出句⼦中的短语块,例如名词短语(NP),动词短语(VP)等。
最后
NLP⾥⾯有很多⼯作和技术需要做,上⾯只是简单的介绍了NLP的内容和⼀些概念,⽬前有的⽅法。每⼀个步骤都可以分开来在不同的应⽤中发挥作⽤,也可以联系起来做成很棒的产品。
NLP中常见的任务
后⾯会学⼀些NLP的相关知识,包括【hanlp】的学习分享。

本文发布于:2024-09-25 02:30:26,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/36455.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:需要   机器   表达
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议