Python 实现关键词提取
看到一篇很好的关键词提取的论文,《融合LDA与TextRank算法的主题信息抽取方法》。里面对LDA和TextRank的发展过程描述的很详细。如果你跟我一样对着通篇的公式尝尝头痛时,可以多看几篇相关的研究生毕业论文,大部分毕业论文会对某一知识点给予很充分的信息融合,并融入自己的理解,尝尝能给你一些感性上的认识。
-----------------------分隔符-----------------------------------------
这篇文章只介绍了Python中关键词提取的实现。
关键词提取的几个方法:1.textrank 2.tf-idf 3.LDA,其中textrank和tf-idf在jieba中都有封装好的函数,调用起来十分简单便捷。常用的自然语言处理的库还有nltk,gensim,sklearn中也有封装好的函数可以进行SVD分解和LDA等。LDA也有人分装好了库,直接pip install lda进行安装即可。
jieba
先来看一下调用jieba中的textrank 和 tf-idf 抽取关键词的情况
由此看来tf-idf的结果貌似更好。在我做过的一些关键词提取任务中,大部分情况下tf-idf同textrank的结果都很相似,尽管textrank的理论基础要比tf-idf复杂很多。
下面我们看一下textrank和tf-idf中其他参数的设置
sentence:待提取关键词的语料
topK: 提取多少个关键词,默认为20个
withWeight: 若为True,返回值形式为(word, weight)。若为False,返回的只有words,默认为False
allowPOS: 允许哪些词性作为关键词,默认的词性为’ns’, ‘n’, ‘vn’, ‘v’
withFlag: 若为True,返回值形式为(word, pos)。若为False,返回的只有words,默认为False。其中pos为词性。
gensim
LDA
https://blog.csdn.net/Yellow_python/article/details/83097994
-
清洗语料 输入到gensim中生成LDA主题模型前必须对语料进行分词
import jieba
import jieba.posseg as pseg -
构造词典
gensim库中的corpora的Dictionary中封装好了构建词典,词到索引的映射,索引到词的映射、将文档转为词袋模型等方法
from gensim.corpora import Dictionary
#构造词典(词典默认最大词汇量为200万)
dct = Dictionary(words)
#再添加文本
dct.add_documents([[‘翟天临’,‘博士后’,‘北京大学’]]) -
LDA模型
终于激动人心的时刻到了
from gensim import models
#num_topics 设置主题数目
lda = models.ldamodel.LdaModel(corpus=corpus_bow, id2word=dct, num_topics=2)