import jieba
import jieba.posseg as peg
import matplotlib.pyplot as plt

jieba库对自然语言进行处理,以及使用matplotlib的pyplot库将数据用饼状图表示。


class CUT():
    def __init__(self):
        self.labels = 'n','v','d','a' ### 词性标签,主要对名词,动词,副词以及形容词进行统计
        self.label_list= ['n','v','d','a']
        self.num_list = [0,0,0,0] ###数量列表

名词,动词,副词及形容词的统计


def cut(self,dicpath):
        with open (dicpath,'rb') as f:
            for line in f:
                words = peg.cut(line)  ###使用jieba对line分词及词性标注
                for x in words:
                    if x.flag  in self.label_list:  ###判断x的词性是否存在词性列表中
                        if x.flag == 'n':
                            index1 = 0
                        if x.flag == 'v':
                            index1 = 1
                        if x.flag == 'd':
                            index1 = 2
                        if x.flag == 'a':
                            index1 = 3
                        self.num_list[index1] += 1

不会将读取的字节转换成字符。

返回word和flag两个值,可以采用for word,flag in words:对词及词性进行引用。

 

def show_pie(self):                 ###定义展现饼状图的方法
        lt = []
        for i in range(len(self.num_list)):
            result = self.num_list[i]/sum(self.num_list)
            lt.append(result)
        plt.rcParams['font.sans-serif'] = ['SimHei']
        plt.pie(x=lt,autopct='%1.3f%%',labels=self.labels)
        plt.title('红楼梦词性统计图')
        plt.show()

     python中使用matplotlib绘制饼状图,常用的参数如下:
plt.pie(x, explode=None,labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=None, radius=None, counterclock=True, wedgeprops=None, textprops=None, center=(0, 0), frame=False)

    作者主要使用的是x,labels,autopct三个参数。

列表中的数需要小于1。

    autopct:自动添加百分比显示,可以采用格式化的方法显示,可设置保留几位小数,如保留让浮点数保留两位小数点可采用autopct='%1.2f%%'

    labels:为图示添加标签。

if __name__ == '__main__':
    seq = CUT()
    seq.cut('hlm.txt')   
    seq.show_pie()

结果如下:

python  中文词性标注 python词性统计_python  中文词性标注

画饼状图主要参照网址:javascript:void(0)