TF-IDF 是处理 NLP 问题时经常使用的经典算法,常用于对文本进行关键词的提取。
TF-IDF 介绍
计算公式
TF-IDF 的计算非常简单
TF-IDF = TF(\text{文章词频}) * IDF(\text{逆文档频率})
概念解释
TF: 指某个词在一段文本中出现的词频
TF = \dfrac{\text{某个词在文章中出现的次数}}{\text{文章总词数}}
IDF: 指某个词在所有文本(对应语境所在的训练语料,例如:科学领域、体育领域)中的区分度,它认为越少出现的词区分度越高,相应的 IDF 值也越高。
IDF = \log\dfrac{(\text{训练语料的总文档数+1})}{(\text{出现该词的文档数+1})}
分母 “+1” 是为了防止分母为零,同时相应地分子 “+1” 以防止 IDF 为负数。
算法总结
经验
从计算公式可知,TF-IDF 的准确性非常依赖 IDF 模型的质量。同一个词在不同领域对应的区分度(IDF)也不同甚至差别巨大,例如 “冠军” 在体育领域的语料中出现的次数远远大于在政治领域的语料中所出现的次数,这意味着在后者的语境下,“冠军” 这个词的区分度更高,IDF 值更大。要提升 TF-IDF 的算法效果一般需要根据业务场合单独训练特定领域的 IDF 模型。
评价
- TF-IDF 计算复杂度低,适合对效率优先的场景。
- 由于它只依赖关键词的统计特征进行排序,有时候效果并不理想,比如有时候文本的关键要素不一定是频繁出现的元素。
- 另外它也缺乏对文本结构的考虑。