【NLP】入门(三):TF-IDF(理论篇)

2023-08-30 14:51:44 浏览数 (1)

前言

在上篇博文 【NLP】入门(二):搜索引擎是怎么工作的 中,博主简单地介绍了搜索引擎的工作原理,并且在文末提到了处理匹配排序最有名的算法之一 TF-IDF。

接下来,跟随博主来了解一下 TF-IDF 算法;

什么是 TF-IDF ?

TF-IDF (term frequency–inverse document frequency) 是一种用于信息检索与数据挖掘的常用加权技术,常用于挖掘文章中的关键词,而且算法简单高效,常被工业用于最开始的文本数据清洗。 TF-IDF 有两层意思,一层是 "词频"(Term Frequency,缩写为 TF),另一层是 "逆文档频率"(Inverse Document Frequency,缩写为 IDF)。

如果直接解释 TF (词频), IDF (逆文本频率指数),对于从来没接触过这些说法的人,肯定是感觉是云里雾里的。

这里我们接着沿用上一篇博文里提到的关于咨询公司的事件。假如你是个新手房产中介,当客户来咨询楼盘相关信息时,你需要快速的从所有楼盘资料中,定位到某几篇需要的文档中,那应该怎么做呢?

这时就想起了上篇博文 【NLP】入门(二):搜索引擎是怎么工作的 中提到的倒排索引,将资料进行归类,我们将去寻找每篇文档的关键词,那些在某篇文档中出现频率很高的词,比如每篇文档中基本都会有谈论 “租房”,“新房” 或 “二手房” 这样的字眼,这些高频的字眼其实就代表着这篇文档的属性, 我们大概也能通过这些字眼判断这是不是客户关心的问题。

但是有一个问题,很多语气词,没有代表意义的词在一篇文档中同样频率很高,比如 “我”,“中介”,“和” 这种词,几乎每篇文档中都会存在,而且提及很多次。 它们很明显,虽然词频高,但是不具有区分力,用上面的方法,这些词也会被误认为很重要。

因此引入了一个全局参数(IDF),来判断这个词在所有文档中,是不是垃圾信息,而不是光看局部信息(某篇文档中的词频 TF),以至于带来统计偏差;

很明显,“我”,“中介”,“和” 这种词在全量文档中就是这样的垃圾信息, 而 “租房”,“新房” 或 “二手房”是在全局下有区分力的词。所以如果我们把局部(TF)和全局(IDF)的信息都整合起来一起看的时候,我们就能快速定位到具体的文档了。

具体解析

接下来我们将上面的内容用数字来进行表示,这样会更加生动形象。

TFTFTF

中介

租房

买房

文档1

0

9

4

1

文档2

5

21

1

15

文档3

2

3

1

0

IDFIDFIDF

中介

租房

买房

区分力

0.1

1.9

21.1

15.6

TF×IDFTF times IDFTF×IDF

中介

租房

买房

文档1

0

17.1

84.4

15.6

文档2

0.5

39.9

21.1

234

文档3

0.2

5.7

21.1

0

TF-IDF 两者结合其实就是两者相乘的意思,这样的结果意味着所有的文档,都能用一串集合所有词的分数来表示。通过分数的高低,我们也能大概看出这篇文档的关键内容是什么。比如第一篇,虽然 TF 告诉我们文档中 “中介” 这个词最多,但是 IDF 却告诉我们 “租房” 在文档中更具有代表性,所以根据 TF-IDF 的结合,这篇文档更具有 “租房” 属性。

那我们在搜索时又都经历了什么呢?

假设我们搜索关键词 “中介租房”,机器会利用词表的模式计算 “中介租房” 这个问题的 TF-IDF 值,然后会计算问句和每篇文档的 cos 距离,这个例子中的计算过程,简单来说,就是将文档按照词的维度放到一个四维空间中,然后把问句同样也放到这个空间里,最后看空间中这个问题离哪一个文档的距离最近,越近则相似度越高。通过这样的方式呢,我们就能找到搜索问题的最佳匹配文档了。

说到这里,不得不提到一个在 NLP 问题中非常重要的东西,那就是向量。我们刚刚把问句或者是文档,用数字的模式,投射到空间中,都是将问句或文档转变成向量,然后按照向量的模式指向空间中的某个位置。

举个例子,第一串数字就是文档1的向量表达,第二串是文档2的向量表达,第三串是问题的向量表达。他们都是空间中的点。

中介

租房

买房

文档1

0

17.1

84.4

15.6

文档2

0.5

39.9

21.1

234

问题

0

1×times×1.9

1×times×21.1

0

这里使用三维空间代替四维空间:

所以,TF-IDF 是一种向量表达形式,以后在接触 NLP 模型的过程中,还会不断听到词向量,句向量,文章向量等等不同的向量表达形式。

后记

以上就是 【NLP】入门(三):TF-IDF(理论篇) 的全部内容了。

本文简单地从理论上介绍了 TF-IDF,下一篇博文 【NLP】入门(四):TF-IDF(代码篇) 将从代码的角度来诠释 TF-IDF,敬请期待,希望本篇博文对大家有所帮助!

0 人点赞