推荐 最新
HAO起起

jieba分词结果不理想怎么办?

请问jieba分词结果不理想怎么办? 我想要创建关于景区评论的词云图,现在用jieba分词,然后将分词后的结果进行LDA建模提取主题,但提取出的主题中的热点词,明显能看出分词有问题。 "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241012/29759226086e09ded6102818a98bee46.png) 相关代码: # 加载中文停用词 stop_words = set(stopwords.words('chinese')) broadcastVar = spark.sparkContext.broadcast(stop_words) # 中文文本分词 def tokenize(text): return list(jieba.cut(text)) # 删除中文停用词 def delete_stopwords(tokens,stop_words): # 分词 words = tokens # 去除停用词 filtered_words = [word for word in words if word not in stop_words] # 重建文本 filtered_text = ' '.join(filtered_words) return filtered_text # 删除标点符号和固定字 def remove_punctuation(input_string): import string # 制作一个映射表,其中所有的标点符号和需要删除的字都被映射为None all_punctuation = string.punctuation + "!?。。"#$%&'()*+,-/:;<=>@[\]^_`{|}~⦅⦆「」、、〃》「」『』【】〔〕〖〗〘〙〚〛〜〝〞〟〰〾〿–—‘’‛“”„‟…‧﹏.\t \n很好是去还不人太都中" translator = str.maketrans('', '', all_punctuation) # 使用映射表来移除所有的标点符号和字 no_punct = input_string.translate(translator) return no_punct def Thematic_focus(text): from gensim import corpora, models num_words = 0 if len(text)>200: num_words = 10 elif 200>=len(text)>100: num_words = 8 elif 100>=len(text)>50: num_words = 5 else: num_words = 3 tokens = tokenize(text) # 删除停用词 stop_words = broadcastVar.value text = delete_stopwords(tokens,stop_words) # 祛除标点符号 text = remove_punctuation(text) # 重新分词 tokens = tokenize(text) print(type(tokens),type([tokens])) # return str(tokens) # # 创建字典和文档-词频矩阵 dictionary = corpora.Dictionary([tokens]) corpus = [dictionary.doc2bow(tokens)] # 运行LDA模型 lda_model = models.LdaModel(corpus, num_topics=1, id2word=dictionary, passes=50) # 提取主题 topics = lda_model.show_topics(num_words=num_words) # 输出主题 for topic in topics: return str(topic) 我想要让分词变得更合理,或者说有更好的提取景区评论中关键词的方法。

0
1
0
浏览量130
感觉对了

如何在shell使用gawk计算大量列的均方根?

我有一个文件是2500列,我需要计算前2499列的均方根。能否直接用gawk进行计算?能的话有没有具体的脚本。 下面是我只有两列列数据时尝试的脚本,是可以成功运行的。 for (( k=0;k0){avg=sqrt(sum/count);}else{count=0;avg=0;}print dis1,count,avg}' file1 >>file2 done 这是尝试的脚本,但脚本无法运行。 for (( k=0;k0){avg[i]=sqrt((sum[i])/(count));}else{count=0;avg[i]=0;}print dis1,avg[i]}' file1 >>file2 done

0
1
0
浏览量121