从词袋到 tf-idf

复习一下文本处理的一些基本概念。

词袋:Bag-of-words,基於单词数量统计的 最简单的文本特征表示方法。对于文本数据,词袋可以理解为单词数量的统计列表。

文本“it is a puppy and it is extremely cute”具有下图中的词袋表示。原始文本是一个单词序列,但词袋中没有任何序列,它只记录每个单词在文本中出现的次数。

n元词袋:(bag-of-n-grams)是词袋的一种自然扩展。n-gram(n 元词)是由 n 个标记 (token)组成的序列。n-gram 能够更多地保留文本中的初始序列结构。

1-gram 就是一个单词(word),又称为一元词(unigram)。经过 分词(tokenization)之后,计数机制会将单独标记转换为单词计数,或将有重叠的序列 作为 n-gram 进行计数。例如,句子“Emma knocked on the door”会生成 n-gram“Emma knocked”“knocked on”“on the”和“the door”。

tf-idf:在词袋方法基础上的一种简单扩展,它表示词频 - 逆文档频率。

bow(w, d) = 单词 w 在文档 d 中出现的次数
tf-idf(w, d) = bow(w, d) * N / ( 单词 w 出现在其中的文档数量 )

N 是数据集中的文档总数。分数 N / ( 单词 w 出现在其中的文档的数量 ) 就是所谓的逆文档 频率。如果一个单词出现在很多文档中,那么它的逆文档频率就接近于 1。如果一个单词 只出现在少数几个文档中,那么它的逆文档频率就会高得多。

如果将 tf-idf 定义为:
tf-idf(w, d) = bow(w, d) * log(N / 单词 w 出现在其中的文档数量 )

那么就可以有效地将一个几乎出现在所有单个文档中的单词的计数归零,而一个只出现在 少数几个文档中的单词的计数将会被放大。

 

 

 

参考:《精通特征工程》

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章