python - 使用 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 个字)。类似事实的东西 - 检查
解决方案
尝试使用 Sentence Embedding ,它将句子转换为向量 [20 65 32 ...] 然后使用它们来计算相似度。
句子嵌入依赖于词嵌入,它将句子中的每个单词转换为向量,然后根据需要取 SUM 或 AVG
-> 如何做词嵌入?你有 2 个选择,第一个是使用 word2vec 的预训练模型,如谷歌的模型,但对于 1.5GB 来说空间太大了!!!但它会给你带来难以置信的结果
第二种选择是建立自己的模型
在这里你会找到使用谷歌预训练模型和句子嵌入功能的代码 https://www.kaggle.com/esraaibrahim22/sentiment-analysis-using-google-s-trained-word2vec
推荐阅读
- java - 如何编写一个代码来停止 Jframe 的操作,直到另一个 Jframe 的按钮没有被按下?
- java - 在 Kubernetes 集群中运行的 Thymeleaf 应用程序中处理服务器上下文
- javascript - 如何使用 javascript 在浏览器中运行 IBM Watson Text to Speech
- iphone - 如何获取 Chrome 的开发工具模拟设备的移动规格?
- postgresql - 从特定 IP 远程连接时 Postgres 连接被拒绝
- linux-kernel - 了解 ethtool 如何在 Micrel 驱动程序中禁用自动协商
- aerospike - Aerospike:节点上的连接数不平衡
- r - r 单元格中的热图值 - 包 ComplexHeatmap
- c# - 为什么我的文件没有保存到 ASP.NET Core 应用程序中的指定目录?
- amazon-web-services - 将 QuickSight 指向包含多个子目录的 s3 存储桶