.net NLP/Quest。应答-从数据库中检索信息

.net NLP/Quest。应答-从数据库中检索信息,.net,sql-server,nlp,artificial-intelligence,question-answering,.net,Sql Server,Nlp,Artificial Intelligence,Question Answering,最近我读了一些关于NLP的书,到目前为止,我已经(非常)了解了从句子分割到词性标注,以及知识表示等一切工作的基本原理 我知道有很多NLP库(主要是Java或Python),并且已经找到了一个.NET实现()。事实上,它非常棒。无需编写任何自定义处理逻辑;只要使用它们的功能,瞧!用户输入被很好地分开,并带有POS标签 我不明白的是,如果我的主要动机是建立一个问答系统(类似于一个喋喋不休的人),那么接下来该怎么办。我可以使用哪些库(最好是.NET)?如果我希望构建自己的知识库,我应该如何表示我的知识

最近我读了一些关于NLP的书,到目前为止,我已经(非常)了解了从句子分割到词性标注,以及知识表示等一切工作的基本原理

我知道有很多NLP库(主要是Java或Python),并且已经找到了一个.NET实现()。事实上,它非常棒。无需编写任何自定义处理逻辑;只要使用它们的功能,瞧!用户输入被很好地分开,并带有POS标签

我不明白的是,如果我的主要动机是建立一个问答系统(类似于一个喋喋不休的人),那么接下来该怎么办。我可以使用哪些库(最好是.NET)?如果我希望构建自己的知识库,我应该如何表示我的知识?我是否需要将POS标记的输入解析为DB可以理解的其他内容?如果我使用MS SQL,是否有任何库可以帮助将POS标记的输入映射到数据库查询?或者我需要根据过程语义编写自己的数据库查询逻辑(我已经读过了)


当然,下一步是制定一个结构良好的答复,但我想我可以留待以后再说。现在困扰我的是这方面的资源不足(知识表示法NLP到KB/DB检索),如果在座的任何人都能提供我您的专业知识,我将不胜感激:)

这是一个非常广泛的问题,因此它几乎不适合StackOverflow的格式,尽管如此,我还是想尝试一下

首先,一个关于NLP的单词
NLP领域成熟工具的广泛可用性本身就有点误导。当然,从词性标记或组块到自动摘要或命名实体识别等所有/大多数NLP功能都已涵盖,并且通常由各种库的逻辑和支持数据提供良好的服务。然而,从这些构建块构建真实世界的解决方案并不是一项简单的任务。我们需要:

  • 沿着某种管道或链构建解决方案,从而将特定转换的结果输入到后续流程的输入中
  • 配置各个过程:这些过程的计算框架已经建立,但它们对基础数据(如训练/参考语料库、可选调整参数等)极为敏感
  • 选择并验证适当的功能/流程
对于与从文本中提取和处理语义元素相关的部分解决方案来说,上述问题尤其困难(一般来说,信息提取,但也包括共同引用消歧、关系提取或情感分析等)。这些NLP函数和各种库中相应的实现往往更难配置,对依赖于域的模式或语音级别的变化更敏感,甚至对支持语料库的“格式”更敏感

简言之,NLP库为问题中提到的“问答系统”等应用程序提供了必要的构建块,但需要大量的“胶水”
以及如何和在何处使用胶水的大量自由裁量权(以及大量非NLP技术,如知识表示问题,如下所述)

关于知识表示的研究
如上所述,词性标注本身并不是NLP管道中的一个充分元素。本质上,词性标注将添加文本中每个单词的信息,表明该单词的[可能]语法角色(如名词、形容词、动词、代词等)该POS信息非常有用,因为它允许,例如,随后将文本分块成逻辑上相关的词组和/或在字典、分类法或本体中更精确地查找单个词

说明某些“问答系统”可能需要的信息提取类型和底层知识表示,我将讨论各种语义搜索引擎中使用的一种常见格式。但是,请注意,对于语义搜索,这种格式可能更具概念性,而不是规范性,其他应用程序(如专家系统或翻译机)需要其他形式的知识表示

想法是使用NLP技术和支持数据(从简单词汇的普通“查找表”,到分类的树状结构,再到用专门语言表示的本体),以从文本中提取实体的三元组,结构如下:

  • 代理人:某事或某人“做”某事
  • 动词:正在做什么
  • 对象:完成“做”的人或项目(或更一般地说,关于“做”的一些补充信息)
示例:
猫/代理吃/动词鼠标/对象。
约翰·格里沙姆/代理编写/动词鹈鹕简报/对象
奶牛/代理产品/动词牛奶/对象

此外,这类三元组有时被称为“事实”,可以根据特定的语义模式分为各种类型,通常围绕动词的语义组织。例如,“因果”事实有一个动词,表示某种因果关系,“包含”事实有一个动词,暗示容器与容器的关系,“定义”事实指的是对象[如果只是部分]定义了主体/主体的模式(例如,“猫是哺乳动物”),等等

人们可以很容易地想象,如何查询这些事实数据库,以提供问题的答案,并提供各种智能和服务,如同义词替换或提高问题答案的相关性(与普通关键字匹配相比)

真正的困难在于