对微博文本进行LDA模型分析,但出来的关键词结果中总是包含停用词。
附上前期预处理部分的代码,可以请老哥们指导一下哪里出现问题了吗?万分感谢!
import os
import pandas as pd
import re
import jieba
import jieba.posseg as psg
####### 预处理
output_path = '/Users/mac/Desktop/pycharm/lda/result'
file_path = '/Users/mac/Desktop/pycharm/lda/data'
os.chdir(file_path)
data = pd.read_excel("data.xlsx")
os.chdir(output_path)
dic_file = "/Users/mac/Desktop/pycharm/lda/dict.txt"
stop_file = "/Users/mac/Desktop/pycharm/lda/stop_dic/stopwords.txt"
def chinese_word_cut(mytext):
jieba.load_userdict(dic_file)
jieba.initialize()
# 加载停用词词典
try:
stopword_list = open(stop_file, encoding='utf-8')
except:
stopword_list = []
print("error in stop_file")
stop_list = []
flag_list = ['n', 'nz', 'vn']
for line in stopword_list:
line = re.sub(u' ', '', line)
stop_list.append(line)
word_list = []
# jieba分词
seg_list = psg.cut(mytext)
for seg_word in seg_list:
word = re.sub(u'[^\u4e00-\u9fa5]','',seg_word.word)
# word = seg_word.word
find = 0
for stop_word in stop_list:
if stop_word == word or len(word) < 2:
find = 1
break
if find == 0: # and seg_word.flag in flag_list 如英语文本,则需注释后半部分
word_list.append(word)
return " ".join(word_list)
data["content_cutted"] = data.content.apply(chinese_word_cut)
运行结果及报错内容
Topic #0:
一个 这个 未来 元周 可能 就是 我们 自己 什么 世界
Topic #1:
市场 全球 科技 免税 游戏 股份 行业 零售 关注 集团
Topic #2:
可以 盲盒 游戏 社交 用户 现实 世界 元气 平台 使用
Topic #3:
国际 消费 首届 消费品 企业 全球 博览会 发展 品牌 参展
Topic #4:
频道 国际 海南省 旅游 官方 卫视 博览会 消费品 免税 微博