使用Tkinter显示词库中前十个高频词的直方图

本文介绍如何使用Python的Tkinter库,将词库中前十个在训练集中出现频率最高的词的直方图展示在一个新的窗口中。

步骤:

  1. 导入所需模块:pandas、matplotlib和tkinter。
  2. 定义一个函数,接收words和X_train作为参数。
  3. 创建一个字典,用于存储词频信息。
  4. 遍历词库中的每个单词,统计它在训练集中出现的频次,将结果存储在字典中。
  5. 对字典按照值进行排序,取出前十个键值对。
  6. 创建一个新的tkinter窗口。
  7. 在窗口中创建一个matplotlib画布。
  8. 在画布上绘制直方图,横坐标为单词,纵坐标为频次。
  9. 显示窗口。

示例代码:

import pandas as pd
import matplotlib.pyplot as plt
import tkinter as tk
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg

def show_word_frequency(words, X_train):
    # 创建一个字典,用于存储词频信息
    word_count = {}

    # 遍历词库中的每个单词,统计它在训练集中出现的频次,将结果存储在字典中
    for word in words:
        count = X_train.str.count(word).sum()
        if count > 0:
            word_count[word] = count

    # 对字典按照值进行排序,取出前十个键值对
    top_words = sorted(word_count.items(), key=lambda x: x[1], reverse=True)[:10]

    # 创建一个新的tkinter窗口
    root = tk.Tk()
    root.title('Word Frequency')

    # 在窗口中创建一个matplotlib画布
    fig, ax = plt.subplots(figsize=(8, 4))
    ax.set_xlabel('Words')
    ax.set_ylabel('Frequency')
    ax.bar([w for w, c in top_words], [c for w, c in top_words])

    # 在画布上绘制直方图,横坐标为单词,纵坐标为频次
    canvas = FigureCanvasTkAgg(fig, master=root)
    canvas.draw()
    canvas.get_tk_widget().pack(side=tk.TOP, fill=tk.BOTH, expand=1)

    # 显示窗口
    tk.mainloop()

调用示例:

words = ['apple', 'banana', 'orange', 'peach', 'pear']
X_train = pd.Series([
    'apple banana orange',
    'banana peach',
    'orange pear',
    'pear pear',
    'peach',
    'apple apple apple',
    'banana banana banana'
])
show_word_frequency(words, X_train)

运行结果:

image-20211025162110375

总结:

通过以上步骤,可以将词库中前十个高频词的直方图展示在一个新的Tkinter窗口中,方便用户直观地查看词频信息。

使用Tkinter显示词库中前十个高频词的直方图

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

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