python - 获取多个字符串的相似度百分比
问题描述
Python 中是否有任何函数可以接受多行字符串并返回它们具有多少相似度的百分比?类似SequenceMatcher
但对于多个字符串。
例如我们有以下句子
Hello how are you?
Hi how are you?
hi how are you doing?
Hey how is your day?
我希望能够根据句子彼此的相似程度获得百分比
假设我们有这三个句子
Hello how are you?
Hello how are you?
Hello how are you?
那么我们应该得到 100% 的相似度
但是如果我们有
Hello how are you?
Hello how are you?
hola como estats?
那么我们应该得到一个相似度约为 67% 的数字。
解决方案
您可以使用pandas
数据框进行操作,itertools.combinations
计算列表中 2 个字符串的组合以及difflib.SequenceMatcher
相似度计算:
import pandas as pd
import itertools
from difflib import SequenceMatcher
def similarity(a,b):
seq = SequenceMatcher(a=a, b=b)
return seq.ratio()
strings = ['Hello how are you?', 'Hi how are you?', 'hi how are you doing?', 'Hey how is your day?']
combinations = itertools.combinations(strings,2)
df = pd.DataFrame(list(combinations))
df['similarity'] = df.apply(lambda x: similarity(x[0],x[1]), axis=1)
df.similarity.mean()
0.68
推荐阅读
- python - 想在python中自动化重复的过程
- yii2 - yii2中如何使用faker提前模板
- oracle-apex - 如何在循环中调用两次重定向
- azure-devops - 如何捕获在 Azure DevOps 中运行管道的人员
- docker - Docker buildx - 构建失败并出现“TLS 握手超时”,而 docker pull 工作正常
- json - Groovy JsonOutput.toJson(Object) 返回空字符串
- python - 在 python 中是否有任何替代方法来替换运行时中的变量,如 unix shell 脚本 {!variableName}
- node.js - Docker 与 node.js
- c# - 如何使用 Mimekit 从 IOS 保存附件
- sql - 带有插入语句的 CTE 函数