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

Written by

in

文章目录
  • 文本分析是自然语言处理(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(“排名 | 单词tt频率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实现统计英文文章词频的方法分析 一文带你掌握Python中文词频统计 Python统计词频的几种方法小结 利用python实现词频统计分析的代码示例 Python统计中文词频的四种方法小结 使用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("排名 | 单词tt频率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实现统计英文文章词频的方法分析
    • 一文带你掌握Python中文词频统计
    • Python统计词频的几种方法小结
    • 利用python实现词频统计分析的代码示例
    • Python统计中文词频的四种方法小结
    • 使用Python分析文本数据的词频并词云图可视化

    站内搜索