NLP的几个概念

  • 从技术研究的角度,简单介绍自然语言处理的几个概念

1. 对抗学习

主要指对抗生成网络。

2个主要构成:判别器、生成器

判别模型尽可能提取特征正确率增加的模型,生成模型尽可能“伪造”让判别模型以为是真的结果。

2. 强化学习

来源于“heterostatic theory of adaptive systems”

不同于监督学习和非监督学习,强化学习不要求预先给定任何数据,而是通过接收环境对动作的奖励(反馈)获得学习信息并更新模型参数 [3] 。

2个核心:

  1. 定义奖励、惩罚函数
  2. 完成尝试,学习的过程

3. 向量搜索

顾名思义,向量形式的搜索。

index:将普通搜索的query和文档库中的文档,都用向量表示。

query:完成向量的匹配(相似度计算)过程。

得到向量的过程,可使用word2vec、fasttext、glove等,也可使用公开的词向量模型。腾讯、百度、Google都有公开。

4. 意图识别

常用于会话系统中,用来识别用户的意图,给系统下一步的操作提供依据。

一个是意图的识别,一个是槽位的识别。

本质就是一个分类问题,可以用基于规则,传统机器学习算法 (SVM),基于深度学习算法(CNN, LSTM, RCNN, C-LSTM, FastText)等方法来处理。

5. 情感分析

情感分析的任务是从评论的文本中提取出评论的实体,以及评论者对该实体所表达的情感倾向。

用于电商网站对某款产品的用户反馈情绪提取。

抽取情感相关的词汇,和词典中的数据进行比较,最终计算得分。

可基于词语来做,也可将整个句子标注,用来训练深度神经网络的情感分类模型。

情感分析 ChnSentiCorpSST-2,和 LCQMC

一般为单句分析

6. 相似度计算

计算两个文本之间的相关程度。

可以是基于字符层面的计算,例如编辑距离、Jaccard距离等;

也可以是基于语义层面的,先得到词语/字的语义向量,然后计算文本的语义向量,最终计算两个向量之间的距离。方法有:cos、dot

Attention用的是另外一种计算矩阵相似度的方法,这里不讨论。

7. 文本生成

目前的算法和技术能做到的:将结构化的数据,转为非结构化的文本。

根据商品信息,生成营销类的标题和宣传广告。是基于规则模板匹配和语义标注训练相结合的方法。有大量的标注训练数据。

“李文哲:目前NLP不适合文本生成,只能用在论文里面”

8. 知识图谱

将知识用图结构的方式表达出来。图数据库。

常用的工具neo4j、ArangoDB、OrientDB、TigerGraph

9. 端到端

端到端,是一种方法、一种思路,在Seq2Seq基础之上,完成序列到序列的映射关系。

可以做语音识别、机器翻译、命名实体识别、关系抽取等任务。

用户只需关注输入和输出部分,无需在意具体的映射逻辑,可以看做是一个黑盒子。

端到端的学习其实就是不做其他额外处理,从【原始数据输入】到【任务结果输出】,整个训练和预测过程,都是在模型里完成的。

自动驾驶:像素---指令
语音识别:声音---文本
机器翻译:文本---文本
智能会话:文本---文本
问答系统:文本---文本

一般来讲,输入和输出的长度相对固定,且格式一致。数据量在10万以上。

10. 机器阅读理解

研究工作的主要内容:给定一段文本、一个问题和多个候选集,找出正确的那个候选集。并且,答案一定出现在段落中。

数据格式SQuAD。台湾有繁体版,有对应的简体版。

11. 智能会话

人和机器之间的对话

下图是阿里的达摩院分享的内容,我做了笔记和整理。

12. 多轮会话

为了完成一个特定的任务,人和机器之间的多次交互。

以完成任务为目的。

多轮会话中,包含意图的澄清、确认等。

能运行跑起来的应用,都是基础的填槽方式。

基于深度学习的方法,目前停留在实验阶段。

13. 问答系统

