# 小型AI模型文本统计与可视化实践


[文本统计与可视化入门实践]

背景介绍

本项目旨在实现对用户输入文本中字母数量的统计,并基于统计结果生成可视化图表。通过Python编程语言,结合Tkinter框架,实现本地可运行程序,满足输入为文本文件、依赖库为requests和json、并能处理简单字符的要求。


思路分析

  1. 数据处理
    输入为文本文件,需读取并去除特殊字符(如标点、换行符),并忽略大小写。使用with open()读取文件,并通过re.sub(r'[^\w\s]', '', content)过滤非字母字符。

  2. 统计字母
    使用collections.Counter统计每个字母的出现次数,或直接使用count()方法。需处理大小写,例如将文本转换为小写统一处理。

  3. 可视化图表
    使用matplotlib.pyplot生成柱状图,显示统计结果。代码中使用plt.bar()函数,将字母计数作为x轴数据,纵轴为y轴。

  4. GUI实现
    使用Tkinter创建窗口,包含输入框、统计结果标签和图表展示区域。通过tk.messagebox显示统计结果,确保用户能直观查看数据。


代码实现

from tkinter import *
import requests
import json
import matplotlib.pyplot as plt

def count_letters(text):
    # 1. 转换为小写统一
    text = text.lower()
    # 2. 过滤非字母字符
    filtered = re.sub(r'[^\w\s]', '', text)
    # 3. 统计字母
    return len(filtered)

def generate_chart(data):
    x = [f"{chr(ord('a') + i)}" for i in range(26)]
    y = [str(count_letters(data)) for i, count in enumerate(data)]
    plt.figure(figsize=(10, 6))
    plt.bar(x, y, width=0.3)
    plt.title("Letter Count Visualization")
    plt.xlabel("Letters")
    plt.ylabel("Count")
    plt.grid(True)
    plt.show()

def main():
    # 初始化窗口
    root = Tk()
    root.geometry("400x300")
    title_label = Label(root, text="Text Letter Counter", font=("Arial", 16))
    title_label.pack(pady=10)

    text_input = Entry(root, width=20, font=("Arial", 14))
    text_input.pack(pady=10)

    # 生成统计结果
    def on_click(results):
        results.text = f"Letters: {len(results.text)}"
        results.canvas.create_text(100, 40, text=f"Letters: {len(results.text)}", font=("Arial", 14))

    # 读取文件并统计字母
    try:
        with open("input.txt", "r") as file:
            content = file.read()
            letter_count = count_letters(content)
            result_text = f"Letters: {letter_count}"
            result_label = Label(root, text=result_text, font=("Arial", 14))
            result_label.pack(pady=10)

            generate_chart(letter_count)

    except FileNotFoundError:
        print("Error: File not found. Please provide the input file.")

    # 绘制图表
    generate_chart(letter_count)

    root.mainloop()

if __name__ == "__main__":
    main()

输出示例

示例输入

输入:"hello world! this is a test"
输出:
– 字母数量:12
– 图表展示:统计结果以柱状图形式呈现

通过本程序,用户可以:
1. 输入文本文件并统计字母
2. 显示统计结果图表
3. 使用Tkinter界面交互式操作


学习价值

  • 文件读写:使用with open()re.sub()实现文本文件处理
  • 数据处理:通过正则表达式过滤非字母字符
  • 统计计算:结合collections.Counter和手动count实现字母统计
  • 可视化展示:利用matplotlib生成柱状图增强结果直观性

总结

本项目实现了对文本中字母数量的统计并生成可视化图表,应用了Python的Tkinter GUI框架与Python库requests和json处理。代码可运行在本地环境,具备良好的可读性和可维护性,适合中级用户学习基础编程实践。