一种常用的文本特征提取算法
TF-IDF的主要思想是,一个单词在一篇文章中出现的频率越高,且在其他文章中出现的频率越低,则该单词对当前文本的重要程度就越高,TF-IDF值就越大。
inverse document frequency 用于信息检索和文本分析的技术,可以用以评估单词对于文档的重要性程度。
TF-IDF由两部分组成,分别是TF和IDF。 其中TF描述的是一个单词在某个文档中出现的频率。 一般来讲,一个单词在一个文档中出现的频率越高,则该单词对于当前文档越重要。 比如,对一篇以“汽车”为主题的文章进行词汇统计,发现“汽车”是一个高频词,可以被定义为文章的关键词。 但我们同时发现,一些通用词汇的出现频率同样很高,比如“是”、“的”、“如果”,这类词汇虽然属于高频词,但几乎在所有文章中都会出现,因此并不具备文档区分能力,因此不能作为关键词使用。
为了尽量减少通用词的干扰,这里引入“逆文档频率”概念。 逆文档频率(IDF)代表了单词对于文档的区分度,如果一个单词在一篇文章中出现,并且在其他文章中很少出现,则认为该单词对于当前文档的区分能力较强,即IDF值较大,否则认为该单词对文档的区分能力较差。 对于“的”、“是”、“如果”等通用词汇,由于它们几乎会出现在任何一篇文档中,因此这些单词的IDF值很小。
将TF值和IDF值做乘法,即可得到一个单词的TF-IDF值。 TF-IDF综合考虑了“单词的重要性与它在文档中出现频率成正比,与该单词在全部文档中出现频率成反比”两方面因素,来衡量一个单词的重要程度。 如果一个单词的TF和IDF值都很高,说明该单词既是一个高频词又不是通用词,对于当前文档而言是一个重要的词汇。
下面以文章关键词自动提取为例,介绍TF-IDF的计算方法。 笔者获取了某门户网站2015年10月6日当天发布的文章共计12382篇,现希通过对每篇文章提取出关键词,用于后续对文章进行分类。
显然,从数据量和劳动效率的角度考虑,手工提取关键词是不现实的,而借助TF-IDF方法可以实现关键词的快速自动提取。
拿到数据后的第一项工作,是对文本内容做基本的数据清洗工作,包括去掉特殊字符、通用词等。 接下来,使用结巴分词工具对文章内容进行分词处理,得到分词后的文章内容。
词频即计算某个单词在一篇文章中出现的频率,计算公式为:
TF = 单词在一篇文章中出现的次数 / 这篇文章的总词汇数
以一篇名为《应届生到底适不适合去深圳? 》的文章为例,这篇文章的总词汇数为486个,其中“应届 生”一词共出现8次,“深圳”一词出现3次,“毕业”一词出现6次,由此可以计算出这三个单词
一个单词的逆文档频率,由全部文档数除以包含该单词的文档数,再取对数得到。 如果一个单词越常见,那么分母就越大,逆文档频率就越接近0。
IDF = log(全部文档数/包含该词的文档总数+1)
*分母加1是为了避免分母为0的情况(即所有文档都不包含该词)
在本次用于训练的12382篇文章中,出现“应届生”一词的文章共有18篇,出现“深圳”一词的文章共有69篇,出现“毕业”一词的文章共有5篇,由此可以计算出各个单词的逆文档频率为:
TF-IDF值由TF值和IDF值相乘得到,计算公式为:
TF-IDF = TF *IDF
上文中,我们已经计算得到了“应届生“、“深圳”、“毕业”三个单词的TF值和IDF值,那么这三个单词的TF-IDF值为:
通过上述计算过程可以发现,一个单词的TF-IDF值与其在文档中出现的频率成正比,与其在整个语料中的出现的频率成反比,TF-IDF值越大,说明该单词对于当前文档的重要程度越高,反之亦然。 所以自动提取关键词,就是计算出文档中所有单词的TF-IDF值,然后按降序排列,取排在最前面的几个单词。
仍然以《应届生到底适不适合去深圳? 》一文为例,笔者计算了该文章全部486个单词的TF-IDF值并按降序排序,部分结果展示如下:
可以看到在全文486个单词中,TF-IDF值最大的3个单词分别是: “应届生“、“毕业”和“职业”。 假设我们要为该文章提取出3个关键词,则通过TF-IDF算法自动提取的结果分别是: “应届生“、“毕业”和“职业”。
另外我们还发现,“如果”、“是”这类通用词的TF-IDF值很小,主要原因是虽然它们在文章中出现的频率很高,但由于在大多数文章中都出现过,所以IDF值很小导致TF-IDF值很小,说明这些单词对于不同文档的区分能力较弱。
所以,与使用词频来暴力统计关键词相比,TF-IDF算法可以帮助我们剔除掉一些虽然词频很高,但是并没有明显区分能力的单词,从而提高关键词提取的准确度。
以上就是TF-IDF值计算的实现过程,实际上Python已经帮助我们定义好了相关的函数,直接调用即可。
https://radimrehurek.com/gensim/models/tfidfmodel.html
TF-IDF算法的实现逻辑清晰,且实现起来简单快速,在很多实际场景中都取得了较好的应用效果,主要包括: 使用TF-IDF进行文本关键词提取,TF-IDF结合距离公式来计算文本相似度,以及实现文章自动摘要(根据单词的TF-IDF值筛选出包含信息最多的句子)等等。
不过,TF-IDF算法也有一定的局限性。 它仅考虑了词频对于文本的重要程度,出现在文章不同位置的单词重要性权重是一样的。 而事实上,一个单词的重要程度与它在文本中出现的位置是有关系的,比如我们认为出现在摘要和段落首行的单词一般都具有总结性作用,因此应该被赋予更高的权重。
关于TF-IDF应用的更多想法,欢迎大家在文章下方留言讨论。
:我们是毕马威旗下的专业数据挖掘团队,微信公众号(kpmgbigdata)每周六晚8点准时推送一篇原创数据科学文章。我们的作品都由项目经验丰富的博士或资深顾问精心准备,分享结合实际业务的理论应用和心得体会。欢迎大家关注我们的微信公众号,关注原创数据挖掘精品文章;您也可以在公众号中直接发送想说的话,与我们联系交流。

