首先,我们需要先导入所需要的库:

import numpy as np
import matplotlib.pyplot as plt
from collections import Counter
from matplotlib.font_manager import FontProperties

接下来,我们可以定义一个函数来处理文本数据,统计高频词并进行降序排序。该函数将会接收一个文本文件的路径作为参数,并返回一个包含前十高频词及其出现次数的字典。

def process_text_file(path):
    with open(path, 'r', encoding='utf-8') as f:
        text = f.read()

    seg_list = jieba.cut(text)
    word_counts = Counter(seg_list)
    top_ten_words = dict(word_counts.most_common(10))

    return top_ten_words

为了能够在可视化时不让中文字符重叠,我们需要指定一个字体来显示中文字符。在这里,我们使用了一个名为'Microsoft YaHei'的字体。

font = FontProperties(fname=r'C:\Windows\Fonts\Microsoft YaHei\msyh.ttc', size=14)

接下来,我们可以定义一个函数来绘制柱状图。该函数将会接收一个字典作为参数,其中包含了前十高频词及其出现次数。

def draw_bar_chart(data):
    labels = list(data.keys())
    values = list(data.values())

    plt.bar(range(len(data)), values, tick_label=labels)
    plt.xticks(rotation=45, fontproperties=font)

    for x, y in enumerate(values):
        plt.text(x, y+0.1, str(y), ha='center', fontproperties=font)

    plt.show()

最后,我们可以调用上述函数来进行可视化。这里,我们使用了一个名为'data.txt'的文本文件作为演示。

data = process_text_file('data.txt')
draw_bar_chart(data)

完整代码如下:

import numpy as np
import matplotlib.pyplot as plt
from collections import Counter
from matplotlib.font_manager import FontProperties

font = FontProperties(fname=r'C:\Windows\Fonts\Microsoft YaHei\msyh.ttc', size=14)

def process_text_file(path):
    with open(path, 'r', encoding='utf-8') as f:
        text = f.read()

    seg_list = jieba.cut(text)
    word_counts = Counter(seg_list)
    top_ten_words = dict(word_counts.most_common(10))

    return top_ten_words

def draw_bar_chart(data):
    labels = list(data.keys())
    values = list(data.values())

    plt.bar(range(len(data)), values, tick_label=labels)
    plt.xticks(rotation=45, fontproperties=font)

    for x, y in enumerate(values):
        plt.text(x, y+0.1, str(y), ha='center', fontproperties=font)

    plt.show()

data = process_text_file('data.txt')
draw_bar_chart(data)

运行该程序后,将会得到一个包含前十高频词的柱状图。


原文地址: https://www.cveoy.top/t/topic/oZ1z 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录