自然语言处理--计算tf并进一步得到归一化的词项频率

某个词在给定文档中出现的次数称为词项频率,通常简写为 TF。在某些例子中,可以将某个词的出现频率除以文档中的词项总数从而得到归一化的词项频率结果。
为什么要归一化tf?举个例子:
假如词“dog”在文档 A 中出现 3 次,在文档 B 中出现 100 次。显然,“dog”似乎对文档 B 更重要,但是这里的文档 A 只是一封30 个词的电子邮件,而文档 B 却是包含大约 580 000 个词的长篇巨著。因此,分析结果应该正好反过来,即“dog”对文档 A 更重要。

from nltk.tokenize import TreebankWordTokenizer
from collections import Counter

sentence = """The faster Harry got to the store, the faster Harry, the faster, would get home."""
tokenizer = TreebankWordTokenizer()
tokens = tokenizer.tokenize(sentence.lower())
print(tokens)

bag_of_words = Counter(tokens)
print(bag_of_words)

# 将这些词按照某种方式进行排序,以便能够对此有所了解
# 在默认情况下,most_common()会按照频率从高到低
# 列出所有的词条,这里只给出频率最高的 4 个词条
print(bag_of_words.most_common(4))

# 某个词在给定文档中出现的次数称为词项频率
times_harry_appears = bag_of_words['harry']
num_unique_words = len(bag_of_words)
# 将某个词的出现频率除以文档中的词项总数从而得到归一化的词项频率结果
tf = times_harry_appears / num_unique_words
print(round(tf, 4))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值