语义匹配字符串 - 使用 word2vec 或 s-match?

semantic matching strings - using word2vec or s-match?

我遇到了为 'more general'、'less general'、'same meaning'、'opposite meaning' 等匹配两个字符串的问题

字符串可以来自任何域。假设字符串可以来自人们的电子邮件。

举个例子,

String 1 = "movies"
String 2 = "Inception"

在这里我应该知道盗梦空间没有电影一般(有点是一种关系)

String 1 = "Inception"
String 2 = "Christopher Nolan"

这里应该知道Inception没有Christopher Nolan一般

String 1 = "service tax"
String 2 = "service tax 2015"

乍一看,S-match 似乎可以完成这项工作。但是我不确定 S-match 是否可以在 WordNet 或 GeoWordNet 以外的知识库上工作(如他们的页面中所述)。

如果我使用word2vecdl4j,我想它可以给我相似度分数。但它是否也支持告诉一个字符串是 more generalless general 而不是另一个?

但我确实看到 word2vec 可以基于训练集或维基百科等大型语料库

有人能为前进的道路指明方向吗?

目前使用的机器学习方法如word2vecdl4j来建模单词都是基于distributional hypothesis。他们根据上下文训练单词和短语模型。这些词模型中没有本体论方面。在经过最佳训练的情况下,基于这些工具的模型可以判断两个词是否可以出现在相似的上下文中。这就是他们的相似性度量的工作原理。

米科洛夫论文 (a, b and c) which suggests that these models can learn "Linguistic Regularity" doesn't have any ontological test analysis, it only suggests that these models are capable of predicting "similarity between members of the word pairs". This kind of prediction doesn't help your task. These models are even incapable of recognising similarity in contrast with relatedness (e.g. read this page SimLex test set)。

我会说你需要一个本体数据库来解决你的问题。更具体地说,关于您的示例,您的示例中似乎有 String 1String 2

String 1 = "a"
String 2 = "b"

您正在尝试检查句子中的 entailment 关系:

(1) "c is b"

(2) "c is a"

(3) "c is related to a".

其中:

(1) entails (2)

(1) entails (3)

在你的前两个例子中,你可能可以使用语义知识库来解决问题。但是在理解两个短语之间的区别之前,您的第三个示例可能需要进行语法分析。例如,这些短语:

"men"

"all men"

"tall men"

"men in black"

"men in general"

解决您的问题需要有逻辑的理解。但是,您可以根据 语言经济性 分析,在一个短语中添加更多的单词通常会使它 不那么通用 。与较短的短语相比,较长的短语不太通用。它没有给你一个精确的工具来解决问题,但它可以帮助分析一些没有特殊词的短语,如 allgeneralevery.