TF-IDF提取的一些常见问题及解决办法(一)

1、关键词提取关键词抽取就是通过一定的方法抽取出能表达文章的中心主题的一系列方法。有监督关键词提取方法算法是一种基于图的用于关键词抽取和文档摘要的排序算法,由谷歌的网页重要性排序算法算法改进而来,它利用一篇文档内部的词语间的共现信息(语义)便可以抽取关键词,它能够从一个给定的文本中抽取出该文本的关键词、关键词组,并使用抽取式的自动文摘方法抽取出该文本的关键句。

1、关键词提取

为了方便用户快速理解文章的中心主题,会抽取文​​章的一些中心词来表达文章的中心思想。关键词提取是通过一定的方法提取文章中心主题的一系列方法。

2、关键词提取方法分类2.1、有监督和无监督提取方法

无监督关键词提取方法主要有三类:基于统计特征的关键词提取(TF、TF-IDF);基于词图模型的关键词提取(,);基于主题模型(LDA)的关键词提取

有监督的关键词提取方法

关键字提取过程被视为一个二分类问题。首先提取候选词,然后对每个候选词进行标注,无论是否是关键字,然后训练一个关键字提取分类器。当有新文档到达时,将所有候选词提取出来,然后使用训练好的关键词提取分类器对每个候选词进行分类,最后将标记为关键词的候选词作为关键词。

2.2、无监督和有监督方法的优缺点

无监督方法不需要对训练集进行人工标注的过程,因此速度更快,但由于无法有效利用多种信息对候选关键词进行排序,效果无法与有监督方法相媲美;而有监督的方法可以通过训练和学习进行更多的调整。这类信息对判断关键词的影响较好,而有监督的文本关键词提取算法需要较高的人工成本。因此,现有的文本关键词提取主要采用适用性强的无监督关键词提取。

2.3、关键词提取工具包3、常用关键词提取方法3.1、 3.1.1、TF-IDF算法介绍

TF-IDF(term – , term – )是一种常用的信息检索( )和文本挖掘(文本)的加权技术。TF-IDF 是一种统计方法,用于评估单词对文档集或语料库中的一个文档的重要性。一个词的重要性与它在文档中出现的次数成正比,但与它在语料库中出现的频率成反比。TF-IDF的主要思想是:如果一个词在一篇文章中频繁出现TF,而在其他文章中很少出现,则认为该词或词组具有良好的类别区分能力,适合分类。

词频 (TF) 表示词(关键字)在文本中出现的频率。这个数字通常被归一化(通常是词频除以文章中的总词数),以防止它偏向长文件。表示如下:

TF = 单词在该内容中出现的次数/在该内容中出现的单词数

逆文档频率 (IDF):特定单词的 IDF 可以通过将文档总数除以包含该单词的文档数,然后取商的对数来获得。如果包含术语 t 的文档较少,且 IDF 较大,则意味着该术语具有良好的类别区分能力。如果词不在语料库中,会导致分母为零,所以一般用1

IDF=log((语料库总文档数包含有单词的文档个数+1)/(语料库总文档数包含有单词的文档数+1)@ >)

TF-IDF=TF * IDF

特定文档中的高词频和整个文档集中该词的低文档频率会导致高权重的 TF-IDF。因此,TF-IDF倾向于过滤掉常用词,保留重要词。

3.1.2、关键字提取实现

import jieba.analyse'''jieba.analyse.extract_tags(sentence, topK=20, withWeight=False, allowPOS=())sentence 为待提取的文本topK 为返回几个 TF/IDF 权重最大的关键词,默认值为 20withWeight 为是否一并返回关键词权重值,默认值为 FalseallowPOS 仅包括指定词性的词,默认值为空,即不筛选'''text = '关键词是能够表达文档中心内容的词语,常用于计算机系统标引论文内容特征、\信息检索、系统汇集以供读者检阅。关键词提取是文本挖掘领域的一个分支,是文本检索、\文档比较、摘要生成、文档分类和聚类等文本挖掘研究的基础性工作\'keywords = jieba.analyse.extract_tags(text, topK=5, withWeight=True, allowPOS=())print(keywords) #[('文档', 0.7683580497346154), ('文本', 0.4587102868907692), ('关键词', 0.45658796811333335), ('挖掘', 0.37005466278512816), ('文本检索', 0.30653250007435895)]

3.1.3、缺点

优势:

可解释性强,实现速度快

缺点:

1)TF-IDF使用文本逆频IDF来加权TF值作为关键词,但是IDF的简单结构并不能有效反映词的重要性和特征词的分布,使得它无法发挥作用调整权重做得很好,所以TF-IDF算法的准确率不是很高,尤其是在文本集已经分类的情况下。

