使用Python实现一个简单实用的文本词频统计分析工具

 更新时间:2025年05月29日 09:31:38   作者:笨笨轻松熊  
文本分析是自然语言处理(NLP)中的基础任务,而词频统计则是文本分析的入门级应用,本文就来为大家介绍如何实现一个简单而实用的文本词频统计工具吧,非常适合Python初学者练手

前言

文本分析是自然语言处理(NLP)中的基础任务,而词频统计则是文本分析的入门级应用。通过词频分析,我们可以快速了解文本的主题倾向、关键信息分布以及语言使用习惯。本文将带你实现一个简单而实用的文本词频统计工具,非常适合Python初学者练手。

功能特点

支持任意.txt格式文本文件的词频分析

自动处理文本编码问题

使用正则表达式精确提取英文单词(包括带连字符和撇号的单词)

按频率排序并计算每个单词的出现比例

支持查看前N个高频词功能

代码实现

import re
from collections import defaultdict


def word_frequency(file_path, top_n=None):
    """
    统计文本文件中的单词频率
    :param file_path: 文本文件路径
    :param top_n: 显示前N个高频词,默认显示全部
    :return: 排序后的单词频率列表
    """
    # 读取文件内容
    try:
        with open(file_path, 'r', encoding='utf-8') as file:
            text = file.read().lower()  # 转为小写
    except FileNotFoundError:
        print(f"错误:文件 {file_path} 未找到")
        return []
    except UnicodeDecodeError:
        print("错误:文件编码不支持,请尝试使用其他编码(如gbk)")
        return []

    # 使用正则表达式提取单词(包括带连字符的单词)
    words = re.findall(r"\b[a-zA-Z'-]+\b", text)

    # 统计词频
    frequency = defaultdict(int)
    for word in words:
        frequency[word] += 1

    # 按频率排序
    sorted_words = sorted(frequency.items(), key=lambda x: x[1], reverse=True)

    # 输出结果
    print(f"\n总共有 {len(words)} 个单词,其中唯一单词 {len(sorted_words)} 个")
    print("排名 | 单词\t\t频率\t占比")
    print("-" * 40)

    total_words = len(words)
    for rank, (word, count) in enumerate(sorted_words[:top_n], 1):
        percentage = (count / total_words) * 100
        print(f"{rank:4} | {word:12} {count:6} \t{percentage:.2f}%")

    return sorted_words


if __name__ == "__main__":
    # 使用示例
    file_path = input("请输入文本文件路径:").strip()
    top_n = input("要显示前多少个高频词(默认全部):").strip()
    top_n = int(top_n) if top_n.isdigit() else None

    word_frequency(file_path, top_n)

代码解析

导入必要模块:

  • re:提供正则表达式支持,用于精确提取单词
  • defaultdict:特殊字典类型,当键不存在时提供默认值,简化词频统计

核心函数设计:

  • 异常处理确保文件打开的健壮性
  • 使用正则表达式\b[a-zA-Z'-]+\b提取英文单词(包括带连字符和撇号的复杂形式)
  • 采用defaultdict高效统计词频
  • 使用Python内置的sorted()函数按词频排序

用户交互:

  • 支持自定义文件路径输入
  • 灵活设置显示的高频词数量

运行效果

将以下文本保存为txt文件,然后运行程序,输入文件路径即可看到分析结果:

应用场景

英文文学作品词汇分析

论文关键词提取

网络文本主题挖掘

语言学习词汇频率研究

进阶改进方向

增加中文分词支持(可结合jieba等分词库)

添加停用词过滤功能

实现数据可视化展示(如词云图)

开发GUI界面提升用户体验

支持批量文件分析比较

到此这篇关于使用Python实现一个简单实用的文本词频统计分析工具的文章就介绍到这了,更多相关Python文本词频统计分析内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python保存dict字典类型数据到Mysql并自动创建表与列

    Python保存dict字典类型数据到Mysql并自动创建表与列

    这篇文章主要介绍了Python保存dict字典类型数据到Mysql并自动创建表与列,字典是另一种可变容器模型,且可存储任意类型对象,想了解更多内容的小伙伴可以和小编一起进入下面文章学习更多内容,希望对你有所帮助
    2022-02-02
  • python3的UnicodeDecodeError解决方法

    python3的UnicodeDecodeError解决方法

    这篇文章主要介绍了python3的UnicodeDecodeError解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • Python中的字符串切片(截取字符串)的详解

    Python中的字符串切片(截取字符串)的详解

    这篇文章主要介绍了Python中的字符串切片(截取字符串)的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • Python开发.exe小工具的详细步骤

    Python开发.exe小工具的详细步骤

    这篇文章主要介绍了Python开发.exe小工具的详细步骤,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • 利用Python实现朋友圈中的九宫格图片效果

    利用Python实现朋友圈中的九宫格图片效果

    这篇文章主要给大家介绍了关于利用Python如何实现朋友圈中九宫格图片效果的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • 详解python中的变量

    详解python中的变量

    这篇文章主要为大家详细介绍了python的变量,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • python爬虫之urllib库常用方法用法总结大全

    python爬虫之urllib库常用方法用法总结大全

    urllib是python自带的请求库,各种功能相比较之下也是比较完备的,下面这篇文章主要给大家介绍了关于python爬虫之urllib库常用方法用法的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2018-11-11
  • pandas DataFrame mask的具体使用

    pandas DataFrame mask的具体使用

    pandas.DataFrame.mask方法提供了一种灵活的方式来根据条件筛选和替换 DataFrame中的元素,本文主要介绍了pandas DataFrame mask的具体使用,具有一定的参考价值,感兴趣的可以了解一下
    2025-04-04
  • 详解Python AdaBoost算法的实现

    详解Python AdaBoost算法的实现

    Boosting是机器学习的三大框架之一。Boost也被称为增强学习或提升法,其中典型的代表算法是AdaBoost算法。本文介绍了AdaBoost算法及python实现,感兴趣的可以学习一下
    2022-10-10
  • Python中多进程处理的Process和Pool的用法详解

    Python中多进程处理的Process和Pool的用法详解

    在Python编程中,多进程是一种强大的并行处理技术,Python提供了两种主要的多进程处理方式:Process和Pool,本文将详细介绍这两种方式的使用,希望对大家有所帮助
    2024-02-02

最新评论