gpt4 book ai didi

python - 在 Python 中用值对字符串进行分组

转载 作者:太空宇宙 更新时间:2023-11-03 11:38:14 25 4
gpt4 key购买 nike

我正在处理 Twitter 主题标签,我已经计算了它们在我的 csv 文件中出现的次数。我的 csv 文件看起来像:

GilletsJaunes, 100
Macron, 50
gilletsjaune, 20
tax, 10

现在,我想使用 fuzzywuzzy 库将两个相近的术语组合在一起,例如“GilletsJaunes”和“gilletsjaune”。如果 2 个术语之间的接近度大于 80,则它们的值仅添加到 2 个术语中的一个中,而另一个被删除。这将给出:

GilletsJaunes, 120
Macron, 50
tax, 10

使用“fuzzywuzzy”:

from fuzzywuzzy import fuzz
from fuzzywuzzy import process

fuzz.ratio("GiletsJaunes", "giletsjaune")
82 #output

最佳答案

首先,复制these two functions能够计算 argmax:

# given an iterable of pairs return the key corresponding to the greatest value
def argmax(pairs):
return max(pairs, key=lambda x: x[1])[0]


# given an iterable of values return the index of the greatest value
def argmax_index(values):
return argmax(enumerate(values))

其次,将 CSV 的内容加载到 Python 字典中,然后执行以下操作:

from fuzzywuzzy import fuzz

input = {
'GilletsJaunes': 100,
'Macron': 50,
'gilletsjaune': 20,
'tax': 10,
}

threshold = 50

output = dict()
for query in input:
references = list(output.keys()) # important: this is output.keys(), not input.keys()!
scores = [fuzz.ratio(query, ref) for ref in references]
if any(s > threshold for s in scores):
best_reference = references[argmax_index(scores)]
output[best_reference] += input[query]
else:
output[query] = input[query]

print(output)

{'GilletsJaunes': 120, 'Macron': 50, 'tax': 10}

关于python - 在 Python 中用值对字符串进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55053773/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com