TF-IDF算法:
TF:词频(Term Frequency),即在分词后,某一个词在文档中出现的频率。
IDF:逆文档频率(Inverse Document Frequency)。在词频的基础上给每个词分配权重,如果有三个词的词频一样,但这并不代表这三个词在这篇文章的重要性是一样的,因此还要给这三个词分配权重,IDF就是某个词在在整个语料库中少见但是在这边文章中多次出现,很可能反映了此文章的特性,因此IDF就高。等于语料库中文档总数比上包含改词的文档数的对数
某个词对文章的重要性越高,它的TF-IDF值就越大。
算法细节:
词频(TF) = 某个词在文章中的出现次数/文章的总次数 或者 某个词在文章中出现的次数/该文出现次数最多的词的出现次数(用于比较长的文章)
逆文档频率(IDF) = log(语料库的文档总数/(包含该词的文档数+1)) 为了避免分母为0即所有文档都不包含该词,因此分母加一。
TF-IDF= TF*IDF
python实现关键词提取:
首先要安装jieba分词的包
import jieba
import jieba.analysetop_keywords1 = jieba.analyse.extract_tags('我爱北京天安门', topK=10, withWeight=True)#可用
allowPOS参数为限定范围词性类型
输出结果为:
[('天安门', 4.49770143677), ('北京', 2.33370115436)]