中文词频统计
1. 下载一长篇中文小说。
2. 从文件读取待分析文本。
3. 安装并使用jieba进行中文分词。
pip install jieba
import jieba
jieba.lcut(text)
4. 更新词库,加入所分析对象的专业词汇。
jieba.add_word('天罡北斗阵') #逐个添加
jieba.load_userdict(word_dict) #词库文本文件
参考词库下载地址:https://pinyin.sogou.com/dict/
转换代码:scel_to_text
5. 生成词频统计
6. 排序
7. 排除语法型词汇,代词、冠词、连词等停用词。
stops
tokens=[token for token in wordsls if token not in stops]
8. 输出词频最大TOP20,把结果存放到文件里
9. 生成词云。
import matplotlib.pyplot as plt import jieba import pandas as pd f = open('luxun.txt', 'r', encoding='utf-8') #读取小说内容 lx = f.read() f.close() f1 = open('def.txt', 'r', encoding='utf-8') #读取无用中文关键词 kai = f1.read() f1.close() for i in [' ','\n']: lx = lx.replace(i, '') #jieba添加词典与关键词 jieba.add_word("鲁迅") jieba.load_userdict('fff.txt') kk=jieba.lcut(lx) #用jieba切割nov #token过滤无用关键词,洗掉 waste=kai.split('\n') tokens = [token for token in kk if token not in kai] wordDict = {} wordSet = set(tokens) for w in wordSet: if len(w)>1: wordDict[w] = tokens.count(w) ##排序 wordlist = sorted(wordDict.items(), key = lambda x:x[1], reverse = True) cut = " ".join(tokens) ##输出词频最大TOP20 for i in range(20): print(wordlist[i]) ##把结果存放到文件里 pd.DataFrame(data=wordlist).to_csv('text.csv', encoding='UTF-8')
def文本:洗掉的无关词,排除语法型词汇,代词、冠词、连词等停用词
生成的csv:
词云:由于在经历四个小时的wordcloud的安装失败,所以无法使用wordcloud包。
使用cmd安装成功wordcloud后也不能在pycharm里面显示出来使用。