TF-IDF详解与应用

先看:
https://www.jianshu.com/p/c7e2771eccaa
但是链接中一些参数如max_df,min_df写得不够清晰。

原理介绍

参考:
https://blog.csdn.net/longyi_java/article/details/8625122
TF-IDF(term frequency–inverse document frequency)是一种用于信息检索与数据挖掘的常用加权技术。
TF意思是词频(Term Frequency),IDF意思是逆文本频率指数(Inverse Document Frequency)。
TF-IDF详解与应用_第1张图片
TF-IDF详解与应用_第2张图片TF-IDF详解与应用_第3张图片

sklearn中实战

from sklearn.feature_extraction.text import TfidfVectorizer
orpus = [
  'This is the first document.',
   'This document is the second document.',
   'And this is the third one.',
   'Is this the first document?',
]
tfidf = TfidfVectorizer()
X = tfidf.fit_transform(orpus)
print(X.toarray())
print(X.shape)
print(type(X))

输出:

[[0.         0.46979139 0.58028582 0.38408524 0.         0.
  0.38408524 0.         0.38408524]
 [0.         0.6876236  0.         0.28108867 0.         0.53864762
  0.28108867 0.         0.28108867]
 [0.51184851 0.         0.         0.26710379 0.51184851 0.
  0.26710379 0.51184851 0.26710379]
 [0.         0.46979139 0.58028582 0.38408524 0.         0.
  0.38408524 0.         0.38408524]]
(4, 9)
<class 'scipy.sparse.csr.csr_matrix'>

小心这里输出的类型,是一种系数矩阵,所以需要toarray()把他显示。

tfidf.get_feature_names()

在这里插入图片描述
小结一下~这里tfidfvectorizer吃进去的是一个列表,吐出来的是一个矩阵。这样我们就可以用各种模型处理了。
正如同官网中介绍的一样:
TF-IDF详解与应用_第4张图片
---------------------------我是分割线------------------------------------
看到上面,我们已经大概掌握了tfidf,总之就是把一句话用一个数字表示的向量来表示,向量的元素即tfidf。
一些补充参见:
https://www.cnblogs.com/pinard/p/6693230.html
下面介绍一些高级的参数:
TF-IDF详解与应用_第5张图片
来自:https://www.jianshu.com/p/c39feaf0d62f

TF-IDF详解与应用_第6张图片
TF-IDF详解与应用_第7张图片
来自:https://blog.csdn.net/laobai1015/article/details/80451371

你可能感兴趣的:(NLP,tfidf,nlp)