从一个例句中的句子列表中找出具有相似相对含义的句子

Phi*_*hil 4 nlp google-natural-language natural-language-processing

我希望能够找到具有相同含义的句子.我有一个查询语句,以及数百万个其他句子的长列表.句子是单词,或称为符号的特殊类型的单词,它只是一种象征着被讨论的对象的单词.

例如,我的查询语句是:

示例:将(x)添加到(y)给出(z)

可能存在我的数据库中已存在的句子列表,例如:1.(x)和(y)的总和是(z)2.(x)加(y)等于(z)3.(x)乘以by(y)不等于(z)4.(z)是(x)和(y)的总和

该示例应匹配我的数据库1,2,4中的句子,但不匹配3.此外,句子匹配应该有一些权重.

它不仅仅是数学句子,它可以根据单词的含义与任何其他句子进行比较.我需要一些方法来对句子和许多其他句子进行比较,以找到具有封闭相对含义的句子.即基于其含义的句子之间的映射.

谢谢!(标签是语言设计,因为我无法创建任何新标签)

Fre*_*Foo 7

首先:你想要解决的是一个非常棘手的问题.根据数据集中的内容,它可能是AI完整的.

你需要你的程序知道或学习add,plussum引用相同的概念,而multipets是一个不同的概念.您可以通过测量WordNet/FrameNet中单词'synsets之间的距离来实现此目的,但如果您不想找到乘法,则必须非常精确地计算距离.否则,您可能需要手动建立一些单词概念映射(例如{'add' : 'addition', 'plus' : 'addition', 'sum' : 'addition', 'times' : 'multiplication'}).

如果你想要完整的句子语义,你还需要解析句子并从解析树/依赖图中导出意义.在斯坦福分析器是用于分析一个流行的选择.

你也可以在Question Answering研究中找到这个问题的灵感.在那里,一种常见的方法是解析句子,然后将解析树的片段存储在索引中并通过常见的搜索引擎技术(例如,在Lucene中实现的tf-idf)搜索它们.这也会给你每个句子的分数.