-
TF-IDF原理
TF-IDF(词频-逆文本频率),是一种统计方法,用于评估一个词对于一个文本的重要程度,词的重要性随着它在文件中出现的次数成正比,但同时会因为它在多个文本中出现的频率成反比。总的来说,一个词语在一篇文章中出现的次数越多,同时在所有文档中出现的次数越少,就越能代表该文章。
TF-IDF主要是有词频TF和IDF逆文本频率IDF组成,公式为:
T F − I D F = T F ∗ I D F TF-IDF = TF * IDF TF−IDF=TF∗IDF
TF是指语料库中的词在该句子中出现的频率,公式如下;
T F = 在 某 一 类 中 词 条 w 出 现 的 次 数 该 类 中 所 有 的 词 条 数 目 TF = \frac{在某一类中词条w出现的次数}{该类中所有的词条数目} TF=该类中所有的词条数目在某一类中词条w出现的次数
IDF的定义如下:
I D F ( x ) = l o g 语 料 库 的 文 档 总 数 + 1 包 含 词 条 w 的 文 档 数 + 1 + 1 IDF(x) = log\frac{语料库的文档总数+1}{包含词条w的文档数+1}+1 IDF(x)=log包含词条w的文档数+1语料库的文档总数+1+1
IDF越大,则越说吗该词条具有很好的类别区分能力,上述公式是经过IDF平滑后的公式,防止因为某一个词语没出现在语料库的时候,分母变为0。 -
文本矩阵化
import pandas as pd
# 将txt文件转化为dataframe
f = open('/Users/weihongyin/知识星球/nlp/cnews/cnews.test.txt').read()
from sklearn.feature_extraction.text import TfidfVectorizer
corpus = []
corpus.append(" ".join(jieba.cut(f)))
vectorizer = TfidfVectorizer()
tfidf = vectorizer.fit_transform(corpus)
print(tfidf.shape)
print(tfidf)
- 互信息
互信息是衡量两个随机变量相关性的一个指标,即一个随机变量中包含另一个随机变量的信息量的多少。
特征筛选: