有关垃圾邮件过滤功能的绝对值分配的问题,该功能确定电子邮件是否为垃圾邮件的可能性。
使用公式的“兴趣商”(IQ): IQ = | 0.5-s | ,其中 s 是一个单词的垃圾邮件概率,范围从0到1。
假设s('money')
返回0.80,因为它是垃圾邮件,而s('object')
返回0.20。要计算整个邮件的垃圾邮件概率,必须将每个单词都考虑在内,因此使用IQ公式时,单词“ money”和“ object”都将被赋予0.30的值。
我的问题是,如何使Python区分相同的绝对值?因为提供给我的伪代码要求我使用“有趣商数”,这是我的伪代码,仅用于计算绝对值,因此它可能有许多语法错误,但目前我不太在意它们。
def combined_probability(que):
holder = []
x = []
j = 0
p = 0
for val in iter(que.get, None):
holder.append(val)
x = holder[::2]
for i in range(len(x)):
x[i] = 0.5 - x[i]
if x[i] < 0:
p += 1
continue
j += x[i]
p += 1
j = j / p
return 'probability of this message being spam is ' + str('j')
s = WordQue(15)
s.insert('money', 0.8)
s.insert('object', 0.2)
s.insert('the', 0.5)
print(combined_probability(s))
从本质上讲,我所做的是丢弃表示垃圾邮件单词的任何负值,因为如果该单词是垃圾邮件,则当我将好的单词除以单词总数时,将不会考虑该单词。但是,我不确定这是您如何在Python中计算绝对值。