首页 > 解决方案 > 使用 Python 查找字符串中的相似点和矛盾点

问题描述

我想编写代码来发现字符串之间的相似之处。我在 StackOverflow 上找到了这个脚本,它的文字很好,但问题是我想找到矛盾的陈述。我不知道该怎么做,所以我寻求帮助

from difflib import SequenceMatcher


def similar(a, b):
    return SequenceMatcher(None, a, b).ratio()


x = similar("sky is blue","color of the sky is blue")
print(x)
0.6285714285714286

x = similar("sky is blue","color of the sky is not blue")
print(x)
0.5641025641025641

x = similar("people are telling that sky is blue","people are telling that is not blue")
print(x)
0.8857142857142857

你看我得到了 0.88 分,两个矛盾的陈述,所以这个分数应该少得多,或者它应该返回某种标签(真假,矛盾或类似的东西)

我的输入是文本输入、句子(3-15 个字)。类似事实的东西 - 检查

标签: pythonnlpnltk

解决方案


尝试使用 Sentence Embedding ,它将句子转换为向量 [20 65 32 ...] 然后使用它们来计算相似度。

句子嵌入依赖于词嵌入,它将句子中的每个单词转换为向量,然后根据需要取 SUM 或 AVG

-> 如何做词嵌入?你有 2 个选择,第一个是使用 word2vec 的预训练模型,如谷歌的模型,但对于 1.5GB 来说空间太大了!!!但它会给你带来难以置信的结果

第二种选择是建立自己的模型

在这里你会找到使用谷歌预训练模型和句子嵌入功能的代码 https://www.kaggle.com/esraaibrahim22/sentiment-analysis-using-google-s-trained-word2vec


推荐阅读