python - 句子相似性模型不捕获相反的句子

标签 python nlp spacy huggingface-transformers sentence-similarity

我尝试了不同的方法来处理 句子相似度 ,即:

  • spaCy 模型 : en_core_web_md en_core_web_lg .
  • 变形金刚 :使用软件包 sentence-similarity sentence-transformers , 我试过 distilbert-base-uncased 等模型, bert-base-uncased sentence-transformers/all-mpnet-base-v2 .
  • 通用句子编码 : 使用包 spacy-universal-sentence-encoder , 同款 en_use_md en_use_cmlm_lg .

  • 然而,虽然这些模型通常正确地检测等效句子的相似性,但在输入否定句时它们都失败了。例如,这些 相反的句子 :
  • “我喜欢下雨天,因为它们让我感到放松。”
  • “我不喜欢下雨天,因为它们不会让我感到放松。”

  • 返回 0.931 的相似度 与模型 en_use_md .
    但是,可以考虑的句子非常相似 :
  • “我喜欢下雨天,因为它们让我感到放松。”
  • “我喜欢下雨天,因为它们让我感到平静。”

  • 返回 较小的相似度:0.914 .
    我的问题是 : 有没有办法解决?在计算相似度时,是否有其他模型/方法考虑了句子的肯定/否定性质?

    最佳答案

    处理否定是 NLP 中的难题之一。
    许多相似性方法将通过平均一个句子中的单词向量来工作,在这种情况下,一个句子是另一个句子加上单词“not”的向量,这不会有很大不同。对立面通常也经常一起讨论,因此在这个意义上它们是“相似的”,这就是 NLP 中通常使用“相似”一词的方式。
    有一些方法可以解决这个问题,通常用于情感分析,但它们通常不会“正常工作”。如果你能缩小你期望看到的否定类型,你可能会取得更大的成功。 negspaCy是一个非官方的 spaCy 组件,可以帮助检测命名实体的否定,例如,这在医学文本中通常很有用(“没有癌症”)。但是你必须弄清楚如何处理这些信息,这对相似性分数没有帮助。
    使用训练有素的模型来分类 ,您可能会很幸运。蕴涵 - 对某个陈述是否暗示、矛盾或与另一个陈述无关进行分类。

    关于python - 句子相似性模型不捕获相反的句子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69374258/

    相关文章:

    c++ - 是否可以在我的 C++ 程序中嵌入任何 Python 编辑控件?

    artificial-intelligence - 我应该选择以下哪些项目来参加 NLP 夏季研讨会?

    python - 如何对同一文本样本的不同主题/方面进行情感分析

    spacy - 在spaCy中,为什么 '\n'经常被英文NER标记为GPE?

    python - 获取两组的唯一交集值

    python - 通过 Python 中的 scp 和 os 模块从远程服务器安全复制文件

    spacy - 让 spacy nlp.pipe 处理文本元组和附加信息以添加为文档功能?

    python - spacy 使用语料库中的数据创建新的语言模型

    javascript - 如何将HTML字符串发送到Django模板JavaScript?

    python - NLTK fcfg语法使用python