当前位置: 首页 > 后端技术 > Python

关键词抽取-TFIDF(一)

时间:2023-03-26 11:37:30 Python

系列文章✓词向量✗亚当,sgd✗梯度消失和梯度爆炸✗初始化方法✗过拟合和欠拟合✗评价&损失函数说明✗深度学习模型和常见任务描述✗RNN时间复杂度✗Neo4j图数据库分词、词向量TfidfVectorizer基本介绍语料库中重要的文档之一。一个词的重要性与其在文档中出现的次数成正比,但与其在语料库中出现的频率成反比。例如:为了得到一篇文档的关键词,我们可以对给定的文档进行如下操作,我们进行“词频”(TermFrequency,缩写为TF)计算每个词的权重,这个权重称为“逆文档频率”(InverseDocumentFrequency,缩写为IDF),其大小与一个词的常用程度成反比。算法详情基本步骤1.计算词频。考虑到文章长度不同,为了方便不同文章的对比,对“词频”进行了标准化。词频:TF=文章中某个词的出现频率。词频标准化:2.计算逆文档频率。如果一个词越常见,那么分母就会越大,逆文档频率就会越小,越接近0。逆文档频率:其中,语料库(corpus)是用来模拟语言所处的环境用过的。3.计算TF-IDF。可以看出,TF-IDF与文档中某个词的出现次数成正比,与该词在整个语言中出现的次数成反比$TF-IDF=TF*IDF$算法优缺点优点:TF-IDF算法优点是简单快速,结果更符合实际情况。缺点是单纯以“词频”来衡量一个词的重要性不够全面,有时重要的词可能出现的次数并不多。该算法不能反映词的位置信息,出现在前面位置的词和出现在后面位置的词被认为具有相同的重要性,这是不正确的。对于文档中出现次数较少的重要人名和地名,抽取效果不佳。应用场景应用场景介绍1)搜索引擎;2)关键词提取;3)文本相似度;4)文本摘要可执行示例#python:3.8#sklearn:0.23.1#1.CountVectorizer的作用是将文本文档转化为计数的稀疏矩阵fromsklearn.feature_extraction.textimportCountVectorizercorpus=['Thisisthefirstdocument.','这个文档是第二个文档。','这是第三个','这是第一个文档吗?',]vectorizer=CountVectorizer()X=vectorizer.fit_transform(corpus)#查看每个词的位置print(vectorizer.get_feature_names())#['and','document','first','is','one','second','the','third','this']#查看结果print(X.toarray())#[[011100101]#[020101101]#[100110111]#[011100101]]#2、TfidfTransformer:用于计算tf-idffromsklearn.feature_extraction.textimportTfidfTransformertransform=TfidfTransformer()Y=transform.fit_transform(X)print(Y.toarray())#输出tfidf的值#[[0.469791390.580285820.3840.8520.0.384085240.0.38408524]#[0.0.68762360.0.281088670.0.538647620.281088670.0.28108867]#[0.511848510.0.0.267103790.511848510.0.267103790.51#03.846]#0.51118280.469791390.580285820.384085240.0.0.384085240.0.38408524]]#3、TfidfVectorizer:TfidfVectorizer相当于CountVectorizer和TfidfTransformer的组合来自sklearn.feature_extraction.textctorimportTfidusVectorThisisthefirstdocument=.第二个文档。','这是第三个。','这是第一个文档吗?',]vectorizer=TfidfVectorizer()#构建计算词频(TF)X=vectorizer.fit_transform(corpus)print(vectorizer.get_feature_names())#['and','document','first','is','one','second','the','third','this']print(X.shape)#(4,9)参数说明CountVectorizerTfidfTransformer从功能来看,我们也可以发现还有TfidfVectorizer=CountVectorizer+TfidfTransformerhaTfidfVectorizer