GooSeeker分词软件的tf-idf算法和特征词选择

2026-2-27 13:29| 发布者: Fuller| 查看: 17| 评论: 0

摘要: 1,背景说明GooSeeker分词软件在扩展功能模块上支持了经典的tf-idf算法和使用tf-idf手工筛选特征词的功能。计算tf-idf的算法有很多,各自不同,为了适应各种不同的计算场景。此前,我们发布过两篇文章,介绍怎样利用 ...

1,背景说明

GooSeeker分词软件扩展功能模块上支持了经典的tf-idf算法和使用tf-idf手工筛选特征词的功能。

计算tf-idf的算法有很多,各自不同,为了适应各种不同的计算场景。此前,我们发布过两篇文章,介绍怎样利用从GooSeeker分词软件导出的词频表计算tf-idf值。那个算法十分简化,忽略了很多信息。而最经典的算法的特点是:

  1. 一个词的tf-idf是这个词在某个文档中的tf-idf值。通常我们分析的语料含有很多文档,同样一个词,在不同文档中算出来的tf-idf值是不同的。如果不含有这个词,tf-idf=0。如果只利用词频表计算tf-idf,得到的只是一个全局的值,而不是在每一个文档中的tf-idf,所以被称为被简化的算法。
  2. tf-idf = tf * idf,其中tf的计算公式有很多变种。最常见的是线性公式和子线性公式,后者可以抑制高频词的影响。
  3. 全局tf-idf值:可以把一个词在每个文档中算得的tf-idf累加在一起得到这个词的全局tf-idf值

GooSeeker分词软件的扩展功能模块计算了一个词在每个文档中的tf-idf值,然后累加在一起得到这个词的全局tf-idf值。所以,从扩展模块V6.0.0版本开始,导出的分词结果表有下面的变化:

  • 词频表:增加了一个字段TF-IDF,就是全局tf-idf值
  • 选词矩阵TFIDF表:以前的版本导出的选词矩阵表存的是词频,新版本还可以导出一个新加的表:选词矩阵TFIDF表,里面存的是一个词在某个文档中的tf-idf值

图1.词频表

图2.选词矩阵表

图3.选词矩阵TFIDF表

2,tf-idf计算公式

如上图3所示,算出来的tf-idf值存成一个矩阵,某个词对应某个文档算出来一个值,该词对应另一个文档算出来另一个值。计算公式是:

    TF-IDF = TF * IDF

其中:

    IDF = log((文档总数 + 1) / (包含该词的文档数 + 1)) + 1

    TF = 词在该文档中的词频 / 该文档的总词频


观察上图1红框里面的两个词的tf-idf值,这两个词总词频和文档频率都一样,但是tf-idf值是不一样的。因为在计算TF的时候,分母是“该文档的总词频”,如果文档的词数多,这个分母的值就大;另外,如果在某个文档中出现这个词的次数多,另一个文档中出现的次数少,也会影响到tf-idf的值。所以,这样算出来的tf-idf包含的信息比以前的简化算法要多。

3,使用tf-idf值筛选词语

GooSeeker分词软件的一个重要功能是手工做特征选择。在GooSeeker分词扩展模块的聚类分析和LDA分析那里已经体会过通过“调参”改变所选特征词的范围,那是自动化的特征选择,只能通过改变一些参数来影响选择范围。要想精确控制选择哪些词,需要手工的特征选择。

在GooSeeker分词软件的扩展功能模块上,可以利用tf-idf值进行排序,把最前面的词选出来。如下图,勾选“所有页”,表示要选择所有词,在弹出框中决定是否再利用tf-idf进行排序,然后只要符合条件的词。这样做到既一次性选择所有词,又可以手工设定筛选条件。还可以在选词结果页面上观察所选的词,把不需要的词剔除掉。


鲜花

握手

雷人

路过

鸡蛋

最新评论

GMT+8, 2026-2-27 16:33