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