这是从研究工作工作的角度,看待的“问答系统”

一问一答。

人类一次提问,机器一次回答,交互完成。

在实际工作中,不同岗位理解的问答系统不一样。

例如:在知识类的网站中,知乎、悟空问答、各种论坛,都可以看做是问答系统。

关于深度学习的问答系统,保险领域常用的数据集是https://github.com/shuzi/insuranceQA.git ,这是一问一答的方式,原版是英文版的,已有中文版本。

生物医疗领域的问答系统,BioASQ

BERT模型做的问答系统,一般基于三元组<上下文,问题,答案>

NLPCC2016-DBQA 是由国际自然语言处理和中文计算会议 NLPCC 于 2016 年举办的评测任务,其目标是从候选中找到合适的文档作为问题的答案。[链接: http://tcci.ccf.org.cn/conference/2016/dldoc/evagline2.pdf].

14. 问答和会话的区别

问答是《问题,答案》、《提问,回答》的方式,2个角色,一次交互。

会话是围绕一个主题(达到某个目的、完成某项任务)进行多次交互,2个或多于2个角色,多次交互。

  • 问答涉及的内容有:

    理解、改写问题;

    搜索、匹配、排序答案;

    实体、关系的识别、抽取;

  • 会话一般有6个核心模块:

    ARS、NLU、DST、Policy、NLG、TTS

    即:语音识别、自然语言理解、会话状态跟踪、对话策略、自然语言生成、语音合成

    一般为任务导向型

    方法有:基于框架(槽填充、模板)、端到端(end2end)

自动作诗,是端到端方法的应用

15. 自然语言理解NLU

http://www.crownpku.com/2017/07/27/用Rasa_NLU构建自己的中文NLU系统.html

我们推荐使用下面的pipeline:

MITIE+Jieba+sklearn (sample_configs/config_jieba_mitie_sklearn.json):

[“nlp_mitie”, “tokenizer_jieba”, “ner_mitie”, “ner_synonyms”, “intent_featurizer_mitie”, “intent_classifier_sklearn”]

这里也可以看到Rasa NLU的工作流程。”nlp_mitie”初始化MITIE,”tokenizer_jieba”用jieba来做分词,”ner_mitie”和”ner_synonyms”做实体识别,”intent_featurizer_mitie”为意图识别做特征提取,”intent_classifier_sklearn”使用sklearn做意图识别的分类。

参考

https://www.milvus.io/

https://github.com/PaddlePaddle/ERNIE

https://github.com/RasaHQ/rasa

最新文章

  1. 如何实现 javascript “同步”调用 app 代码
  2. JAVA hashmap知识整理
  3. Ternary Search Trees 三分搜索树
  4. windows server域的概念以及wmic(centos上命令)
  5. mybatis(三)懒加载
  6. java对象与json对象间的相互转换
  7. 原始ajax发起请求并反馈
  8. FastJson只序列化java对象的部分属性
  9. ASP.NET 中JSON 的序列化和反序列化
  10. 现代密码学应用的范例-PGP
  11. Codeforces 568B Symmetric and Transitive
  12. Android 监听网络变化
  13. #include &lt;strstream&gt;
  14. hibernate-------&gt;第一个程序
  15. 关于maven相互依赖的工程部署问题
  16. LeetCode 107. Binary Tree Level Order Traversal II (二叉树阶层顺序遍历之二)
  17. [LeetCode] Map Sum Pairs 映射配对之和
  18. Perl IO:IO重定向
  19. Java9 接口细谈
  20. mybatis之批量插入

热门文章

  1. Android监听消息通知栏点击事件
  2. C语言-条件编译使用分析
  3. 使用JavaMail发送邮箱详解
  4. .Net中C# DateTime类的ToString()方法的使用
  5. thows,thow和try catch的区别
  6. mysql-sql逻辑查询顺序
  7. Microsoft 常用下载链接
  8. 洛谷P1433 吃奶酪
  9. RHEL7忘记密码:修改root密码
  10. C++ split分割字符串函数