2)本质上IDF是一种试图抑制噪声的加权,简单地认为文本频率低的词更重要,文本频率高的词用处不大。对于大多数文本信息来说,这并不完全正确。IDF结构简单,不能使提取的关键词非常有效地反映词的重要性和特征词的分布,从而不能很好地发挥调整权重的作用。尤其是在同一种语料中,这种方法有很大的弊端,经常会覆盖一些同文本的关键词。

3)特征词的位置因子没有考虑文本的区分度。当条目出现在文档的不同位置时,对区分程度的贡献是不一样的。

4)根据传统的TF-IDF,一些稀有词的IDF(逆文档频率)往往比较高,所以这些稀有词经常被误认为是文档关键词。

5)传统TF-IDF中的IDF部分只考虑特征词与其出现的文本数量的关系,而忽略了一个类别中不同类别之间特征项的分布。

6)对于提取文档中出现频率较低的重要名称和地名无效。

3.2、关键词提取3.2.1、原理介绍

该算法是一种基于图的排序算法,用于关键字提取和文档摘要。它是从谷歌的网页重要性排序算法改进而来的。它利用文档中单词之间的共现信息(语义)来提取关键词,它可以从给定的文本中提取文本的关键词和关键词组,并使用抽取式自动摘要方法提取文本的关键句。

该算法的基本思想是将文档视为一个单词网络,这个网络中的链接代表了单词之间的语义关系。该算法将单词视为“万维网上的节点”,根据单词之间的共现关系计算每个单词的重要性,并将有向边变为无向边。

seo技关键seo_seo关键解码网站营销与搜索引擎优化_seo关键词怎么取

3.2.2、具体构建过程

seo关键解码网站营销与搜索引擎优化_seo技关键seo_seo关键词怎么取

3.2.3、实例

import jieba.analyse'''jieba.analyse.textrank(sentence, topK=20, withWeight=False, allowPOS=())sentence 为待提取的文本topK 为返回几个 textrank 权重最大的关键词,默认值为 20withWeight 为是否一并返回关键词权重值,默认值为 FalseallowPOS 仅包括指定词性的词,默认值为空,即不筛选'''if __name__ == "__main__":    text = "来源:中国科学报本报讯(记者肖洁)又有一位中国科学家喜获小行星命名殊荣!4月19日下午,中国科学院国家天文台在京举行“周又元星”颁授仪式," \           "我国天文学家、中国科学院院士周又元的弟子与后辈在欢声笑语中济济一堂。国家天文台党委书记、" \           "副台长赵刚在致辞一开始更是送上白居易的诗句:“令公桃李满天下,何须堂前更种花。”" \           "据介绍,这颗小行星由国家天文台施密特CCD小行星项目组于1997年9月26日发现于兴隆观测站," \           "获得国际永久编号第120730号。2018年9月25日,经国家天文台申报," \           "国际天文学联合会小天体联合会小天体命名委员会批准,国际天文学联合会《小行星通报》通知国际社会," \           "正式将该小行星命名为“周又元星”。"    # 基于jieba的textrank算法实现    keywords = jieba.analyse.textrank(text,topK=6,withWeight=True)    print(keywords)   #[('小行星', 1.0), ('命名', 0.6266890825831086), ('国际', 0.5926007143549065), ('中国', 0.5078347136494592), ('国家', 0.45833708297743847), ('天文学家', 0.3978444911417721)]

优势:

1) 无监督方式,无需构建数据集进行训练。

2) 算法原理简单,易于部署。

3)继承了思路,效果比较好,相比TF-IDF的方式,可以更充分的利用文本元素之间的关系。

缺点:

1) 分词和文本清洗对结果影响很大,即一些停用词的保留直接影响最终结果。

2) 虽然与TF-IDF相比,不仅使用了词频,但仍然受到高频词的影响。因此,有必要将词性和词频结合起来进行筛选,以获得更好的效果,但词性标注显然是另一个问题。.

3.3、LDA( ) 文档主题生成模型

主题模型是一种统计模型,用于发现出现在文档集合中的抽象“主题”。主题建模是一种常用的文本挖掘工具,用于发现文本正文中隐藏的语义结构。

LDA,也称为三层贝叶斯概率模型,包括词、主题和文档的三层结构;利用文档中单词的共现关系按主题对单词进行聚类,得到“-”和“-word”2的概率分布。

PLSA和LDA的过程是一样的,只是引入了主题分布和词分布的先验

3.2.1、LDA 理论

seo关键解码网站营销与搜索引擎优化_seo技关键seo_seo关键词怎么取

从文档中反转主题分布

反之,既然文档已经生成,那么如何根据已经生成的文档来推断其主题呢?这个从看到的文档中推断出其隐藏主题(分布)的过程(其实就是生成文档的逆过程)就是主题建模的目的:自动发现文档集中的主题(分布)。

也就是说,人类按照文档生成模型写了各种文章,然后扔给电脑,相当于电脑看到了已经写好的文章。现在计算机需要根据一篇文章中看到的一系列词来概括文章的主题,然后得到每个主题出现的不同概率:主题分布。也就是说,文档 d 和单词 w 是可观察的,但主题 z 是隐藏的。

