公式:
T
F
i
j
=
n
i
,
j
∑
k
n
k
,
j
TF_{ij} = \frac{n_{i,j}}{\sum_{k}n_{k,j}}
TFij=∑knk,jni,j或
T
F
w
=
在
某
一
类
中
词
条
w
出
现
的
次
数
该
类
中
所
有
的
词
条
条
目
TF_{w} = \frac{在某一类中词条w出现的次数}{该类中所有的词条条目}
TFw=该类中所有的词条条目在某一类中词条w出现的次数
n
i
,
j
n_{i,j}
ni,j是该词在
d
j
d_{j}
dj中出现的次数,分母则是文件
d
j
d_{j}
dj中所有词汇出现的次数总和。
公式:
I
D
F
i
=
log
∣
D
∣
{
j
:
t
i
∈
d
j
}
IDF_{i} = \log{\frac{|D|}{\{j: t_{i}\in d_{j}\}}}
IDFi=log{j:ti∈dj}∣D∣
其中|D|是语料库中的文件总数,KaTeX parse error: Expected '}', got 'EOF' at end of input: …t_{i}\in d_{j}|表示包含词语
t
i
t_{i}
ti的文件综述,但是如果词语不在语料库中,会导致分母为0,因此一般情况下使用KaTeX parse error: Expected '}', got 'EOF' at end of input: …t_{i}\in d_{j}|
所以公式是
I
D
F
=
log
语
料
库
的
文
档
总
数
包
含
词
条
w
的
文
档
数
+
1
IDF = \log{\frac{语料库的文档总数}{包含词条w的文档数 + 1}}
IDF=log包含词条w的文档数+1语料库的文档总数
1.3. TF-IDF的计算
T
F
−
I
D
F
=
T
F
∗
I
D
F
TF-IDF = TF * IDF
TF−IDF=TF∗IDF
2. TF-IDF应用
搜索引擎
关键词抽取
文本相似度
文本摘要
3. TF-IDF的实现
3.1. NLTK的实现
from nltk.text import TextCollection
from nltk.tokenize import word_tokenize
#首先,构建语料库corpus
sents=['this is sentence one','this is sentence two','this is sentence three']
sents=[word_tokenize(sent)for sent in sents]#对每个句子进行分词print(sents)#输出分词后的结果
corpus=TextCollection(sents)#构建语料库print(corpus)#输出语料库#计算语料库中"one"的tf值
tf=corpus.tf('one',corpus)# 1/12print(tf)#计算语料库中"one"的idf值
idf=corpus.idf('one')#log(3/1)print(idf)#计算语料库中"one"的tf-idf值
tf_idf=corpus.tf_idf('one',corpus)print(tf_idf)