一种常用的文本特征提取算法
TF-IDF的主要思想是,一个单词在一篇文章中出现的频率越高,且在其他文章中出现的频率越低,则该单词对当前文本的重要程度就越高,TF-IDF值就越大。
inverse document frequency 用于信息检索和文本分析的技术,可以用以评估单词对于文档的重要性程度。
TF-IDF由两部分组成,分别是TF和IDF。 其中TF描述的是一个单词在某个文档中出现的频率。 一般来讲,一个单词在一个文档中出现的频率越高,则该单词对于当前文档越重要。 比如,对一篇以“汽车”为主题的文章进行词汇统计,发现“汽车”是一个高频词,可以被定义为文章的关键词。 但我们同时发现,一些通用词汇的出现频率同样很高,比如“是”、“的”、“如果”,这类词汇虽然属于高频词,但几乎在所有文章中都会出现,因此并不具备文档区分能力,因此不能作为关键词使用。
为了尽量减少通用词的干扰,这里引入“逆文档频率”概念。 逆文档频率(IDF)代表了单词对于文档的区分度,如果一个单词在一篇文章中出现,并且在其他文章中很少出现,则认为该单词对于当前文档的区分能力较强,即IDF值较大,否则认为该单词对文档的区分能力较差。 对于“的”、“是”、“如果”等通用词汇,由于它们几乎会出现在任何一篇文档中,因此这些单词的IDF值很小。
将TF值和IDF值做乘法,即可得到一个单词的TF-IDF值。 TF-IDF综合考虑了“单词的重要性与它在文档中出现频率成正比,与该单词在全部文档中出现频率成反比”两方面因素,来衡量一个单词的重要程度。 如果一个单词的TF和IDF值都很高,说明该单词既是一个高频词又不是通用词,对于当前文档而言是一个重要的词汇。
下面以文章关键词自动提取为例,介绍TF-IDF的计算方法。 笔者获取了某门户网站2015年10月6日当天发布的文章共计12382篇,现希通过对每篇文章提取出关键词,用于后续对文章进行分类。
显然,从数据量和劳动效率的角度考虑,手工提取关键词是不现实的,而借助TF-IDF方法可以实现关键词的快速自动提取。
拿到数据后的第一项工作,是对文本内容做基本的数据清洗工作,包括去掉特殊字符、通用词等。 接下来,使用结巴分词工具对文章内容进行分词处理,得到分词后的文章内容。
词频即计算某个单词在一篇文章中出现的频率,计算公式为:
TF = 单词在一篇文章中出现的次数 / 这篇文章的总词汇数
以一篇名为《应届生到底适不适合去深圳? 》的文章为例,这篇文章的总词汇数为486个,其中“应届 生”一词共出现8次,“深圳”一词出现3次,“毕业”一词出现6次,由此可以计算出这三个单词
一个单词的逆文档频率,由全部文档数除以包含该单词的文档数,再取对数得到。 如果一个单词越常见,那么分母就越大,逆文档频率就越接近0。
IDF = log(全部文档数/包含该词的文档总数+1)
*分母加1是为了避免分母为0的情况(即所有文档都不包含该词)
在本次用于训练的12382篇文章中,出现“应届生”一词的文章共有18篇,出现“深圳”一词的文章共有69篇,出现“毕业”一词的文章共有5篇,由此可以计算出各个单词的逆文档频率为:
TF-IDF值由TF值和IDF值相乘得到,计算公式为:
TF-IDF = TF *IDF
上文中,我们已经计算得到了“应届生“、“深圳”、“毕业”三个单词的TF值和IDF值,那么这三个单词的TF-IDF值为:
通过上述计算过程可以发现,一个单词的TF-IDF值与其在文档中出现的频率成正比,与其在整个语料中的出现的频率成反比,TF-IDF值越大,说明该单词对于当前文档的重要程度越高,反之亦然。 所以自动提取关键词,就是计算出文档中所有单词的TF-IDF值,然后按降序排列,取排在最前面的几个单词。
仍然以《应届生到底适不适合去深圳? 》一文为例,笔者计算了该文章全部486个单词的TF-IDF值并按降序排序,部分结果展示如下:
可以看到在全文486个单词中,TF-IDF值最大的3个单词分别是: “应届生“、“毕业”和“职业”。 假设我们要为该文章提取出3个关键词,则通过TF-IDF算法自动提取的结果分别是: “应届生“、“毕业”和“职业”。
另外我们还发现,“如果”、“是”这类通用词的TF-IDF值很小,主要原因是虽然它们在文章中出现的频率很高,但由于在大多数文章中都出现过,所以IDF值很小导致TF-IDF值很小,说明这些单词对于不同文档的区分能力较弱。
所以,与使用词频来暴力统计关键词相比,TF-IDF算法可以帮助我们剔除掉一些虽然词频很高,但是并没有明显区分能力的单词,从而提高关键词提取的准确度。
以上就是TF-IDF值计算的实现过程,实际上Python已经帮助我们定义好了相关的函数,直接调用即可。
https://radimrehurek.com/gensim/models/tfidfmodel.html
TF-IDF算法的实现逻辑清晰,且实现起来简单快速,在很多实际场景中都取得了较好的应用效果,主要包括: 使用TF-IDF进行文本关键词提取,TF-IDF结合距离公式来计算文本相似度,以及实现文章自动摘要(根据单词的TF-IDF值筛选出包含信息最多的句子)等等。
不过,TF-IDF算法也有一定的局限性。 它仅考虑了词频对于文本的重要程度,出现在文章不同位置的单词重要性权重是一样的。 而事实上,一个单词的重要程度与它在文本中出现的位置是有关系的,比如我们认为出现在摘要和段落首行的单词一般都具有总结性作用,因此应该被赋予更高的权重。
关于TF-IDF应用的更多想法,欢迎大家在文章下方留言讨论。
:我们是毕马威旗下的专业数据挖掘团队,微信公众号(kpmgbigdata)每周六晚8点准时推送一篇原创数据科学文章。我们的作品都由项目经验丰富的博士或资深顾问精心准备,分享结合实际业务的理论应用和心得体会。欢迎大家关注我们的微信公众号,关注原创数据挖掘精品文章;您也可以在公众号中直接发送想说的话,与我们联系交流。
阿里巴巴申请特征提取等系列专利有助于提高推荐结果的准确性
金融界2025年7月7日消息,国家知识产权局信息显示,杭州阿里巴巴海外互联网产业有限公司;阿里巴巴新加坡控股有限公司申请一项名为“特征提取方法、模型训练方法、对象推荐方法、计算设备、存储介质及程序产品”的专利,公开号CN120257204A,申请日期为2025年03月。
专利摘要显示,本申请实施例提供一种特征提取方法、模型训练方法、对象推荐方法、计算设备、存储介质及程序产品。其中,获取对象的对象图像以及描述文本,提取所述对象图像中的图像特征及所述描述文本中的文本特征,获取所述对象的交互行为数据,并从所述交互行为数据中提取所述对象对应的行为特征,由对象的文本特征、图像特征、以及行为特征构成所述对象对应的多个模态特征,其中,多个模态特征用以构建对象的对象特征。
