欢迎光临
我们一直在努力

纳米AI 在 Unix/Linux 环境下统计词频,有**纯命令行工具组合**和**脚本语言(Python/Perl)**两种主流方案

在 Unix/Linux 环境下统计词频,有纯命令行工具组合和**脚本语言(Python/Perl)**两种主流方案,以下是最常用的实现方式及深度分析:


一、纯命令行方案(高效轻量)

利用 tr、sort、uniq、awk 等核心工具组合,无需额外依赖,适合处理文本文件或管道输入。

1. 基础版(区分大小写、包含标点)

# 统计文件中每个单词的出现次数(默认按空格/制表符分割)
cat input.txt | tr ' ' '\\n' | sort | uniq -c | sort -nr

2. 进阶版(忽略大小写、过滤标点)

# 处理规则:
# 1. 统一转为小写
# 2. 移除所有标点符号
# 3. 过滤空行
# 4. 按词频降序排序
cat input.txt |
tr '[:upper:]' '[:lower:]' |
tr -d '[:punct:]' |
tr ' ' '\\n' |
grep -v '^$' |
sort |
uniq -c |
sort -nr

各工具作用说明

工具作用
tr 字符转换:大小写转换、替换空格为换行、删除标点
grep -v 反向匹配,过滤空行
sort 对单词排序(为uniq去重做准备)
uniq -c 统计连续重复行的次数(必须先排序)
sort -nr 按数字降序排序(-n按数值排序,-r反向)

二、Python 脚本方案(灵活可控)

适合需要复杂规则(如停用词过滤、词干提取)或集成到更大系统的场景。

1. 基础统计脚本

import sys
from collections import Counter
import string

def count_word_frequency(file_path):
# 读取文件内容
with open(file_path, 'r', encoding='utf-8') as f:
text = f.read()

# 预处理:转小写、移除标点
text = text.lower()
translator = str.maketrans('', '', string.punctuation)
text = text.translate(translator)

# 分割单词并统计
words = text.split()
word_counts = Counter(words)

# 按词频降序输出
for word, count in sorted(word_counts.items(), key=lambda x: x[1], reverse=True):
print(f"{count:4d} {word}")

if __name__ == "__main__":
if len(sys.argv) != 2:
print("用法: python word_count.py <输入文件路径>")
sys.exit(1)
count_word_frequency(sys.argv[1])

2. 进阶版(过滤停用词)

# 新增停用词过滤功能(需提前定义停用词列表)
STOP_WORDS = {'the', 'and', 'of', 'a', 'to', 'in', 'is', 'it'}

def count_word_frequency(file_path):
# …(省略前面的预处理代码)

# 过滤停用词
words = [word for word in text.split() if word not in STOP_WORDS]
word_counts = Counter(words)

# …(省略输出代码)


三、方案对比

维度命令行方案Python 脚本方案
性能 极快(C 语言实现工具) 适中(解释型语言)
灵活性 较低(依赖工具组合) 极高(支持复杂逻辑)
学习成本 需掌握多个工具参数 适合有 Python 基础的用户
扩展性 有限(难以处理复杂规则) 无限(可集成 NLP 库)

安全提示:处理未知来源的文本时,建议先通过 file 命令检查文件类型,避免处理二进制文件导致异常。


下一步行动

如果你需要:

  • 处理中文文本的词频统计(需分词工具)
  • 集成到 Web 服务或自动化流程
  • 对结果进行可视化分析
  • 可以告诉我具体需求,我会提供针对性的优化方案。

    赞(0)
    未经允许不得转载:171主机测评 » 纳米AI 在 Unix/Linux 环境下统计词频,有**纯命令行工具组合**和**脚本语言(Python/Perl)**两种主流方案
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址