python 实现关键词提取

杜新伟 2024-11-06 浏览次数:0

Python 实现关键词提取

看到一篇很好的关键词提取的论文,《融合LDA与TextRank算法的主题信息抽取方法》。里面对LDA和TextRank的发展过程描述的很详细。如果你跟我一样对着通篇的公式尝尝头痛时,可以多看几篇相关的研究生毕业论文,大部分毕业论文会对某一知识点给予很充分的信息融合,并融入自己的理解,尝尝能给你一些感性上的认识。

python 实现关键词提取

-----------------------分隔符-----------------------------------------

这篇文章只介绍了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

  1. 清洗语料 输入到gensim中生成LDA主题模型前必须对语料进行分词
    import jieba
    import jieba.posseg as pseg

     
  2. 构造词典
    gensim库中的corpora的Dictionary中封装好了构建词典,词到索引的映射,索引到词的映射、将文档转为词袋模型等方法
    from gensim.corpora import Dictionary
    #构造词典(词典默认最大词汇量为200万
    dct = Dictionary(words)
    #再添加文本
    dct.add_documents([[‘翟天临’,‘博士后’,‘北京大学’]])

     
  3. LDA模型
    终于激动人心的时刻到了
    from gensim import models
    #num_topics 设置主题数目
    lda = models.ldamodel.LdaModel(corpus=corpus_bow, id2word=dct, num_topics=2)

sklearn
lda