NLP知识包--语义分析&智能问答&工具

关于语义分析、智能问答的发展和技术介绍,以及语义分析工具的总结

概念

语义分析

语义分析(Semantic Analysis)指运用各种机器学习方法,学习与理解一段文本所表 示的语义内容。

一段文本通常由词、句子和段落来构成,根据理解对象的语言单位不同,语义分析又可 进一步分解为词汇级语义分析、句子级语义分析以及篇章级语义分析。一般来说,词汇级语 义分析关注的是如何获取或区别单词的语义,句子级语义分析则试图分析整个句子所表达的 语义,而篇章语义分析旨在研究自然语言文本的内在结构并理解文本单元(可以是句子从句 或段落)间的语义关系。

词汇级-词义消歧

词义消歧根据一个多义词在文本中出现的上下文 环境来确定其词义,作为各项自然语言处理的基础步骤和必经阶段被提出来。词义消歧包含 两个必要的步骤:(1)在词典中描述词语的意义;(2)在语料中进行词义自动消歧。例如“苹 果”在词典中描述有两个不同的意义:一种常见的水果;美国一家科技公司

词义消歧主要面临如下两个关键问题:(1)词典的构建;(2)上下文 的建模。

词汇级-词义表示和学习

One-hot
这种方法把每个词表示为一个很长的向量。这 个向量的维度是词表大小,其中绝大多数元素为 0,只有一个维度的值为 1,这个维度就代表了当前的词。

Word Embedding
通过训练将某种语言中的每一个词映射成一个固定维数的向量,将所 有这些向量放在一起形成一个词向量空间,而每一向量则可视为该空间中的一个点,在这个 空间上引入“距离”,则可以根据词之间的距离来判断它们之间的(词法、语义上的)相似性。

句子级-浅层语义分析

语义角色标注(Semantic Role Labeling,简称 SRL)是一种浅层的语义分析。给定一个 句子,SRL 的任务是找出句子中谓词的相应语义角色成分,包括核心语义角色(如施事者、 受事者等)和附属语义角色(如地点、时间、方式、原因等)。根据谓词类别的不同,又可 以将现有的 SRL 分为动词性谓词 SRL 和名词性谓词 SRL。

浅层语义分析主要围绕着句子中的谓词,为每个谓词找到相应的语义角色

句子级-深层语义分析

深层的语义分析(有时直接称为语义分析,Semantic Parsing)不再以谓词 为中心,而是将整个句子转化为某种形式化表示,例如:谓词逻辑表达式(包括 lambda 演 算表达式)、基于依存的组合式语义表达式(dependency-based compositional semantic representation)等 。

以下给出了 GeoQuery 数据集中的一个中英文句子对,以及对应的一 阶谓词逻辑语义表达式:
中文: 列出在科罗拉多州所有的河流
英文: Name all the rivers in Colorado
语义表达式: answer(river(loc_2(stateid(‘colorado’))))

深度语义分析主要面临如下二个关键问题。

  • 普通文本到实体/关系谓词之间的映射。自然语言的一个主要特点在于其表达形式 的丰富多样性,对同样的表达意思(如某个语义表达式),不仅可以使用不同的语 言进行表达。如何建立普通文本到实体/关系之间的映射是一个关键问题。
  • 面向开放领域的语义分析。受标注语料的限制,目前的很多语义分析研究都限于 某一特定领域。随着面向开放领域的知识库的构建及完善,如 Freebase 等,人工 大规模标注涉及各领域的语义表达式是个费时费力的过程。为此,需要探索基于半 监督或无监督的语义分析研究

技术

智能问答

根据目标数据源的不同,已有自动问答技术大致可以分为三类:1)检索式问答;2)社区问答; 3)知识库问答。

知识库问答
检索式问答和社区问答尽管在某些特定领域或者商业领域有所应用,但是其核心还是关 键词匹配和浅层语义分析技术,难以实现知识的深层逻辑推理,无法达到人工智能的高级目标。因此,近些年来,无论是学术界或工业界,研究者们逐步把注意力投向知识图谱或知识库(Knowledge Graph)。其目标是把互联网文本内容组织成为以实体为基本语义单元(节点) 的图结构,其中图上的边表示实体之间语义关系。目前互联网中已有的大规模知识库包括 DBpedia、Freebase、YAGO 等。这些知识库多是以“实体-关系-实体”三元组为基本单元所 组成的图结构。基于这样的结构化知识,问答系统的任务就是要根据用户问题的语义直接在知识库上查找、推理出相匹配的答案,这一任务称为面向知识库的问答系统或知识库问答。

