Nlp 两句话之间的距离

Nlp 两句话之间的距离,nlp,semantics,linguistics,semantic-analysis,Nlp,Semantics,Linguistics,Semantic Analysis,我正在寻找一种方法来测量两个句子之间的语义距离。假设我们有以下句子: (S1) The beautiful cherry blossoms in Japan. (S2) The beautiful Japan. S2是从S1中删除“樱花”、“花朵”和“in”三个词而生成的。我想定义一个函数,给出S1和S2之间的一个很长的距离。原因是它们有着明显不同的含义,因为美丽修饰樱花而不是日本。正如罗布指出的,这是一个非常困难的问题。它要求程序不仅要理解语言语义,而且要有百科全书式的知识。例如,当我们说

我正在寻找一种方法来测量两个句子之间的语义距离。假设我们有以下句子:

(S1) The beautiful cherry blossoms in Japan. 
(S2) The beautiful Japan.

S2是从S1中删除“樱花”、“花朵”和“in”三个词而生成的。我想定义一个函数,给出S1和S2之间的一个很长的距离。原因是它们有着明显不同的含义,因为美丽修饰樱花而不是日本。

正如罗布指出的,这是一个非常困难的问题。它要求程序不仅要理解语言语义,而且要有百科全书式的知识。例如,当我们说“日本美丽的樱花”时,我们是在谈论一个美丽的樱花,而它恰好在日本开花,还是我们在谈论一个单一的集体实体“樱花”,它美丽而恰好在日本?这需要百科全书和语言知识的结合

<> P>从纯百科全书的角度,考虑句子

  • 日本美丽的樱花
  • 日本美丽的樱花
  • 日本美丽的花朵
  • 前两个是相同的,而第三个是密切相关的,但不完全相同。基于这种知识建立句子距离超出了语法分析的范围,需要使用外部本体(例如樱花=樱花,樱花是一朵花)

    话虽如此,还是有一点可以基于句子的解析树来完成的。 例如,如果您查看您提供的两个句子的选区解析树,您将能够将它们分解为短语(NP、VP等)。对于许多例子来说,将两个句子之间的距离定义为其组成短语之间距离的最大值就足够了,而短语之间的距离又可以基于词汇数据库(例如)或本体(例如)

    对于WordNet,一个现成的用于测量语义距离的包是基于Java的包。他们有一个共同的目标。这些语义距离基于本体图中两个术语之间的路径距离(LESK除外,它只计算字典gloss中术语的重叠)


    这远远不能完全解决测量语义距离的问题,但是我希望它能给你一个起点。

    我认为这方面的研究已经取得了很多进展,现在由于单词向量和变换器的发展,句子之间的距离可以通过几种方法计算出来:

  • 谷歌通用句子编码器(使用)

  • 由facebook发送

  • 平均词向量(具有余弦相似性)

  • Spacy还提供了基于词向量的两个句子之间的相似性:

  • 埃尔莫

  • 伯特

  • 阿尔伯特

  • 罗伯塔

  • XLNET

  • 伊莱克特拉:


  • etc

    尝试基于BERT的模型,例如

    移动核心:

    这对于捕捉两个句子的语义相似性非常有用。参考文件:


    此外,您可能需要查找诸如“STS”(语义-文本相似性)之类的任务。

    这是一个非常困难的问题。我所知道的最接近的任务是释义检测,你想确定两个句子是否在语义上相互牵连。我会研究word2vec,它在单词意义上做了一些非常棒的事情。