我有一个文档语料库,我想估计某个单词出现的概率. 简单地计算频率并使用这样的数字作为估计并不是一个好的选择。有没有关于这个主题的工作描述更好的方法?
估计词频概率的好方法是什么?
机器算法验证
文本挖掘
频率
拉普拉斯平滑
2022-04-01 01:04:22
2个回答
我想你想看看文本挖掘人员所说的平滑。一种简单的平滑技术是在每个字数上加一个,因此没有一个字的概率估计为零——基本上假装每个字比实际出现的次数多。概括地说,这有时被称为“拉普拉斯平滑”或“加法平滑”——它是一种应用于概率估计的收缩形式。
大多数情况下,对于简单的问题,add-one smoothing 可以正常工作,因此如果您尝试开始,这是一个很好的起点,听起来就是这样。
然而,还有更多的技术,你需要小心地将这个“加一”应用于二元/n-gram。如果您想深入了解,这里有非常丰富的文献。查看Good-Turing Smoothing和Katz Smoothing以及m-estimate smoothing以了解这些技术的特点。
如果没有更多细节,很难回答您的需求。在文本分析中,词频被替换为tf*idf,它代表“词频乘以逆文档频率”。这是一个经验分数,可以纠正语料库中频繁出现的术语,因此不会区分文档。它被广泛用于比较文本,特别是通过余弦相似度度量。
在实践中,您计算文档中术语的频率 (tf) 并将其乘以包含该术语的文档的倒数的对数 (idf)。
Python的NLTK (自然语言工具包)站点包含它的实现,以及其他工具和大量解释。
也就是说,如果你真正想要的是一个单词出现概率的估计,我不知道你是否能得到比频率更好的结果。如果计数为 0,您可以使用贝叶斯估计器 (k+1) / (n+1),其中 k 和 n 分别是字数和文本大小。
编辑:要深入了解 IDF,请查看 S. Robertson 的论文Understanding Inverse Document Frequency
其它你可能感兴趣的问题