我正在一个项目中,我希望获得对自然语言的理解。但是,我将从小处着手,并希望针对特定查询进行培训。
因此,举例来说,我可能会告诉我:
歌曲。
然后,如果看到类似“ Kanye Wests歌曲”的句子,则可以与之匹配。
但是,我想给它一些额外的句子,这些句子可能意味着同一件事,以便它最终学会能够将未知的句子预测到我训练过的句子集中。
所以我可以加上一句话:“
当然,这将是一个可以再次匹配的名称数据库。
我遇到了一个整洁的网站Wit.ai,该网站的功能与我所说的相同。但是,他们将匹配结果解析为一个意图,在这里我想将其匹配为简化查询,或者更好地查询数据库(例如facebook graph search)。
我知道上下文无关的语法对此非常有效(还有其他吗?)。但是,训练几个我说过的具有相同含义的CFG的好的方法是什么,然后当它看到未知的句子时就可以尝试并进行预测。
任何想法都会很棒。
基本上,我希望能够采用自然语言的句子并将其转换为可以更好地理解我的系统并以一种不错的方式呈现给用户的某种形式。不知道这是否有更好的stackexchange!
首先,我认为SO非常适合这个问题(我检查了Area 51,没有用于NLP的stackexchange)。
假设您已经熟悉PCFG语法的常规培训,那么我将介绍一些可以帮助您实现目标的细节:
在语料库上训练的任何语法都将依赖于该训练语料库中的单词。不明词的不良表现不仅是PCFG培训中的一个众所周知的问题,而且在几乎所有的概率学习框架中也是一个众所周知的问题。但是,我们可以做的是将问题视为释义问题。毕竟,您要将具有相同含义的句子归为一组,对吗?
在最近的研究中,检测具有相同(或相似)含义的句子或短语已采用了一种称为分布相似性的技术。它旨在改进针对未见共现的概率估计。基本概念是
语料库中具有相同分布的单词或短语(在同一语境中处于相同上下文中的同一组单词)往往具有相似的含义。
您只能使用固有功能(例如PCFG中的生产规则),也可以使用其他语义知识(例如FreeBase之类的本体)来增强这些功能。使用其他语义知识可以生成具有相似含义的更复杂的句子/短语,但是此类方法通常仅对特定领域有效。因此,如果您希望系统仅在音乐上运行良好,则是个好主意。
重现实际的分布相似性算法将使答案漫长,因此,这里有一篇出色的文章的链接:
生成短语和句子释义: Madnani和Dorr对数据驱动方法的调查。
对于您的工作,您只需要阅读第3.2节:使用单个单语语料库的释义。我相信本文中标记为“算法1”的算法将对您有用。但是,我不知道有任何公开可用的工具/代码可以执行此操作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句