<small>词频:指的是某一个给定的词在该文档中出现的次数
概念了解:
1.语料库:
预料库是我们要分析的所有文档的集合
2.中文分词:
指的是将一个汉字序列切成一个一个单独的词
3.停用词:
数据处理的时候,自动过滤掉某些字或词,如:web,网站等
处理步骤“
1.语料库的构建:
构建方法:os.walk(fileDir) :fileDir 文件夹路径
2.文件读取:codecs.open(filePath,method,encoding)
filepath:文件路径
method:文件的打开方式:r只读,w:为写,rw为读写
encoding:文件的编码:中文用utf-8打开
语料库创建代码案例:
import jieba
import os
import os.path
import codecs
#创建词料库
corpos=pandas.DataFrame(columns=['filePath','content')]
for root,dirs,files in os.walk('filepath')
for name in files[1:]:
filePath=root+'/'+name
f=codecs.open(filePath,'r','utf-8')
content=f.read()
f.close()
#.loc[] 按照行列索引,没有则新增
corpos.loc[len(corpos)+1]=[filePath,content.strip()]
2,中文分词
分词包:jiebe.cut(content)
.content:需要分词的句子
.返回segment:分词的词组
(词库可到搜狗下载,然后用深蓝词库转换工具转成无拼音的文本格式)
操作步骤:
1.词库的导入:jieba.load_userdict(path)或者 open()+read()
2.分词:jieba.cut(content)
3.输出:’,’.jion():
注:.join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串。
中文分词案例代码(顺接上面)
import re
filePath=[]
segments=[]
for i in range(len(corpos)):
filepath=corpos.loc[i].filePath
segs=jieba.cut(corpos.[i].content)
for seg in segs:
if len(seg.strip())>1:
filePath.append(filepath)
segments.append(seg)
segmentDF=pandas.DataFrame({'filePath':filePath,'segments':segments})
3.词频统计--分组统计各词组数量
#reset_index() 是将行索引移到列里面,本例子指将segments由行索引移到列里面,set_index()则相反。
import numpy,pandas
segcount=segmentDF.groupby(['segments'])
['segments'].agg({'count':numpy.size}).reset_index().sort(columns=['count'],
ascending=False)
4.移除停用词
stopwords=pandas.read_csv('stopwords filepath')
fsegcount=segcount[~segcount.segments.isin(stopwords.stopword)]
5 绘制词云图
from wordcloud import WordCloud
import matplotlib.pyplot as pet
wordcloud=WordCloud(font_path='font path',background_color='black')
wordcloud=wordcloud.fit_words(fsegcount.itertuples(index=False))
plt.imshow(wordcloud)
</small>