5

我正在做一个项目,我想实现对自然语言的理解。但是,我将从小处着手,并希望针对特定查询对其进行训练。

例如,一开始我可能会告诉它:

歌曲。

然后,如果它看到像“Kanye Wests song”这样的句子,它可以与之匹配。

但是我想给它一些额外的句子,这些句子可能意味着同样的事情,以便它最终学会能够将未知句子预测到我训练过的集合中。

所以我可能会加上一句:“Songs by

当然,这将是一个可以再次匹配的名称数据库。

我遇到了一个简洁的网站,Wit.ai,它做了我所说的事情。但是,他们将匹配项解析为一个意图,我希望将其匹配到一个简化的查询或更好的数据库之类的查询(如 facebook 图形搜索)。

我知道上下文无关的语法可以很好地解决这个问题(还有别的吗?)。但是有什么好的方法可以训练几个我说的具有相似含义的 CFG,然后当它看到未知的句子时,它可以尝试和预测。

任何想法都会很棒。

基本上,我希望能够采用自然语言句子并将其转换为某种形式,这种形式可以更好地被我的系统理解并以一种很好的方式呈现给用户。不确定是否有更好的 stackexchange !

4

1 回答 1

9

首先,我认为 SO 非常适合这个问题(我检查了 Area 51,NLP 没有 stackexchange)。

假设您已经熟悉 PCFG 语法的常规培训,我将介绍一些可能有助于您实现目标的细节:

在语料库上训练的任何语法都将依赖于该训练语料库中的单词。未知词的糟糕表现不仅在 PCFG 训练中是一个众所周知的问题,而且在几乎任何概率学习框架中都是一个众所周知的问题。然而,我们可以做的是将问题视为释义问题。毕竟,您想将具有相同含义的句子组合在一起,对吗?

在最近的研究中,检测具有相同(或相似)含义的句子或短语采用了一种称为分布相似性的技术。它旨在改进对看不见的共现的概率估计。基本概念是

共享相同分布的单词或短语(语料库中相同上下文中的相同单词集)往往具有相似的含义。

您可以仅使用内在特征(例如 PCFG 中的生产规则)或使用附加语义知识(例如FreeBase等本体)来支持此类特征。使用额外的语义知识可以生成具有相似含义的更复杂的句子/短语,但这种方法通常只适用于特定领域。因此,如果您希望您的系统仅适用于音乐,这是一个好主意。

重现实际的分布相似性算法会使这个答案变得非常长,所以这里有一篇优秀文章的链接:

生成短语和句子释义: Madnani 和 Dorr对数据驱动方法的调查。

对于您的工作,您只需阅读第 3.2 节:使用单一单语语料库进行释义。我相信本文中标记为“算法 1”的算法会对您有用。但是,我不知道有任何公开可用的工具/代码可以做到这一点。

于 2014-01-29T17:05:58.547 回答