我正在实现一个天真的“关键字提取算法”。我是自学成才的,所以我缺乏一些在线文学中常见的术语和数学。
因此,我正在查找文档的“最相关关键字”:
- 我计算每个术语在当前文档中使用的频率。我们称之为tf。
- 我查看了这些术语在整个文档数据库中的使用频率。我们称之为df。
- 我通过r = tf / df计算每个术语的相关权重r。
每个文档都是语料库的适当子集,因此没有文档包含不在语料库中的术语。这意味着我不必担心被零除。
我按它们的r对所有术语进行排序,并保留许多最重要的术语。这些是与本文档最密切相关的顶级关键字。本文档中常用的术语更为重要。在整个文档数据库中通用的术语不太重要。
我相信这是tf-idf的一种幼稚形式。
问题是,当术语在整个数据库中非常罕见但出现在当前文档中时,它们的r值似乎太高了。
由于样本量小,这可以被认为是某种人工制品。弥补这一点的最佳方法或通常方法是什么?
- 丢弃在整个数据库中不常见于某个阈值的术语。如果是这样,该阈值是如何计算的?似乎它取决于太多因素而不能成为硬编码值。
- 可以通过某种数学函数(例如平方反比或余弦)对其进行加权或平滑吗?
我已经尝试在网上搜索并阅读tf-idf,但我发现的大部分内容都是比较文档,我对此并不感兴趣。此外,其中大多数的解释与行话和公式的比例都很低。
(事实上,我的项目是对这个问题的概括。我真的在 Stack Exchange 网站上使用标签,所以术语的总数很少,停用词无关紧要,低使用率的标签可能比低使用率的词更常见在标准情况下。)