python求各行的平均模糊比

2024-04-24 14:14:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试一个代码来找到文件中所有行的平均模糊比率,其中包含单词good:

from fuzzywuzzy import fuzz
from collections import defaultdict
with open(qwer.txt, 'r') as my_file:
     for line in my_file:
        for part in line.split():
          a=line
          b='good'
          fuzziness = fuzz.ratio(a,b)
          filenames2fuzz[line].append(fuzziness)

    best_fuzziness_ratio = 0 
    for k, v in filenames2fuzz.items():
        if max(v) > best_fuzziness_ratio:
            best_fuzzy_line = k
            best_fuzziness_line_ratio = max(v)
    average=v/n(v)#<-not sure 
    print average

如何打印好字所有行的平均模糊率并打印平均值? 请帮帮我!请回答!你知道吗


Tags: infromimportformylinemaxfile
2条回答

我想你是在追求这样的东西:

 div = 0
 ratio_total = 0
 for line in my_file:
     for word in line:
           ratio = fuzz.ratio(word, 'good') # might want to use partial_ratio instead
           if ratio > 0: # or some threshold:
                ratio_total += ratio
                div += 1

  print("Average ratio: %s" % (ratio_total/div,))

我想你要做的是把每个单词排成一行,把每个单词和“好”比较一下。这能让你接近吗?你知道吗

对于内存高效的解决方案,我可能会这样做。你知道吗

def good_ratio(a):
    return fuzz.ratio(a, 'good')

with open('qwer.txt', 'r') as my_file:
   my_sum, my_len = reduce(lambda a, b: (a[0]+b[0], a[1]+b[1]), ((good_ratio(i), 1) for i in my_file))
   print(my_sum/my_len)

请注意,在python3中这是一个浮点除法,在python2中需要类似my_sum/(float)my_len的东西。你知道吗

另外,您可能希望使用'good'(或者'good'或其他内容)过滤行,例如使用((good_ratio(i), 1) for i in my_file if 'good' in i)。你知道吗

相关问题 更多 >