如下图所示(图中带颜色的d和w代表可观察变量,不带颜色的z代表未知隐藏变量,N代表一个文档一共N个词,M代表M个文档):

上图中,文档d和单词w是我们得到的样本(样本是随机的,参数未知但固定,所以pLSA属于频率论思想。与LDA不同:样本是固定的,参数是未知但不固定,它是一个随机变量,服从一定的分布,所以 LDA 属于贝叶斯思想)并且可以观察到,所以对于任何文档,其

是已知的。

因此,根据大量已知的文档词条信息

, 训练有素的文档主题

和主题词

,如下式所示:

因此,文档中每个单词的生成概率为:

seo关键词怎么取_seo技关键seo_seo关键解码网站营销与搜索引擎优化

3.3.2、基于LDA主题模型的关键词提取算法的实现

from gensim import corpora, modelsimport jieba.posseg as jpimport jiebadef get_text(texts):    flags = ('n', 'nr', 'ns', 'nt', 'eng', 'v', 'd')  # 词性    stopwords = ('的', '就', '是', '用', '还', '在', '上', '作为')  # 停用词    words_list=[]    for text in texts:        words = [w.word for w in jp.cut(text) if w.flag in flags and w.word not in stopwords]        words_list.append(words)    return words_listdef lda_model(words_list):    dictionary=corpora.Dictionary(words_list)    #dictionary.token2id获取<单词,id>对;dictionary.doc2bow获取<文档,向量>对    print(dictionary.token2id)    corpus=[dictionary.doc2bow(words) for words in words_list]    print(corpus)    #lda主题模型    lda_model = models.ldamodel.LdaModel(corpus=corpus, num_topics=2, id2word=dictionary, passes=10)    return lda_modelif __name__ == "__main__":    texts = ['作为千元机中为数不多拥有真全面屏的手机,OPPO K3一经推出,就簇拥不少粉丝', \             '很多人在冲着这块屏幕购买了OPPO K3之后,发现原来K3的过人之处不止是在屏幕上', \             'OPPO K3的消费者对这部手机总体还是十分满意的', \             '吉利博越PRO在7月3日全新吉客智能生态系统GKUI19发布会上正式亮相', \             '今年上海车展,长安CS75 PLUS首次亮相', \             '普通版车型采用的是双边共双出式排气布局;运动版本车型采用双边共四出的排气布局']    # 获取分词后的文本列表    words_list = get_text(texts)    print('分词后的文本:')    print(words_list)    # 获取训练后的LDA模型    lda_model = lda_model(words_list)    # 可以用 print_topic 和 print_topics 方法来查看主题    # 打印所有主题,每个主题显示5个词    topic_words = lda_model.print_topics(num_topics=2, num_words=5)    print('打印所有主题,每个主题显示5个词:')    print(topic_words)    # 输出该主题的的词及其词的权重    words_list = lda_model.show_topic(0, 5)    print('输出该主题的的词及其词的权重:')    print(words_list)

3.3.3、LDA 的优缺点

优势

1、LDA 是一种无监督机器学习技术,可用于识别潜伏在大规模文档集 ( ) 或语料库 ( ) 中的主题信息。无需标记数据

2、它使用词袋法,将每个文档视为一个词频向量,从而将文本信息转化为易于建模的数字信息。容易理解

3、- 单词 co- 是稀疏的,不适用于短文本

缺点

1、但是bag-of-方法没有考虑词间的顺序,简化了问题的复杂度,为模型改进提供了机会。

2、每个主题代表一个由许多单词组成的概率分布。由于分布式随机向量的分量之间的弱相关性(之所以仍然有点“相关”,因为分量之和必须是1),这使得我们假设的潜在主题几乎无关紧要,即它与许多实际问题不匹配,从而导致LDA的另一个遗留问题。

3.4、基于词向量和聚类的关键词提取方法

首先,表示文本中的词向量->按方法聚类->计算每个词到每个中心的距离->选择每个聚类的关键词;目前的词向量表示方法有,、bert等。

3.5、提取词用于有监督问题的特征选择

一般来说,在模型中,单词可以表示为特征,通过模型训练可以找到一些关键特征;在文本中,这些特征可以对应单词。比如树模型的信息增益、基尼系数等。

参考

(关键词提取LDA,)

(关键词提取方法总结,,,,lda,,信息增益,卡方检验,树模型)

(算法介绍与实现)

(算法简介)

(and的区别,以及具体的构造过程;源码详解)

(和之间的区别;给出了一个构造图的例子)

(各种用途)

(LDA主题模型详解)

(LDA优缺点)

免责声明:本文来自网络用户投稿,不代表本站观点和立场。如有侵权请发送邮件至tzanseo@163.com告知本站删除,本站不负任何责任及承诺。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

发表评论

登录后才能评论