【发布时间】:2013-02-18 14:15:39
【问题描述】:
我想制作一个程序,使用积分系统从垃圾邮件中分类邮件。
对于邮件中的几句话,
我希望程序为我在程序中归类为“垃圾词”的每个单词给出不同的分数,我还为不同的单词分配不同的分数,以便每个单词都值得一些分数。
我的伪代码:
- 从文件中读取文本
- 寻找“垃圾词”
- 对于出现的每个单词,给出该单词的价值。
- 如果每个垃圾词的总分为 10,则打印“SPAM”,后跟文件中分类为垃圾词及其得分的单词列表。
示例(文本文件):
Hello!
Do you have trouble sleeping?
Do you need to rest?
Then dont hesitate call us for the absolute solution- without charge!
因此,当程序运行并分析上面的文本时,它应该如下所示:
SPAM 14p
trouble 6p
charge 3p
solution 5p
所以我打算这样写:
class junk(object):
fil = open("filnamne.txt","r")
junkwords = {"trouble":"6p","solution":"3p","virus":"4p"}
words = junkwords
if words in fil:
print("SPAM")
else:
print("The file doesn't contain any junk")
所以我现在的问题是如何为文件中出现的列表中的每个单词打分?
以及如何对总分求和以便if total_points are > 10 那么程序应该print "SPAM",
接下来是文件中找到的“垃圾词”列表以及每个词的总分。..
【问题讨论】:
-
为什么会在每个单词后打印“14 p”、“6 p”等?每个单词的分数是否不同?如果是这样,这与您之前的要求“出现的每个单词给出 1 分”的要求相冲突
-
@Kevin 是的,每个单词都值不同的分数,忘记思考“出现的每个单词都给 1 分”
-
这些积分保存在哪里?垃圾词应该是字典。
-
是的,当然应该,应该需要改变我的计划才知道。但真正的问题仍然存在......
-
如果一个词出现不止一次,该点值会被多次添加吗?
标签: data-structures python-3.x string-matching