【问题标题】:Recent methods for finding semantic similarity between two short sentences or articles (on a concept level)最近在两个短句或文章之间寻找语义相似性的方法(在概念层面上)
【发布时间】:2017-12-11 12:42:34
【问题描述】:

我正在努力寻找短句和文章之间的相似之处。我使用了许多现有的方法,例如 tf-idf、word2vec 等,但结果还可以。我发现最相关的度量是词移动距离,但是,它的结果并不比其他度量好。我知道这是一个具有挑战性的问题,但是,我想知道是否有任何新方法可以在更高或概念级别上找到近似相似性,而不仅仅是匹配单词。特别是,是否有任何替代的新方法,例如单词移动距离,它着眼于句子或文章的语义略高?

【问题讨论】:

  • 恐怕您的问题不适合 SO。如果您正在寻求其他现有工具的指导,这被认为是题外话。如果您想看到人们发明新方法,您需要为研究项目筹集资金。
  • 顺便说一句,使用词嵌入不仅仅是“匹配词”。它应该在更高的语义级别上工作。
  • @lenz 我并不是要在这里寻找新的方法,而是要问我是否错过了一些已经存在的东西。也许从 2017 年开始。
  • 人们期望“嵌入”表现良好,但至少在实践中,它并没有大大超过简单的单词匹配。

标签: machine-learning nlp artificial-intelligence nltk similarity


【解决方案1】:

显然,这是一个庞大而繁忙的研究领域,但我想说您可以研究两种广泛的方法:

首先,有一些方法以无监督的方式学习句子嵌入,例如Le and Mikolov's (2014) Paragraph Vectors,在gensimKiros et al.'s (2015) SkipThought vectors 中实现,带有implementation on Github

还存在从标记数据中学习句子嵌入的监督方法。最近的一个是Conneau et al.'s (2017),它在斯坦福自然语言推理数据集上训练句子嵌入,并表明这些嵌入可以成功地用于一系列 NLP 任务。代码是available on Github

您还可以在a blog post I wrote earlier this year on the topic of embeddings 中找到一些灵感。

【讨论】:

    【解决方案2】:

    这是基于 4 个月前发表的一篇论文的最新文章。

    第 1 步:

    使用gensim加载合适的模型,计算句子中单词的词向量并将它们存储为单词列表

    第二步:计算句子向量

    以前句子之间的语义相似度计算很困难,但最近提出了一篇名为“A SIMPLE BUT TOUGH-TO-BEAT BASELINE FOR SENTENCE EMBEDDINGS”的论文,该论文提出了一种简单的方法,即计算句子中词向量的加权平均值,然后去除平均向量的投影在它们的第一个主成分上。这里单词 w 的权重是 a/(a + p(w)),其中 a 是一个参数,p(w) 是(估计的)单词频率,称为平滑逆频率。这种方法的性能明显更好.

    使用SIF(smooth inverse frequency)计算句子向量的简单代码,文中提出的方法已给出here

    第 3 步:使用 sklearn cosine_similarity 为句子加载两个向量并计算相似度。

    这是计算句子语义相似度最简单有效的方法。

    【讨论】:

      【解决方案3】:

      老实说,目前我所知道的最好用的是 AMR:

      您可以使用 JAMR 之类的系统(参见此处:https://github.com/jflanigan/jamr)为您的句子生成 AMR,然后您可以使用 Smatch(参见此处:https://amr.isi.edu/eval/smatch/tutorial.html)来比较两个生成的 AMR 的相似性。

      您正在尝试做的事情非常困难,并且是一个活跃的持续研究领域。

      【讨论】:

      • Smatch 真的是衡量句子相似度的好方法吗?它(可以说)是衡量 AMR 对于给定句子 质量的一个很好的衡量标准,但我不知道它是否可靠地反映了两个句子的相似程度。例如,“男人吃了蛋糕”和“男孩尝了馅饼”这两个句子的 AMR 的匹配分数为 ,但句子在语义上非常相似......跨度>
      【解决方案4】:

      您可以对每对名词使用 WordNet 的语义相似性。 要快速查看,您可以输入 bird-noun-1 和 chair-noun-1 并在http://labs.fc.ul.pt/dishin/ 选择 wordnet,它会为您提供:

      雷斯尼克 0.315625756544

      林0.0574161071905

      江&康拉特 0.0964964414156

      Python 代码位于:https://github.com/lasigeBioTM/DiShIn

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-09-19
        • 2013-04-18
        • 2011-09-29
        • 2012-01-25
        • 1970-01-01
        • 2016-12-14
        • 2015-10-27
        • 1970-01-01
        相关资源
        最近更新 更多