第1关:LDA 算法
任务描述
本关任务:根据所学有关 LDA 算法原理的知识,完成基于 gensim 模块进行 LDA 关键词提取的程序编写并通过所有测试用例。
相关知识
为了完成本关任务,你需要掌握:
-
LDA 算法的原理;
-
基于 gensim 模块进行 LDA 关键词提取。
import jieba
import jieba.analyse as analyse
import gensim
from gensim import corpora, models, similarities
# 停用词表加载方法
def get_stopword_list():
# 停用词表存储路径,每一行为一个词,按行读取进行加载
# 进行编码转换确保匹配准确率
stop_word_path = './stopword.txt'
stopword_list = [sw.replace('\n', '') for sw in open(stop_word_path, encoding='utf-8').readlines()]
return stopword_list
# 停用词
stop_word = get_stopword_list()
text = input()
# 分词
sentences = []
segs = jieba.lcut(text)
segs = list(filter(lambda x: x not in stop_word, segs))
sentences.append(segs)
# 构建词袋模型
dictionary = corpora.Dictionary(sentences)
corpus = [dictionary.doc2bow(sentence) for sentence in sentences]
result = ""
# 任务:使用gensim模块中的函数构造LDA模型,得出最佳主题词的分析结果保存到result变量中。
lda = models.LdaModel(corpus,id2word=dictionary, num_topics=1)
for result in lda.print_topics(num_words=1):
print(result[1].split('*')[1],end="")