文本分析-词频统计

词频:指的是某一个给定的词在该文档中出现的次数
概念了解:
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)
文本分析-词频统计_第1张图片
词云图

你可能感兴趣的:(文本分析-词频统计)