精华内容
下载资源
问答
  • 智能问答 自然语言理解
    千次阅读
    2021-12-14 11:08:11


    一、 概述

    人类利用语言进行交流、思想表达和文化传承是人类智能的重要体现。
    自然语言处理(NLP)是指用计算机来处理、理解以及运用人类语言,实现人机交流的目的。

    本文将人工智能"自然语言处理"基础知识整理为思维导图,便于回顾和记忆。

    二、 重点内容

    • 简介
    • NLP核心任务
    • NLP主要应用领域
    • NLP三个分析层面
    • NLP分析流程
    • 典型应用简介
      • 语音识别
      • 机器翻译

    三、 思维导图

    人工智能基础知识(9)——自然语言处理

    四、 重点知识笔记

    自然语言处理(NLP)是指用计算机来处理、理解以及运用人类语言,是计算机科学与语言学的交叉学科。

    从应用角度看,自然语言处理的应用有:

    • 语音识别、文字识别
    • 文本生成、图像描述生成
    • 机器翻译:将一种语言翻译成另一种语言。
    • 知识图谱、信息抽取
    • 对话系统、问答系统
    • 文本分类、情感分析
    • 文本推荐

    NLP的两个核心任务

    • 自然语言理解(NaturalLanguage Understanding, NLU)
    • 自然语言生成( Natural LanguageGeneration, NLG)
    • 自然语言理解(NLU):实现人机间自然语言通信意味着要使计算机既能理解自然语言文本的意义
    • 自然语言生成(NLG):以自然语言文本来表达给定的意图、思想等。

    NLU的应用:

    • 机器翻译
    • 机器客服
    • 智能音响

    NLU 的实现方式:

    自然语言理解跟整个人工智能的发展历史类似,一共经历了3次迭代:

    • 基于规则的方法:最早大家通过总结规律来判断自然语言的意图,常见的方法有:CFG、JSGF等。
    • 基于统计的方法:后来出现了基于统计学的 NLU 方式,常见的方法有:SVM、ME等。
    • 基于深度学习的方法:随着深度学习的爆发,CNN、RNN、LSTM 都成为了最新的”统治者”。

    Transformer是目前“最先进”的方法。BERT 和 GPT-2都是基于TRansformer的。

    NLG 的6个步骤:

    • 内容确定 – Content Determination
    • 文本结构 – Text Structuring
    • 句子聚合 – Sentence Aggregation
    • 语法化 – Lexicalisation
    • 参考表达式生成 – Referring Expression Generation|REG
    • 语言实现 – Linguistic Realisation

    NLG典型应用:

    • 聊天机器人
    • 自动写新闻:对于具有明显规则的领域,比如体育新闻。目前很多新闻已经借助NLG 来完成了
    • BI报告生成

    NLP处理的三个分析层面

    第一层面:词法分析

    词法分析包括汉语的分词和词性标注这两部分。

    • 分词:将输人的文本切分为单独的词语
    • 词性标注:为每一个词赋予一个类别
      • 类别可以是名词(noun)、动词(verb)、形容词(adjective)等
      • 属于相同词性的词,在句法中承担类似的角色。

    第二层面:句法分析

    句法分析是对输人的文本以句子为单位,进行分析以得到句子的句法结构的处理过程。

    三种比较主流的句法分析方法:

    • 短语结构句法体系,作用是识别出句子中的短语结构以及短语之间的层次句法关系;
      • 介于依存句法分析和深层文法句法分析之间
    • 依存结构句法体系(属于浅层句法分析),作用是识别句子中词与词之间的相互依赖关系;
      • 实现过程相对来说比较简单而且适合在多语言环境下应用,但是其所能提供的信息也相对较少
    • 深层文法句法分析,利用深层文法,对句子进行深层的句法以及语义分析
      • 例如词汇化树邻接文法,组合范畴文法等都是深层文法
      • 深层文法句法分析可以提供丰富的句法和语义信息
      • 深层文法相对比较复杂,分析器的运行复杂度也比较高,不太适合处理大规模的数据

    第三个层面:语义分析

    语义分析的最终目的是理解句子表达的真是语义。语义表示形式至今没有一个统一的方案。

    • 语义角色标注(semantic role labeling)是目前比较成熟的浅层语义分析技术。
      • 语义角色标注一般都在句法分析的基础上完成,句法结构对于语义角色标注的性能至关重要。
      • 通常采用级联的方式,逐个模块分别训练模型
        • 分词
        • 词性标注
        • 句法分析
        • 语义分析
    • 联合模型(新发展的方法)
      • 将多个任务联合学习和解码
        • 分词词性联合
        • 词性句法联合
        • 分词词性句法联合
        • 句法语义联合等
      • 联合模型通常都可以显著提高分析质量
      • 联合模型的复杂度更高,速度也更慢。

    NLP的主要流程

    • 传统机器学习的 NLP 流程
      • 预处理
      • 特征提取
        • 词袋设计
        • Embedding
      • 特征分类器
    • 深度学习的 NLP 流程
      • 预处理
      • 设计模型
      • 模型训练

    预处理过程:

    • 收集语料库(输入文本)
    • 文本清洗(文本清洗,)
      • 删除所有不相关的字符,例如任何非字母数字字符
      • 分割成单个的单词文本
      • 删除不相关的单词,例如“@”提及或网址链接
      • 将所有字符转换为小写,以便将诸如“hello”,“Hello”和“HELLO”之类的单词视为相同
      • 考虑将拼写错误或交替拼写的单词组合成单个表示(例如“cool”/“kewl”/“cooool”)
      • 考虑词性还原(将诸如“am”,“are”和“is”之类的词语简化为诸如“be”之类的常见形式)
    • 分词
    • 去掉停用词(可选)
    • 标准化和特征提取等。

    英文预处理:

    • 分词 – Tokenization
    • 词干提取 – Stemming
    • 词形还原 – Lemmatization
    • 词性标注 – Parts of Speech
    • 命名实体识别 – NER
    • 分块 – Chunking

    中文NLP预处理:

    • 中文分词 – Chinese Word Segmentation
    • 词性标注 – Parts of Speech
    • 命名实体识别 – NER
    • 去除停用词

    中文分词方法:

    1. 经典的基于词典及人工规则:适应性不强,速度快,成本低
      • 基于词典:(正向、逆向、双向最大匹配)
      • 基于规则:(词法结构)
    2. 现代的基于统计和机器学习:适应性强,速度较慢,成本较高
      • 基于统计:HMM隐马尔可夫模型
      • 基于机器学习:CRF条件随机场

    自然语言典型工具和平台

    • NLTK :全面的python基础NLP库。
    • StanfordNLP :学界常用的NLP算法库。
    • 中文NLP工具:THULAC、哈工大LTP、jieba分词。

    语音识别

    将人类语音中的词汇内容转换为计算机可读的输入。

    语音识别系统的分类主要有:

    • 孤立和连续语音识别系统(主流为连续语音识别)
      • 以单字或单词为单位的孤立的语音识别系统
      • 自然语言只是在句尾或者文字需要加标点的地方有个间断,其他部分都是连续的发音
    • 特定人和非特定人语音识别系统
      • 特定人语音识别系统在前期需要大量的用户发音数据来训练模型。
      • 非特定人语音识别系统则在系统构建成功后,不需要事先进行大量语音数据训练就可以使用
    • 大词汇量和小词汇量语音识别系统
    • 嵌入式和服务器模式语音识别系统

    语音识别的过程

    语音识别系统一般可以分为前端处理和后端处理两部分:

    • 前端包括
      • 语音信号的输入
      • 预处理:滤波、采样、量化
      • 特征提取
    • 后端是对数据库的搜索过程
      • 训练:对所建模型进行评估、匹配、优化,之后获得模型参数
      • 识别

    语音识别的过程:

    • 根据人的语音特点建立语音模型
    • 对输入的语音信号进行分析,并抽取所需的特征,建立语音识别所需要的模板
    • 将语音模板与输入的语音信号的特征进行比较,找出一与输入语音匹配最佳的模板
    • 通过查表和判决算法给出识别结果

    显然识别结果的准确率与语音特征的选择、语音模型和语音模板的好坏及准确度有关。

    语音识别系统的性能受多个因素的影响

    • 不同的说话人
    • 不同的语言
    • 同一种语言不同的发音和说话方式等

    提高系统的稳定性就是要提高系统克服这些因素的能力,使系统能够适应不同的环境。

    声学模型是识别系统的底层模型,并且是语音识别系统中最关键的一部分。
    声学模型的目的是提供一种有效的方法来计算语音的特征矢量序列和各发音模板之间的距离。

    语音识别关键技术

    • 语音特征提取
      • 常见的语音特征提取算法有MFCC、FBank、LogFBank等
    • 声学模型与模式匹配
      • 声学模型:对应于语音音节频率的计算,输出计算得到的声学特征
      • 模式匹配:在识别时将输入的语音特征与声学特征同时进行匹配和比较
      • 目前采用的最广泛的建模技术是隐马尔可夫模型(Hidden Markov Model,HMM)。
    • 语音模型与语义理解
      • 进行语法、语义分析
      • 语言模型会计算音节到字的概率
        • 主要分为规则模型和统计模型
        • 语音模型的性能通常通过交叉熵和复杂度来表示,交叉熵表示
          • 交叉熵表示用该模型对文本进行识别的难度
          • 复杂度是指用该模型表示这个文本平均的分支数,其倒数可以看成是每个词的平均概率

    机器翻译

    机器翻译就是让机器模拟人的翻译过程,利用计算机自动地将一种自然语言翻译为另一种自然语言。

    在机器翻译领域中出现了很多研究方法,包括:

    • 直接翻译方法
    • 句法转换方法
    • 中间语言方法
    • 基于规则的方法
    • 基于语料库的方法
    • 基于实例的方法(含模板与翻译记忆方法)
    • 基于统计的方法
    • 基于深度学习的方法等

    机器翻译过程:

    • 原文输入:按照一定的编码转换成二进制。
    • 原文分析(查词典和语法分析)
      • 查词典:词在语法类别上识别为单功能的词,在词义上成为单义词(某些介词和连词除外)
      • 语法分析:进一步明确某些词的形态特征。找出动词词组、名词词组、形容词词组等
    • 译文综合(调整词序与修辞以及从译文词典中取词)
      • 任务1:把应该以为的成分调动一下
        • 首先加工间接成分:从前向后依次取词加工,从句子的最外层向内加工。
        • 其次加工直接成分:依据成分取词加工,对于复句还需要对各分句进行加工。
      • 任务2:修辞加工
        • 根据修辞的要求增补或删掉一些词。例如英语中的冠词、数次翻译汉语,加上"个"、“只”。
      • 任务3:查目标语言词典,找出目标语言文字的代码。
    • 译文输出
      • 将目标语言的代码转换成文字,打印出译文来

    通用翻译模型:

    • GNMT(Google NeuralMachine Translation)基于网页和App的神经网络机器翻译
    • 完全基于注意力机制的编解码器模型Transformer
    • Transformer的升级版—Universal Transformer

    在Transformer出现之前,多数神经基于神经网络的翻译模型都使用RNN。
    RNN训练起来很慢,长句子很难训练好。
    Universal Transformer模型具有了通用计算能力,在更多任务中取得了有力的结果。
    Universal Transformer的训练和评估代码已开源在了Tensor2Tensor网站。



    个人总结,部分内容进行了简单的处理和归纳,如有谬误,希望大家指出,持续修订更新中。

    修订历史版本见:https://github.com/hustlei/AI_Learning_MindMap

    更多相关内容
  • 人工智能-语音识别-基于自然语言理解的中文自动问答系统研究.pdf
  • 人工智能-语音识别-基于中文自然语言理解问答系统研究.pdf
  • 自然语言理解技术与智能问答实践.pdf
  • 34张史上最全IT架构师技术知识图谱.rar PYTHON自然语言处理_中文版.pdf Python进行NLP分析基础示例.zip Python网络数据采集.pdf Tensorflow ...面向电商领域的智能问答系统若干关键技术研究_杨燕(1).caj
  • 《人工智能》之《自然语言理解》1 自然语言理解概述1.1 什么是自然语言处理?1.2 自然语言处理的发展历程1.3 自然语言处理方法论1.4 自然语言理解的研究领域和方向1.5 自然语言处理的现状、难点与瓶颈歧义病构1.6 ...

    教材:《人工智能及其应用》,蔡自兴等,2016m清华大学出版社(第5版)

    参考书:
    在这里插入图片描述

    1 自然语言理解概述

    1.1 什么是自然语言处理?

    自然语言处理(Natural Language Processing,NLP)是用计算机通过可计算的方法对自然语言的各级语言单位(字、词、语句、篇章等等)进行转换、传输、存贮、分析等加工处理的理论和方法。
    在这里插入图片描述

    1.2 自然语言处理的发展历程

    在这里插入图片描述

    1.3 自然语言处理方法论

    机器能够理解人的语言吗?
    在这里插入图片描述
    自然语言处理的两种主义:理性主义、经验主义。

    • 一种是以基于知识的方法为代表的理性主义方法,该方法以语言学理论为基础,强调语言学家对语言现象的认识,采用非歧义的规则形式描述或解释歧义行为或歧义特性。
    • 一种是以基于语料库的统计分析为基础的经验主义方法,该方法更注重用数学方法,从能代表自然语言规律的大规模真实文本中发现知识,抽取语言现象或统计规律。

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    1.4 自然语言理解的研究领域和方向

    • 文字识别(Optical character recognition,OCR)
    • 语音识别(Speech recognition)
    • 机器翻译(Machine translation)
    • 问答系统(Question answering system)
    • 自动文摘(Automatic summarization或automatic abstracting)
    • 信息检索(Information retrieval)
    • 语音合成(Speech synthesis)
    • 自然语言生成(Natural language generation)

    1.5 自然语言处理的现状、难点与瓶颈

    自然语言处理的现状:

    • 仍然缺乏理论基础
    • 词汇句法方面的问题尚未解决,已开始挑战语义、知识等深层课题
    • 语音识别中采用的统计语言模型推动了NLP的发展,目前的统计模型在向语言深层发展
    • 本体论( 知识图谱)受到普遍重视
    • Bert 、GPT3大数据深度学习取得突破性进展

    自然语言处理的难点:

    • 歧义(ambiguity)
    • 病构(ill-formedness)

    歧义

    在这里插入图片描述
    在这里插入图片描述

    病构

    在这里插入图片描述

    自然语言处理的瓶颈:
    在这里插入图片描述

    1.6 语言与语言理解

    自然语言是音义结合的词汇和语法体系。词汇是语言的基本单位,它在语法的支配下可构成有意义和可理解的句子,句子再按一定的形式构成篇章等。其结构如下图所示:
    在这里插入图片描述
    词汇是语言的基本单位。熟语是指一些词的固定组合,如汉语中的成语。词又由词素构成,词素是构成词的最小有意义的单位。如“学生”是由“学”和“生”这两个词素构成的。

    语法是语言的组织规律。词法是用词素或熟语构成词的规则,可分为构形法和构词法。构形法是指单数复数等,学生,学生们。造句法是用词和词组构造句子的规则。

    1.7 自然语言理解过程的层次

    语言虽然表示成一连串的文字符号或者一串声音流,但其内部实际上是一个层次化的结构,从语言的构成中就可以清楚地看到这种层次性。

    一个文字表达的句子是由词素→词或词形→词组或句子构成。

    一个声音表达的句子则是由音素→音节→音词→音句构成。

    其中每个层次都受到语法规则的制约。因此,语言的分析和理解过程也应当是一个层次化的过程。

    1.7.1 语音分析

    在这里插入图片描述

    1.7.2 词法分析

    在这里插入图片描述

    1.7.3 句法分析

    在这里插入图片描述
    在这里插入图片描述

    1.7.4 语义分析

    研究如何从一个语句中词的意义,以及这些词在该语句中句法结构中的作用来推导出该语句的意义。
    在这里插入图片描述

    1.7.5 语用分析

    研究在不同上下文中语句的应用,以及上下文对语句理解所产生的影响。从狭隘的语言学观点看,语用学处理的是语言结构中有形式体现的那些语境。
    在这里插入图片描述

    2 词法分析

    在这里插入图片描述

    3 句法分析

    3.1 短语结构语法

    在这里插入图片描述
    在这里插入图片描述

    3.2 乔姆斯基形式语法

    在这里插入图片描述

    上下文无关文法

    上下文无关文法(Context-free Grammars)是乔姆斯基提出的一种对自然语言语法知识进行形式化描述的方法。在这种文法中,语法知识是用重写规则表示的。作为例子,下面给出了一个英语的很小的子集。
    在这里插入图片描述
    这就是一个英语子集的上下文无关文法。在该文法中,“语句”是一个特殊的非终极符,称为起始符。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    3.3 转移网络

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    寻找各种可能的路径:

    1. 并行算法。并行算法的关键是在任何一个状态都要选择所有可以到达下一个状态的弧,同时进行试验。
    2. 回溯算法。回溯算法则是在所有可以通过的弧中选出一条往下走,并保留其他可能性,以便必要时可以回过来选择之。这种方式需要一个堆栈结构。

    在这里插入图片描述

    4 语义分析

    在这里插入图片描述

    4.1 语义分析的典型应用

    4.1.1 机器翻译

    在这里插入图片描述
    统计翻译系统框架:Transformer
    在这里插入图片描述

    4.1.2 问答系统

    在这里插入图片描述
    在这里插入图片描述

    4.1.3 语音识别

    在这里插入图片描述

    5 词向量表示

    5.1 词向量的定义

    词向量是自然语言中的词语在机器学习中的表示符号。

    在这里插入图片描述

    在这里插入图片描述

    5.2 语言模型

    在这里插入图片描述
    近年来,人们在寻找最适合自然语言处理的模型上的探索:
    在这里插入图片描述

    5.3 各种词向量及其特点

    在这里插入图片描述
    词向量(又叫词嵌入)已经成为NLP领域各种任务的必备一步,而且随着 elmo, bert, gpt 等预训练模型的发展,词向量演变为知识表示方法。

    5.3.1 word2vec

    word2vec来源于2013年的论文《Efficient Estimation of Word Representation in Vector Space》.

    核心思想:利用神经网络对词的上下文训练得到词的向量化表示。

    训练方法:

    • CBOW(通过附近词预测中心词)
    • Skip-gram(通过中心词预测附近的词)

    在这里插入图片描述

    CBOW(Continuous Bag of Words)

    基本思想:基于N-Gram,用词语w的上下文作为输入,预测中心词语w。

    example:
    我爱计算机,窗口为2时,训练集可以构造为:
    输入:{我,爱,算,机}
    输出:计

    在这里插入图片描述
    在这里插入图片描述
    Skip-Gram

    基本思想:基于N-Gram,用词语w作为输入,预测词语的上下文。

    example:
    我爱计算机,窗口为2时,训练集可以构造为
    输入:{计} 输出:{我,爱,算,机}

    在这里插入图片描述
    Skip-Gram跟CBOW的原理相似,它的输入是目标词,先是将目标词映射为一个隐藏层向量,根据这个向量预测目标词上下文两个词。

    CBOW和Skip-Gram对比:
    在这里插入图片描述

    展开全文
  • 摘要: 随着人工智能技术的发展,智能对话的应用场景越来越多,目前已经成为了研究的热点。天猫精灵,小度小度,腾讯叮当,这些智能助手都是智能对话在业界的应用。智能助手的对话方式可分为三种:任务式对话 ( 用户...

    摘要: 随着人工智能技术的发展,智能对话的应用场景越来越多,目前已经成为了研究的热点。天猫精灵,小度小度,腾讯叮当,这些智能助手都是智能对话在业界的应用。智能助手的对话方式可分为三种:任务式对话 ( 用户输入指 ...

    人工智能学习离不开实践的验证,推荐大家可以多在FlyAI-AI竞赛服务平台多参加训练和竞赛,以此来提升自己的能力。FlyAI是为AI开发者提供数据竞赛并支持GPU离线训练的一站式服务平台。每周免费提供项目开源算法样例,支持算法能力变现以及快速的迭代算法模型。

    随着人工智能技术的发展,智能对话的应用场景越来越多,目前已经成为了研究的热点。天猫精灵,小度小度,腾讯叮当,这些智能助手都是智能对话在业界的应用。智能助手的对话方式可分为三种:任务式对话 ( 用户输入指令,智能助手执行指令任务 ),问答式对话 ( 用户输入问题,智能助手回复答案 ),闲聊式对话。那么智能助手如何理解用户的指令,最终完成指令任务呢?任务型语音对话的处理流程主要包括:语音识别,自然语言理解,对话管理、对话生成,语音合成 ( 图1 )。要理解用户的指令,就需要对用户输入进行自然语言理解,也就是对转换为文本的用户输入进行分析,得到用户的意图和关键信息。在图1中,这一部分由绿色虚线圈出,主要包括领域 ( domain )、意图 ( intent ) 和槽 ( slot ) 的预测。本文主要介绍这一部分,即领域识别、意图识别和槽抽取的主流方法和研究进展。

    图1 任务型对话处理流程

     

    领域识别、意图识别和槽抽取具体指什么?我们来举例说明。例如,用户说:"我想听蔡徐坤的情人",系统需要识别出这句话是属于音乐领域,用户的意图是"播放",句子中的槽 ( 关键信息 ) 是"歌手:蔡徐坤"和"歌曲:情人"。这样才能去资源库找到资源 ( 歌曲"蔡徐坤-情人" ) 然后执行"播放"动作。这个例子很简单,但实际情况比较复杂。由于语言本身的特性,任务式对话系统中的自然语言理解有很多难点。

     

    01、自然语言理解的难点

    1. 语言的复杂性

    语言本身很复杂,虽然有很多语法去描述,但语言不是只用语法就可以描述完全的。比如用户输入:"这首歌太难听了我想听世界上最最较好听的","你为什么找了一首哈狗帮的歌我要听bigbang的歌","播放风吹麦浪我不好安慰一下",这些输入的主要意图只是句子的一部分。

     

    2. 语言的随意性

    不同于书面用语,用户的说法很口语化,有时不符合语法,比如有播放意图的,"有没有什么故事给我听",或者控制类的,"别讲了"。

     

    3. 语言的鲁棒性

    在语音识别的过程中会产生错字,自然语言理解模块需要对这些错字有容错和纠错的能力。如"我想听葫芦娃十集"识别成了"我想听葫芦娃石级",自然语言理解模块需要能够对内容进行抽取和纠正。

     

    4. 语言的歧义性

    有时,用户输入还会有歧义性。比如,用户输入"关闭放华晨宇的山海",用户到底是想关闭还是播放,这里存在歧义。

    因此,任务式对话系统中的自然语言理解,面临很大的挑战。下面对自然语言理解的主流方法和研究进展进行介绍。

     

    02、规则方法

    自然语言理解使用的算法可分为规则方法和机器学习方法。

    意图判断和槽抽取的规则方法有FST算法、trie树等。其主要流程是:首先进行模板配置,当接收到输入的句子时,将其在已经配置的模板中进行匹配,匹配到的模板信息作为意图和槽返回。

    例如,针对"开空调"这个意图,可以做如下的配置 ( 此处可把模板简单地理解为正则表达式 ):

    (请|帮我)(打开|启动)(这个|那个)?(空调|电视机|音箱)(啊|吧)?

    模板可能展开的路径如图:

     

    图2 模板展开路径

    假设用户输入为:"帮我打开空调",那么匹配路径如图3中红色箭头所示:

    图3 模板匹配示例

     

    规则方法首先要配置模板 ( pattern ),因此其覆盖度和准确度依赖于模板配置的质量。配置模板这一特性,同时造就了规则方法的优点和缺点。规则方法的优点是配置可及时更新,如果需要增加支持的模板,只需要在系统内加入相应的配置即可。缺点是模板质量较差的话会影响规则方法的效果,同时日积月累之后,形成的大量模板会增加维护成本。

     

    规则方法可以覆盖大部分用户说法,但是无法覆盖长尾的用户输入。而对于前面提到的几个语言理解的问题,如问题1.1语言的复杂性和问题1.2语言的随意性,规则方法可以通过配置更复杂的模板和更灵活的模板来解决部分问题,但也可能引入误召回。

    而机器学习的方法不需要配置模板,只要有足够的标注数据,就可以进行学习。

     

    03、机器学习的方法

    1. 传统机器学习的方法

    深度学习出现之前,使用传统机器学习的方法处理用户意图和关键信息。机器学习方法将槽的预测定义为标签序列预测问题,见图4。例如句子"我想听蔡徐坤的情人",每个字对应的标签如表1所示。

     

    较为典型的一种方法是使用SVM对意图进行多分类,对每个字进行槽的多分类。预测意图输入的特征是句子的人工特征,预测槽输入的特征是当前字及其周围的文本特征。

    表1 槽标签 ( B: beginning,M: middle,E: end )

     

    图4 自然语言理解的SVM模型

     

    这种方法较为依赖人工特征的质量,而人工提取的特征很难将有效特征覆盖完全。

     

    2. 深度学习模型

    近年来,随着深度学习的发展,出现了使用深度学习进行自然语言理解的方法。深度学习方法改用词向量作为输入特征,这种利用大规模语料自动学习出来的词向量,实践证明比人工特征效果更好。领域分类和意图分类较为类似,可以使用CNN模型。槽标签序列预测这种序列建模问题,可以使用RNN,LSTM等序列模型,见图5。

    图5 自然语言理解的深度学习模型

     

    使用神经网络 ( 如LSTM ) 预测的槽标签,有时会有前后不连贯的现象,如预测序列为"O B-singer I-song O"。所以通常会在神经网络之后加上CRF架构,CRF可以对标签的前后连接关系进行建模,所以加上CRF之后能避免标签不连贯的现象,从而提高预测的准确率。

     

    机器学习的方法,可以在一定程度上解决之前提出的语言理解的前三个问题,可以从复杂和口语化的语句中提取出意图和关键信息,也有一定的容错能力。

     

    图5所示的深度学习架构,存在一个问题,即,由于领域分类、意图分类和槽抽取这三个任务是顺序的关系,整体累积的错误会越来越大。假设每个模型的正确率都是0.9,整体流程的正确率会远小于0.9。因此,研究人员提出了意图分类和槽抽取联合模型。

     

    3. 联合模型

    联合模型对于意图分类和槽抽取任务进行联合训练和联合测试,这样在训练中,一个任务可以用到另一个任务的信息,从而提高整体预测的准确率。在联合模型中,仍然将意图看作多分类任务,槽抽取看作标签序列预测。输入句子经过神经网络,得到表征句子的向量序列,可以将这个向量序列输入分类层进行槽标签预测,同时可以对向量序列进行pooling操作,得到表征意图的向量,再输入分类层进行意图预测。神经网络可以使用CNN,RNN、LSTM或者transformer,如图6所示。

    图6 领域分类、意图分类和槽抽取的联合模型

     

    上面的模型将领域、意图看作多分类任务,槽抽取看作标签序列预测。还有一些模型将槽抽取看作标签序列预测,而领域和意图作为序列最后的标签进行预测。

     

    假设w0, w1, w2,…, wn-1是句子的输入序列,y1, y2,…, yn-1是要预测的标签序列,而最后一个输入wn为"EOS" ( 结束符 ),对应的输出是"d_i",即意图和领域相结合的标签。

    图7 领域分类、意图分类和槽抽取的联合模型,将领域和意图作为预测序列的一部分

     

    联合模型还有一些变体,认为intent向量 ( intent向量指表征句子意图的向量,是意图分类层的输入 ) 和slot向量 ( slot向量指表征slot的向量,是slot分类层的输入 ) 之间可以有更多的交互。因此会在得到的slot向量中加入intent向量,形成新的slot向量,然后对其进行槽标签分类。同理,在得到的intent向量中加入slot向量,形成新的intent向量,然后再对其进行意图分类。这样会更好地将两个任务的信息进行交互,提升模型预测能力。

    图8 联合模型变体

     

    04、总结

    目前工业界的主流方法是规则+模型。规则方法开发相对简单,可以快速覆盖大部分用户输入;模型方法通过标注数据和训练模型,可以在规则方法的基础上解决长尾输入。而对于文章开头提到的几个难点:语言的复杂性,规则系统可以通过配置模板解决部分问题,统计模型也可以将其中主要的意图和槽抽取出来;对于语言的随意性,规则系统可以通过配置解决部分问题,统计模型也可以接受一定程度上的随意输入;对于语言的鲁棒性,目前统计模型有一定的容错能力;对于语言的歧义性,规则和模型都无法很好地解决,即使由人来判定,也不能准确地判定用户的意图,这时就需要借助更多的信息,如用户的多轮交互信息来解决。总之,目前的任务型对话系统的自然语言理解,还存在很多未解的问题,未来需要我们更多的研究和探索,去更好地理解用户的输入内容。

     

    05、参考资料

    1. Xiaojie Wang, Caixia Yuan, Recent Advances on Human-Computer Dialogue, CAAI Transactions on Intelligence Technology, Volume 1, Issue 4, 2016, Pages 303-312.

    2. Horvitz, E., & Paek, T.(1999). A computational architecture for conversation. Courses and Lectures International.

    3. Jeong M, Lee G G. Jointly predicting dialog act and named entity for spoken language understanding[C]//Spoken Language Technology Workshop, 2006. IEEE. IEEE, 2006: 66-69.

    4. Henderson M, Gašić M, Thomson B, et al. Discriminative spoken language understanding using word confusion networks[C]// Spoken Language Technology Workshop. IEEE, 2012:176-181.

    5. Xu P, Sarikaya R. Joint intent detection and slot filling using convolutional neural networks[C]//Proceedings of the IEEE International Conference on Acoustics, Speech, and Signal Processing. 2014.

    6. Mesnil G, Dauphin Y, Yao K, et al. Using recurrent neural networks for slot filling in spoken language understanding[J]. IEEE/ACM Transactions on Audio, Speech, and Language Processing, 2015, 23(3): 530-539.

    7. Liu C, Xu P, Sarikaya R. Deep contextual language understanding in spoken dialogue systems[C]//Sixteenth annual conference of the international speech communication association. 2015.

    8. Liu, B., & Lane, I. Attention-Based Recurrent Neural Network Models for Joint Intent Detection and Slot Filling. Interspeech2016a.

    9. Liu B, Lane I. Joint online spoken language understanding and language modeling with recurrent neural networks[J]. arXiv preprint arXiv:1609.01462, 2016b.

    10. Bing Liu and Ian Lane. 2015. Recurrent neural network structured output prediction for spoken language understanding. In Proc. NIPS Workshop on Machine Learning for Spoken Language Understanding and Interactions.

    11. Raymond, Christian, and Giuseppe Riccardi. "Generative and discriminative algorithms for spoken language understanding." Eighth Annual Conference of the International Speech Communication Association. 2007.

    12. Chen Y N, Hakkani-Tür D, Tür G, et al. End-to-End Memory Networks with Knowledge Carryover for Multi-Turn Spoken Language Understanding[C]//INTERSPEECH. 2016: 3245-3249.

    13. Hakkani-Tür D, Tür G, Celikyilmaz A, et al. Multi-Domain Joint Semantic Frame Parsing Using Bi-Directional RNN-LSTM[C]//Interspeech. 2016: 715-719.

    14. Shi Y, Yao K, Chen H, et al. Contextual spoken language understanding using recurrent neural networks[C]//Acoustics, Speech and Signal Processing (ICASSP), 2015 IEEE International Conference on. IEEE, 2015: 5271-5275.

    15. Guo D, Tur G, Yih W, et al. Joint semantic utterance classification and slot filling with recursive neural networks[C]//Spoken Language Technology Workshop (SLT), 2014 IEEE. IEEE, 2014: 554-559.

    16. Yu S, Shen L, Zhu P C, Chen J S. ACJIS: A Novel Attentive Cross Approach For Joint Intent Detection And Slot Filling. IJCNN 2018: 1-7.

    17. 自然语言理解-从规则到深度学习,http://www.sohu.com/a/164124053_729525


    更多精彩内容请访问FlyAI-AI竞赛服务平台;为AI开发者提供数据竞赛并支持GPU离线训练的一站式服务平台;每周免费提供项目开源算法样例,支持算法能力变现以及快速的迭代算法模型。

    挑战者,都在FlyAI!!!

    展开全文
  • 个性化教育中的自然语言理解和生成 浏览器搜索智能问答的探索与实践 基于兴趣点图谱的内容理解 预训练模型的探索和应用 NLP技术在搜索推荐中的应用 酒店搜索相关性建设 智能语音交互中的无效query识别 实时语音对话...
  • 自然语言理解 自然语言处理—发展历程 《人工智能应用基础》 CONTENTS 内 容 01 自然语言处理发展历程 《人工智能应用基础》 什么是自然语言处理,自然语言处理的萌芽期、发展期、爆发期及发展现状。 《人工智能应用...
  • 本文分享主题:Faiss和bert提供的模型实现了一个中文问答系统。旨在提供一个用Faiss结合各种AI模型实现语义相似度匹配的解决方案。


    更多视频学习内容: https://edu.csdn.net/lecturer/894?spm=1003.2001.3001.4144

    0 开篇介绍

    问答系统是自然语言处理领域一个很经典的问题,它用于回答人们以自然语言形式提出的问题,有着广泛的应用。

    经典应用场景包括:智能语音交互、在线客服、知识获取、情感类聊天等。

    常见的分类有:生成型、检索型问答系统;单轮问答、多轮问答系统;面向开放领域、特定领域的问答系统。

    本文涉及的主要是在检索型、面向特定领域的问答系统**——智能客服机器人。**

    传统客服机器人的搭建流程

    通常需要将相关领域的知识(Domain Knowledge),转化为一系列的规则和知识图谱。构建过程中重度依赖“人工”智能,换个场景,换个用户都需要大量的重复劳动。

    图片

    深度学习-智能问答机器人

    深度语言模型会将问题和文档转化为语义向量从而找到最后的匹配答案。本文借助Google开源的Bert模型结合Faiss开源向量搜索引擎,快速搭建基于语义理解的对话机器人。

    案例分享:FAQ问答机器人

    FAQ是Frequently Asked Questions的简称。假定我们有一个常见问题和答案的数据库,现在用户提出了一个新问题,能不能自动从常见问题库中抽取出最相关的问题和答案来作答呢?在这个项目中,我们会探索如何构建这样问答机器人。

    项目核心技术点:

    • 通过深度学习模型判断问题与答案的匹配得分
    • 使用BERT模型特征提取并判断问题相似度
    • 使用检索引擎Faiss索引构建和检索
    • 构建在线FAQ问答系统

    0-1 学什么

    结合Faiss和bert提供的模型实现了一个中文问答系统。旨在提供一个用Faiss结合各种AI模型实现语义相似度匹配的解决方案。最后通过项目案例实现:文本语义相似度文本检索系统和FAQ问答机器人。

    图片

    0-2 在线系统DEMO

    • 文本语义相似度匹配检索
    • 文本语义FAQ问答机器人

    项目实现以一种平台化思路建议系统,是一个通用的解决方案。开发者只需要按照数据规范即可,不需要修改代码就可以运行系统了

    1 对话系统整体简介

    1-1 对话系统概念

    对话系统可以根据人的输入自动选择或者生成出相应的回复,来达到帮助人们在特定领域或者开放域解决一定的问题。(最后,通过医疗数据提供FAQ智能问答: aiwen2100)

    • 用途:任务型、问答型、闲聊型对话系统;
    • 场景:封闭域、开放域对话系统;
    • 使用方法:检索式、生成式对话系统

    1-1-1 不同对话任务对比

    • 问答型(案例:提供基于文本语义-bert 和 faiss 的通用解决方案)

    用户希望得到某个问题的答案,机器人回复来自于特定知识库,以特定的回复回答用户

    • 任务型

    用户希望完成特定任务,机器人通过语义执行后台已对接能力,帮用户完成指定任务

    • 闲聊型

    用户没有明确目的,机器人回复也没有标准答案,以趣味性的回复回答用户

    图片

    图片

    1-1-2 检索式对话系统

    基于检索的模型不会产生新的文字,只能从预先定义的“回答集”中挑选出一个较为合适的回答。

    • 缺点

    检索式对话系统不会产生新的回复,其能够回复类型与内容都由语料库所决定。一旦用户的问话超脱了语料库的范围,那么对话系统将无法准确回答用户。

    • 优点

    相对严谨可靠,可控性强,不会回复令人厌恶或违法法规的文本。

    一般处理流程:

    1.问答对数据集的清洗

    2.Embedding(tfidf,word2ec,doc2vec,elmo,bert…)

    3.模型训练

    4.计算文本相似度

    5.在问答库中选出与输入问题相似度最高的问题

    6.返回相似度最高的问题所对应的答案

    图片

    1-1-3 生成式对话系统

    基于自然语言理解生成式对话策略:即通过机器学习算法构建深层语义模型,结合句词分析

    等统计规律提取特征,让模型从大量的已有对话中学习对话规则,利用训练好的模型预测结果。

    • 缺点

    评估问题,需要依赖人工评定;生成内容,控制不好会回复令人厌恶或违反法规的文本。

    • 优点

    智能对话,回复内容丰富。

    图片

    1-1-4 任务型对话系统

    任务型对话的最终目标是完成指定任务,比如小度智能音箱,需要在每一轮对话都采取合适的决策,保证自己执行正确的指令(即识别出用户的正确意图)

    图片

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-r5W9MrmV-1606198473806)(https://uploader.shimo.im/f/iOwhzmol8N1oJdI5.png!thumbnail)]

    多轮对话是一种在人机对话中初步明确用户意图之后,获取必要信息以最终得到明确用户指令的方式。

    这里介绍一种对话管理的一种方式:Frame-Based Dialogue Control,预先指定了一张表格 (Frame),聊天机器人的目标就是把这张表格填满。

    图片

    通过一个实际场景的案例来解释上述实现具体执行过程:

    我:『去北京大兴机场多少钱』

    意图:行程花费计算

    槽位:【起始地:当前位置;目的地:北京大兴机场;使用货币:???】)

    智能客服:『您好,请问是使用人民币吗』

    我:『是的』

    意图:行程花费计算

    槽位:【起始地:当前位置;目的地:萧山机场;使用货币:人民币】)

    智能客服:『200元』

    1-2 对话系统关键技术

    1-2-1 相关工具

    1.编程语言:python( 模型 或者服务) ,C++,Java,go 在线服务

    2.数据处理及机器学习相关库:pandas、scikit-learn、jieba

    3.深度学习框架:tensorflow、pytorch

    4.开发工具:pycharm、visual studio code

    5.其它工具:ElasticSearch搜索引擎、向量检索引擎Faiss/Milvus

    1-2-2 检索式相关技术介绍

    1、分词算法

    • 传统算法:HMM隐马尔可夫模型、CRF条件随机场
    • 深度学习:LSTM、Bi-LTSM

    2、文本向量化表示

    OneHot 、N-Gram 、TFIDF等词袋模型、Word2Vec、Doc2Vec、Glove

    Bert(本案例文本向量化表示选择bert) 、XLNet等神经网络模型

    3、文本相似度计算(项目中:我们采用余弦相似度,计算得分)

    余弦相似度、欧式距离

    图片

    4、检索方法

    • ElasticSearch搜索引擎
    • 向量检索引擎Faiss(本项目采用,Facebook AI 研究院开源相似性的检索引擎,5000万 ms)

    1-2-3 生成式相关技术介绍

    闲聊系统

    1、Seq2Seq模型

    2、Seq2Seq + Attention模型

    3、Transformer

    4、Bert模型

    图片

    1-2-4 任务型相关技术介绍

    重要,在我们实际工作中,很多场景都会用到

    1、意图识别

    2、填槽、对话管理

    3、多轮对话

    图片

    分类

    NER识别

    多伦对话(模型,规则。。。。)

    1-3 智能客服调研分析

    客服机器人指帮助客服回答问题提高人工客服效率的机器人。客服机器人可以用于回答客户的常规、重复性的问题,但不是替代,而是辅助人工服务,改变客服工作的模式,进一步提高客服工作效率。

    图片

    1-3-1 调研分析

    纯机器人完全替代客服的并不多,人机结合模式使用广泛。分析一下主要有以下几个原因:

    1、机器人响应速度快,且可同时接待多位客户,而且客户不需要等待;

    2、机器人替代人工处理咨询中的重复问题,人工客服不易陷入烦躁情绪,客户体验好;

    3、遇到复杂问题,人机结合模式可以无缝切换人工来处理,顾客体验不会中断。

    1-3-2 智能客服的优势

    1、机器人可以7 X 24 小时在线服务,解答客户的问题。

    2、常问的问题,重复的问题都可以交给机器人来自动回复,省去很多重复的输入及复制粘贴。

    3、可以辅助人工客服,在人工服务的时候,推荐回复内容,并学习人工客服的回复内容。

    1-3-3 如何设计智能客服系统

    1、时间特性要求。系统极限相应时间到底是多少

    2、灵活性。系统的各个模块应该在可控的状态内,每一个模块可插拔,保证线上质量。

    3、安全性。内外网隔离,注意网络完全,系统安全,用户安全,数据安全。

    4、可扩展性:系统的各个模块支持扩展,支持跨平台,支持多种语言,算法模型可以灵活切换。

    5、可靠性:系统和集群稳定运行,主要的集群实现双机热备;实现灾备;当单个节点发生故障可以迅速切换。

    6、可用性:系统的各项功能可用,系统上线必须符合一定的正确率

    1-4 阿里小蜜介绍

    https://blog.csdn.net/qq_40027052/article/details/78672907

    1-4-1 智能客服发展阶段

    • 传统的服务模式

    图片

    • 经典的服务模式

    图片

    • 智能问答服务模式

    图片

    1-4-2 人机交互基本流程

    阿里巴巴于2015年7月推出了阿里小蜜产品,在面世的仅仅几年中,阿里小蜜发展之迅速令人难以想象。阿里小蜜给出了一个典型的智能对话系统的架构。

    图片

    自然语言处理(NLP)是对话系统的核心部分

    • 智能问答模块用来完成问答类任务(FAQ问答系同,可以基于语义匹配检索来完成)
    • 智能聊天用来完成闲聊类任务
    • 对话系统自然语言理解采用的是frame semantics 表示的一种变形,即采用领域(domain)、意图(intent)和属性槽(slots)来表示语义结果

    图片

    2 应用场景介绍

    CSDN 问答系统:https://ask.csdn.net/

    百度知道:https://zhidao.baidu.com/

    360问答:https://wenda.so.com/search/

    2-2 文本搜索场景

    图片图片

    2-3 论坛相似问答系统

    汽车之家拥有全球最大的汽车社区论坛。积累了丰富的用户问答数据,能够解决用户在看车、买车、用车等方面遇到的各种问题。针对用户在平台上提出的各种问题,从海量的高质量问答库中匹配语义最相似的问题和答案

    文本数据具有表达多样化、用语不规范(如:车型车系用语存在大量缩写、简写、语序颠倒等现象)、歧义性强(如:“北京”可能指汽车品牌,也可能指城市)等特点,这给传统基于关键词匹配的搜索方法带来了很大挑战。因此,在传统关键词匹配的基础上,进一步引入语义搜索技术,将精华问答库的问题映射为多维向量,进行语义匹配,提升问题匹配准确性。

    图片

    2-4 智能对话闲聊系统

    数据格式: query-answer 对如下

    不要骂人 好的,听你的就行了

    不要骂人严重的直接禁言 好的,听你的就行了

    不要骂人了吧 好的,听你的就行了

    不要骂人哦 好的,听你的就行了

    不要骂人小心封号啊 好的,听你的就行了

    不认识你不记得你 你当我傻逼啊

    不认识你昂 你当我傻逼啊

    不认识你老哥了 你当我傻逼啊

    3 问答系统发展现状

    FAQ检索型问答流程是根据用户的新Query去FAQ知识库找到最合适的答案并反馈给用户。

    检索过程如图所示

    图片

    其中,Qi是知识库里的标准问,Ai是标准问对应的答案。

    具体处理流程为:

    • 候选集离线建好索引
    • 线上收到用户 query ,召回一批候选集作为粗排结果传入下一模块进行进一步精确排序;
    • 利用matching模型计算用户query和FAQ知识库中问题或答案的匹配程度;
    • 利用ranking 模型对候选集做 rerank 并返回 topk个候选答案。
      • matching 模型负责对 (query, reply) pair 做特征匹配,其输出的 matching score 通常会作为 ranking 模型的一维特征;
      • ranking 模型负责具体的 reranking 工作,其输入是候选回复对应的特征向量,根据实际需求构造不同类型(如:pointwise, pairwise, listwise)的损失函数,其输出的 ranking score 是候选回复的最终排序依据。
      • 有些检索系统可能不会明确区分 matching 和 ranking 这两个过程。

    3-1 智能问答常用解决方案

    针对FAQ检索式问答系统,一般处理流程

    • 问答对数据集的清洗
    • Embedding
    • 模型训练
    • 计算文本相似度
    • 在问答库中选出与输入问题相似度最高的问题
    • 返回相似度最高的问题所对应的答案

    搭建一个FAQ问答系统一般实现方法

    • 基于ES的智能问题系统

    (通过关键词匹配获取答案,类似电商、新闻搜索领域关键词召回)

    • 基于TF-IDF方式

    (计算每个单词的tfidf数值,分词后换算句子表示。 TF-IDF 方式也在用在关键词提取)

    • 基于Doc2Vec 模型(考虑词和段,相比于word2vec来说有了段落信息)
    • 通过深度学习语言模型bert 提取向量,然后计算相似度

    方案可以扩展到的业务需求(本文介绍的是一种文本语义匹配通用解决方案)

    • 智能客服领域语义匹配

    (对话系统检索式智能问答系统,答案在知识库中且返回唯一的数据记录)

    • 以图搜索(resnet 图片向量化表示)
    • 新闻领域文本相似推荐(相似新闻推荐等)
    • 基于文本语义匹配检索系统(文本相似性rank )

    针对这类问题,重点文本等通过某种方式进行向量化表示(word2vec、doc2vec、elmo、bert等),然后把这种特征向量进行索引(faiss/Milus) ,最终实现在线服务系统的检索,然后再通过一定的规则进行过滤,获取最终的数据内容。

    3-2 传统文本匹配方法存在问题

    传统的文本匹配技术有BoW、VSM、TF-IDF、BM25、Jaccord、SimHash等算法,主要解决字面相似度问题。

    面临的困难:

    由 于中文含义的丰富性,通常很难直接根据关键字匹配或者基于机器学习的浅层模型来确定两个句子之间的语义相似度。

    3-3 深度学习文本匹配

    深度学习模型文本做语义表示逐渐应用于检索式问答系统。

    相比传统的模型优点:

    • 能够节省人工提取特征的大量人力物力
    • 从大量的样本中自动提取出词语之间的关系,并能结合短语匹配中的结构信息和文本匹配的层次化特性,发掘传统模型很难发掘的隐含在大量数据中含义不明显的特征

    本文采用相似问题匹配来实现一个FAQ问答系统。

    问题:什么是相似问题匹配?

    答案:即对比用户问题与现有FAQ知识库中问题的相似度,返回用户问题对应的最准确的答案

    深度语义匹配模型可以分为两大类,分别是representation-based method 和 interaction-based method,这里我们针对Represention-based Method这种方法进行探索。

    图片

    这类算法首先将待匹配的两个对象通过深度学习模型进行表示,之后计算这两个表示之间的相似度便可输出两个对象的匹配度。针对匹配度函数f(x,y)的计算通常有两种方法: cosine 函数 和 多层感知器网络(MLP)

    图片

    对比两种匹配方法的优缺点

    * cosine 函数:通过相似度度量函数进行计算,实际使用过程中最常用的就是 cosine 函数,这种方式简单高效,并且得分区间可控意义明确
    * 多层感知器网络(MLP):将两个向量再接一个多层感知器网络(MLP),通过数据去训练拟合出一个匹配度得分,更加灵活拟合能力更强,但对训练的要求也更高
    

    4 问答系统关键技术

    Google 的 BERT 模型在 NLP 领域中具有巨大的影响力。它是一个通用的语言表示模型,可以应用于诸多领域。本文的项目是将 Faiss与 BERT 模型结合搭建文本语义匹配检索系统,使用 BERT 模型将文本数据转成向量,结合 Faiss特征向量相似度搜索引擎可以快速搜索相似文本,最终获取想要的结果

    4-1 Faiss

    Faiss是Facebook AI团队开源的针对聚类和相似性搜索库,为稠密向量提供高效相似度搜索和聚类,支持十亿级别向量的搜索,是目前最为成熟的近似近邻搜索库。它包含多种搜索任意大小向量集(备注:向量集大小由RAM内存决定)的算法,以及用于算法评估和参数调整的支持代码。Faiss用C++编写,并提供与Numpy完美衔接的Python接口。除此以外,对一些核心算法提供了GPU实现。相关介绍参考《Faiss:Facebook 开源的相似性搜索类库

    图片

    4-2 BERT

    BERT 模型是 Google 发布的一个新的语言表达模型(Language Representation Model),全称是 Bidirectional Encoder Representations from Transformers,即双向编码表征模型。BERT 模型的优势体现在两方面。

    • 一方面,它使用基于特别设计的注意力机制(Attention Mechanism)的简单全连接网络取代了复杂的 CNN 和 RNN 网络。不但大大减少了训练时间,同时有效地提升了网络性能。
    • 另一方面,BERT 模型是第一个真正捕获上下文语义信息的预训练语言表示模型。这是因为 BERT 模型使用了 Transformer 作为算法的主要框架,而 Transformer 框架能更彻底地捕捉语句中的双向关系。

    图片

    Google 提供了一些预先训练的模型,其中最基本的两个模型是BERT-base 模型和 BERT-large 模型。具体参数如下表所示:

    图片

    BERT-base 模型和 BERT-large 模型的参数总量大小和网络层数不同,BERT-large 模型所占计算机内存较多,所以本文项目选用 BERT-base 模型对文本数据进行向量转化。(注:其中,层数(即 Transformer 块个数)表示为 L,隐藏尺寸表示为 H ,自注意力头数表示为 A 。)

    5 问答系统实现

    关于main.py 主要参数

    $ python main.py --help

    usage: main.py [-h] --task TASK [–load] [–index] [–n_total N_TOTAL]

    [–search] [–sentence SENTENCE] [–topK TOPK]

    optional arguments:

    -h, --help show this help message and exit

    –task TASK project task name

    –load load data into db

    –index load data text vector into faiss

    –n_total N_TOTAL take data n_sample ,generate it into faiss

    –search search matched text from faiss

    –sentence SENTENCE query text data

    –topK TOPK take matched data in topK

    第一步:知识库存储 < id,answer>

    $ python main.py --taskmedical–load

    第二步:索引构建<id,question>

    $ python main.py --taskmedical–index --n_total 120000

    第三步:文本语义相似度匹配检索

    $ python main.py --taskmedical_120000–search --sentence 得了乙肝怎么治疗

    备注:medical_120000中task_${索引记录数} 组合

    完成上述功能后,我们可以在此基础上,根据业务不同搭建一些相关应用,例如:

    • 可以实现FAQ智能问答
    • 可以实现新闻资讯内容类文本语义匹配召回
    • 可以实现基于文本语义的中文检索系统

    第四步:基于文本语义检索服务实现FAQ问答

    $ python main.py --taskmedical_120000–search --sentence 身上出现 --topK 10

    第五步:基于文本语义检索服务Web服务

    启动服务python app.py --taskmedical_120000,然后访问地址http://xx.xx.xx.xx:5000/

    我们这里呢,使用上述基础服务完成一个FAQ问答机器人

    5-1 数据规范

    项目数据集包含三个部分:问题数据集+答案数据集+问题-答案唯一标识,数据是一一对应的。

    图片

    针对不同的业务系统,我们只需要提供这种数据格式,通过本文的模板就可以快速搭建一个demo了,祝大家学习愉快。

    5-2 系统整体架构

    本文的文本语义匹配搜索项目使用的 Faiss和BERT的整体架构如图所示:

    图片

    (注:深蓝色线为数据导入过程,橘黄色线为用户查询过程。)

    • 首先,本文项目使用开源的 bert-serving , BERT做句子编码器,标题数据转化为固定长度
    • 为 768 维的特征向量,并导入 Milvus 或者Faiss库。
    • 然后,对存入 Milvus/Faiss 库中的特征向量进行存储并建立索引,同时原始数据提供唯一ID编码,将 ID 和对应内容存储在 PostgreSQL 中。
    • 最后,用户输入一个标题,BERT 将其转成特征向量。Milvus/Faiss 对特征向量进行相似度检索,得到相似的标题的 ID ,在 知识库(PostgreSQL/MySQL/SQLite。。。) 中找出 ID 对应的详细信息返回

    6-3 文本向量服务 bert-serving

    使用bert as service 服务

    第一步:安装tensorflow

    Python >= 3.5

    Tensorflow >= 1.10 (one-point-ten)

    ubuntu系统-gpu下载离线安装文件并pip安装

    tensorboard-1.15.0-py3-none-any.whl

    tensorflow_estimator-1.15.1-py2.py3-none-any.whl

    tensorflow_gpu-1.15.3-cp37-cp37m-manylinux2010_x86_64.whl

    也可以通过下面的方式快速下载(这里下载cpu版本)

    pip install tensorflow==1.15.0 --user -ihttps://pypi.tuna.tsinghua.edu.cn/simple

    验证是否安装

    import tensorflow as tf

    print(tf.version)

    第二步:bert-serving 服务搭建

    ( 我们在ubuntu系统搭建完成bert-serving ,目录:/home/ubuntu/teacher/ )

    通过bert-serving服务,帮助我们解决:文本-> 向量的转换

    1、参考github 提供的代码

    git clonehttps://github.com/hanxiao/bert-as-service.git

    2、安装server和client

    pip install bert-serving-server # server

    pip install bert-serving-client # client, independent of bert-serving-server

    3、下载pretrained BERT models

    Chinese Simplified and Traditional, 12-layer, 768-hidden, 12-heads, 110M parameters

    https://storage.googleapis.com/bert_models/2018_11_03/chinese_L-12_H-768_A-12.zip

    解压模型:

    chinese_L-12_H-768_A-12

    ├── bert_config.json

    ├── bert_model.ckpt.data-00000-of-00001

    ├── bert_model.ckpt.index

    ├── bert_model.ckpt.meta

    └── vocab.txt

    bert_config.json: bert 模型配置参数

    vocab.txt: 字典

    bert_model: 预训练的模型

    4、启动bert-service

    nohup bert-serving-start -model_dir chinese_L-12_H-768_A-12 -num_worker 1 -max_seq_len 64 >start_bert_serving.log 2>&1 &

    ( CPU和GPU 模式都可以 )

    针对每个字段进行说明

    workers = 4 表示同时并发处理请求数

    model_dir 预训练的模型

    max_seq_len 业务分析句子的长度

    关闭服务

    bert-serving-terminate -port 5555

    5、测试文本-> 向量表示结果

    from bert_serving.client import BertClient
    bc = BertClient()
    result = bc.encode(['First do it'])
    print(result)
    

    5-4 向量相似度搜索引擎

    产品学习手册

    5-5 知识库存储

    知识库:可以存储mongo/PostgreSQL/mysql 根据数据量进行选择

    本文给大家分享的内容,数据存储在mysql上。

    备注:关于mysql 的具体安装,大家去上网查找一下。(root,12345678)

    大家在学习过程中,如果有任何的问题:可以网站留言(或者weixin: aiwen2100)

    create database faiss_qa;

    use faiss_qa;

    CREATE TABLE answer_info (

    id int(11) NOT NULL AUTO_INCREMENT,

    answer mediumtext COLLATE utf8mb4_bin,

    PRIMARY KEY (id),

    KEY answer_info_index_id (id)

    ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;

    5-6 索引构建

    $ python main.py --taskmedical–index --n_total 120000

    5-7文本语义相似度匹配搜索

    $ python main.py --task medical --search --sentence 小安信贷

    完成上述功能后,我们可以在此基础上,根据业务不同搭建一些相关应用,例如:

    • 可以实现FAQ智能问答
    • 可以实现新闻资讯内容类文本语义匹配召回
    • 可以实现基于文本语义的中文检索系统

    对输入数据微小的差别看看有什么不同?

    图片

    5-8文本语义FAQ问答机器人-API接口

    首先,我们启动服务:python app.py

    然后,请求API 服务地址查看检索检索


    $ curl -H “Content-Type:application/json” -X POST --data '{“query”: “乙肝怎么治疗”}'http://localhost:5000/api/v1/search| jq

    5-9文本语义FAQ问答机器人-Web界面

    启动服务 python app.py,然后访问地址http://xx.xx.xx.xx:5000/

    用户表达的细微差别,通过文本语义匹配总之能找到最佳的答案,最终反馈给用户。

    例如: 两种语言表达看看效果

    第一句: 小孩子感冒吃什么

    第二句: 小孩子感冒不能吃什么

    上述明显表达的是两个含义,而通过文本语义的方式也很好得识别出来了,效果还不错。

    图片图片

    我们看看后端服务地址数据

    图片

    注意:FAQ系统依赖bert-serving 服务,请确认正常工作。

    [http://xx.xx.xx.xx:5000/status
    正常情况下的返回结果格式如下:

    {

    “status”:“success”,

    “ip”:“127.0.0.1”,

    “port”:5555,

    “identity”:“cbc94483-1cd6-406d-b170-0cb04e77725bb”

    }

    6 总结展望

    在 AI 高速发展的时代,我们可以使用深度学习模型去处理各种类型的非结构化数据,例如图片、文本、视频和语音等。本文项目通过 BERT 模型可以将这些非结构化数据提取为特征向量,然后通过Faiss 对这些特征向量进行计算,实现对非结构化数据的分析与检索。

    本文利用Faiss搭建的FAQ问答系统也只是其中一个场景,展示了Faiss在非结构化数据处理中的应用。欢迎大家导入自己的数据建立自己的FAQ问答系统(或者文本搜索、智能客服等新系统)。Faiss向量相似度检索引擎搜索十亿向量仅需毫秒响应时间。你可以使用 Faiss探索更多 AI 用法!

    最后,大家有任何问题,欢迎留言交流(WX:vxaiwen),大家一起交流经验。

    展开全文
  • 自然语言理解 自然语言处理—基本任务 《人工智能应用基础》 CONTENTS 内 容 02 自然语言处理基本任务 《人工智能应用基础》 中文文本分词、文本表示和命名实体识别 中文文本中词与词之间没有明确的分割标记,而是以...
  • 摘要意图识别智能问答知识推理信息抽取语义表示情感分析内容生成机器翻译句子级 中文分词文本分类句法结构分析字词级指代消解词义消歧目录基本情况技术体系关键技术未来发
  • 3-5 个性化教育中的自然语言理解和生成 4-1 QQ浏览器搜索智能问答的探索与实践 4-2 基于兴趣点图谱的内容理解 4-3 美团预训练模型的探索和应用 4-5 贝壳找房NLP技术在搜索推荐中的应用 4-6 飞猪旅行酒店搜索...
  • Clause 是 Chatopera 团队自主研发及使用其他商业友好的开源软件的方式实现的,Clause 为实现聊天机器人提供强大的大脑,包括客服、智能问答和自动流程服务。Clause 利用深度学习,自然语言处理和搜索引擎技术,让...
  • 自然语言理解 自然语言理解拓展 《Python核心技术》 2012年, 谷歌提出了知识图谱的概念。 知识图谱(knowledge graph) 是以图的形式表现客观世界中的实体(概念、人、事物) 及其之间关系的知识库。 知识图谱 《人工...
  • 自然语言理解与“智能”一样,存在各种各样的理解和解释,是利用计算机对自然语言进行理解。 自然语言理解的准则:给计算机输入一段自然语言为本,如果计算机能问答——计算机能正确地回答输入文本中的有关问题; ...
  • 自然语言处理包括自然语言理解(NLU)和自然语言生成(NLG)。 自然语言理解是将文本语言转化成计算机可以表示并理解的信息。 自然语言生成是将计算机的语言理解成人类所熟悉的自然语言。 问答系统的发展历程可以分为三...
  • NLP 自然语言分析理解

    千次阅读 2022-04-24 10:25:12
    NLP 有两个核心子集,自然语言理解 (NLU) 和自然语言生成 (NLG)。前者将人类语言转换为机器可读的格式以进行 AI 分析。分析完成后,NLG 会生成适当的响应,并以相同的语言将其发送回人类用户 NLP面向语言理解、语言...
  • 人工智能自然语言处理初探

    千次阅读 2020-07-15 12:48:51
    编辑导读:自然语言处理是人工智能的一个细分领域,是一个庞大的系统的工程。本文将从自然语言处理的简介、句法分析、发展现状、话语分割、知识体系、指代消解六个方面展开分析,希望对你有帮助。 最近在梳理...
  • 人工智能:第十一章 自然语言理解

    千次阅读 2015-12-08 09:14:56
    自然语言理解 教学内容:自然语言理解的一般概念、句法和语法的自动分析原理、句子的自动理解方法和语言的自动生成等。 教学重点:句法模式匹配、语义的分析、句子的自动理解和语言的自动生成。 教学难点:转移...
  • 感知自然语言理解(NLU)

    千次阅读 2019-03-03 21:36:00
    自然语言是人类的智慧,自然语言处理(NLP)是AI中最为困难的问题之一,而自然语言理解(NLU)也变成了一个主要的问题,充满了魅力和挑战。一介程序员,没有能力去做相关的研究,但是认知其中的一些基本概念,对于...
  • 机器阅读理解 | (1) 智能问答概述

    千次阅读 2020-02-04 21:27:59
    智能问答(QuestionAnswer,QA)旨在为用户提出的自然语言问题自动提供答案,得益于大数据、硬件计算能力提高(GPU、TPU)以及自然语言处理和深度学习技术的进步,近来年取得了飞速发展,其应用场景(如搜索引擎、智能语音...
  • 人工智能理论的自然语言理解,介绍的比较详尽,希望对大家有用
  • 自然语言处理之智能问答系统

    千次阅读 2018-05-29 08:49:49
    一、问答系统简介 二、搭建基于检索的问答系统 三、其他相似度计算 相关参考: 一、问答系统简介 问答系统通常分为任务型机器人、闲聊机器人和解决型机器人(客服机器人),三者的设计分别针对不同的应用场景。...
  • 基于知识图谱的问答系统答即根据一个问题,抽出一条三元组,生成类 sql 语句,知识图谱查询返回答案。本文是基于知识图谱的问答系统,通过 BERT+CRF 做命名实体识别和句子相似度比较,最后实现线上的部署。
  • 自然语言理解领域,自动问答和机器翻译、复述和文本摘要一起被认为是验证机器是否具备自然理解能力的四个任务。 自动问答系统在回答用户问题时,首先要正确理解用户所提出的问题,抽取其中关键的信息,在已有的...
  • 自然语言处理主要步骤包括: 分词(只针对中文,英文等西方字母语言已经用空格做好分词了):将文章按词组分开 词法分析:对于英文,有词头、词根、词尾的拆分,名词、动词、形容词、副词、介词的定性,多种词意的...
  • 自然语言处理NLP星空智能对话机器人系列:Transformer 101问答 [让天下没有难学的Transformer] 你问我答系列之一 Gavin大咖第一问: Transformer中的可训练Queries、Keys和Values矩阵从哪儿来? 以上是智华解答,...
  • 自然语言理解是体现机器智能的重要标志和应用,表现在智能问答,推荐搜索,人机协同,大规模知识图谱构建等商业和工业场景中机器是否能够准确的理解人类的文本和语义,从而
  • 人工智能-自然语言处理-知识解构

    千次阅读 2019-03-23 16:41:11
    2 自然语言理解,对话理解,知识获取和问答,任务理解; 3 底层的机器学习(TennsorFlow和other) 4 个性化信息的获取和利用; 其中两个重要的竞品分析: google的产品:各种语言场景; Alexa亚马逊产品:基于云计算...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 17,823
精华内容 7,129
关键字:

智能问答 自然语言理解