要完成在结构化数据上的查询、匹配、推理等操作,最有效的方式是利用结构化的查询 语句,例如:SQL、SPARQL 等。然而,这些语句通常是由专家编写,普通用户很难掌握并正 确运用。对普通用户来说,自然语言仍然是最自然的交互方式。因此,如何把用户的自然语 言问句转化为结构化的查询语句是知识库问答的核心所在,其关键是对于自然语言问句进行 语义理解(如图 1 所示)。目前,主流方法是通过语义分析,将用户的自然语言问句转化成
结构化的语义表示,如 范式和 DCS-Tree。相对应的语义解析语法或方法包括组合范畴语法 (Category Compositional Grammar, CCG)以及依存组合语法(Dependency-based Compositional Semantics, DCS)等。
NLP知识包--语义分析&智能问答&工具_第1张图片
图1 知识库问答过程

基于知识库智能问答技术现状

在知识库问答方面,已有的评测主要针对于一些限定领域的知识库进行问答。已有方法 也取得了不错的结果。例如:在 Geoquery13(美国地理知识查询)数据集上(600 个训练样 本,280 个测试样本)上,使用 CCG 和本体匹配的方法 F 值能达到 89.0%,使用 DCS 的方法 F 值能达到 91.1%;在求职(JOBS)数据集上(500 个训练样本,140 个测试样本),使用 CCG 的方法 F 值能达到 79.3%,使用 DCS 的方法 F 值能达到 95%。在这一方面,QALD(Question Answering over Linked Data)评测的举办更是推动了这方面的研究。QALD 每年举办一届, 目前已经举办到了第六届。每一次评测,组织者都会给出一些问题,要求参加评测系统在给 定知识库的基础上,将所给问题转化为结构化的 SPARQL 查询语句,并在给定知识库上查询 答案。但是,目前的研究趋势是从限定领域的知识库向大规模开放域甚至是多领域知识库进 行扩展,例如 Freebase。与限定领域知识库相比,大规模开放知识库包含的资源和关系数 量要大得多,比如 Geoquery 中只包含 8 个关系谓词,而 Freebase 包含上万个关系。因此开 放知识库上的语义解析效果有明显下降。例如利用 Freebase 知识库,开放查询测试的最好 效果只有 39.9%;而在 QALD 评测中,在 DBpedia 上、开放查询中,表现最好的问答系统的 正确率只有 40%。下图给出在面对开放域知识库 Freebase 时,在公开问题库 WebQuestion 上,已有系统能够达到的精度。
NLP知识包--语义分析&智能问答&工具_第2张图片
图 2 已有知识库问答方法在 WebQuestion 问题集上的性能

语义分析工具

  • BosonNLP (官网链接)
    BosonNLP功能如下图NLP知识包--语义分析&智能问答&工具_第3张图片

  • NLPIR(语义分析系统)
    NLPIR功能
    NLPIR

  • Stanford CoreNLP(官网)
    NLP知识包--语义分析&智能问答&工具_第4张图片
    Python安装stanford CoreNLP.
    用Python+StanfordCoreNLP做中文命名实体分析

  • Python-quepy(官网)
    Quepy 是一个 Python 框架,提供了将自然语言问题转换成为数据库查询语言中的查询,如SPARQL查询。

  • 其它工具-Python 自然语言处理(NLP)工具库汇总-10个

论文·项目

  • 智能问答系统的研究与实现
  • 基于领域本体中文自动问答系统相关技术的研究与实现
  • 基于RDF和SPARQL的知识图谱问答系统

一些资源

  • 知乎-知识图谱-给AI装个大脑

参考文献

[1] 中文信息学会, 报告, 《中文信息处理发展报告(2016)》. http://cips-upload.bj.bcebos.com/cips2016.pdf

你可能感兴趣的:(AI,NLP,QA)