文档分词与词汇权重(TF-IDF)

文档分词与词汇权重





1、文档分词


文本分类主要做的是如何提取文本中的主要信息。那么,如何衡量哪些信息是主要信息呢?

我们知道,一篇文档是由若干词汇组成的,也就是文档的主要信息是词汇。从这个角度来看,我们就可以用一些关键词来描述文档

这种处理文本的方式叫做词袋(Bag of Words)模型,该模型会忽略文本中的词汇出现的顺序以及相应的语法,将文档看做是由若干单词组成的,且单词之间相互独立,没有关联

要想提取文档中的关键词,就需要对文档进行分词。分词的方法一般是:基于统计和机器学习,需要人工标注词性和统计特征,训练分词模型

值得注意的是,分词后词汇中必定存在一些普遍使用的停用词(详见:传送门),这些停用词对文档分析作用不大,因此,在文档分析之前需要将这些词去掉

另外,分词阶段还需要处理同义词,很多时候一个事物有多个不同的名称,例如,番茄和西红柿等

中文分词与英文分词是不同的,它们需要不同的分词库进行处理:

  • 中文分词:jieba
  • 英文分词:NLTK

关于jieba中文分词库和NLTK英文分词库的介绍与使用详见文章:传送门

2、词汇权重(TF-IDF)


有了分词,那么,哪些关键词对文档才是重要的呢?

例如,可以通过词汇出现的次数,次数越多就表示越重要。更为合理的方法是计算词汇的TF-IDF值

TF-IDF(Term Frequency-Inverse Document Frequency,词频-逆文档频率)是一种统计方法,用来评估一个词汇对一篇文档的重要程度。词汇的重要性随着它在文档中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降

  • TF(Term Frequency):即词频,指某个特定的词汇在该文档中出现的次数
    T F ω = 词汇 ω 出现的次数 文档中的总词汇数 \mathrm{ TF_\omega=\frac{词汇\omega出现的次数}{文档中的总词汇数}} TFω=文档中的总词汇数词汇ω出现的次数

  • IDF(Inverse Document Frequency):即逆向文档频率,指一个词汇在文档中的类别区分度。它认为一个词汇出现在文档的数量越少,这个词汇对该文档就越重要,就越能通过这个词汇把该文档和其他文档区分开
    I D F ω = log ⁡ 语料库中的文档总数 包含词汇 ω 的文档数 + 1 \mathrm{ IDF_\omega=\log \frac{语料库中的文档总数}{包含词汇\omega的文档数+1}} IDFω=log包含词汇ω的文档数+1语料库中的文档总数

IDF是一个相对权重值, log ⁡ \log log的底数可以自定义。其中分母加1是为了避免分母为0(有些单词可能不在文档中出现)

某一特定文档内的高频词汇,以及该词汇在整个文档集合中的低频率文档,可以产生出高权重的TF-IDF。因此,TF-IDF倾向于过滤掉常见的词汇,保留重要的词汇
T F  ⁣ −  ⁣ I D F ω = T F ω × I D F ω \mathrm{ TF\!-\!IDF_\omega = TF_\omega×IDF_\omega} TFIDFω=TFω×IDFω

以下是一个示例:

假设一篇文章中共有2000个单词,“中国”出现100次。假设全网共有1亿篇文章,其中包含“中国”的有200万篇。求单词“中国”的TF-IDF值
T F ( 中国 ) = 100 / 2000 = 0.05 I D F ( 中国 ) = log ⁡ 10 1 亿 200 万 + 1 = 1.70 T F  ⁣ −  ⁣ I D F ( 中国 ) = 0.05 × 1.70 = 0.085 \begin{align} & \mathrm{TF(中国) = 100 / 2000 = 0.05} \notag \\[2ex] & \mathrm{IDF(中国) = \log_{10} \frac{1亿}{200万+1} = 1.70} \notag \\[3ex] & \mathrm{TF\!-\!IDF(中国) = 0.05 × 1.70 = 0.085} \notag \end{align} TF(中国)=100/2000=0.05IDF(中国)=log10200+11亿=1.70TFIDF(中国)=0.05×1.70=0.085

通过计算文档中词汇的TF-IDF值,我们就可以提取文档中的特征属性。即就是将TF-IDF值较高的词汇,作为文档的特征属性

Sklearn提供了计算TF-IDF值的API:TfidfVectorizer。具体使用详见下篇:传送门


  • 23
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值