gpt4 book ai didi

python - 从文本中的字典中搜索单词并返回值

转载 作者:太空宇宙 更新时间:2023-11-04 02:17:29 24 4
gpt4 key购买 nike

我的函数应该从文本中的字典中查找单词,然后将值加到“points” 变量中。

但是我搞砸了。我的流程如下:

  1. 字典:

    words = {'very funny': 3,'funny': 2,'accidentally funny': 1}  
  2. 文本文件(名为:sample.txt):

Monty Python is very funny. +3
Some standups are funny. +2
Politicians are sometimes accidentally funny. +1
Real pythons are not funny at all. +2

*这些值代表我想为每一行达到的分数

  1. 从 .txt 文件中获取文本:

    with open('sample.txt', 'r') as text:
    data = text.read()
  2. 函数:

    def counter(data): #this should find keywords
    default_value = 0 #var for stuff not included in dict
    points = 0
    for i in data:
    points += words.get(i, default_value) #using get to avoid valueError
    print(points)
    return points

    counter(data)
  3. 输出:

    0  

    Process finished with exit code 0

编辑 我知道我忘记了什么 ;]:

问题

  1. 我的功能似乎还不算什么
  2. 我想以一种方式对那些关键的 fraze 进行评分,即单个单词“funny”不会被三倍评分,而只会触发 'funny': 2 效果。不过,我不知道该如何处理。

这是我关于堆栈的第一个问题,所以如果我搞砸了什么,请告诉我。

最佳答案

我建议您反转您的逻辑 - 遍历这些术语并计算它们出现的次数:

def counter(data): #this should find keywords
points = 0
for word, value in words.items():
points += value * data.count(word)
print(points)
return points

然而,这意味着某些术语可以得分不止一次 - 'very funny' contains 'funny',所以它应该值 5(3 来自 'very funny',2 来自 'funny')?

您的文本包含 4 个funny、1 个very funny 和 1 个accidentally funny 所以结果是 4*2 + 3 + 1 = 12

关于python - 从文本中的字典中搜索单词并返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52319120/

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