You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PowerShell索引文本文件所有单词并统计词频?

PowerShell提取文本单词并统计词频的解决方案

核心命令组合实现

直接用PowerShell内置命令即可完成无筛选提取所有单词并统计词频的需求,无需额外库。以下是完整的分步实现:

1. 基础版:输出词频排序结果

# 替换为你的文本文件路径
Get-Content -Path "C:\mytextfile.txt" | 
    ForEach-Object { $_ -split '\W+' } |  # 按非单词字符分割文本,拆分出独立单词
    Where-Object { $_ -ne '' } |  # 过滤分割产生的空字符串
    Group-Object |  # 自动分组相同单词并统计数量
    Sort-Object -Property Count -Descending |  # 按词频从高到低排序
    Select-Object Name, Count  # 仅保留单词和词频字段

针对你提供的示例文本,运行后会输出:

Name Count
---- -----
to       6
the      5
foo      3
bar      3
can      1

2. 实用版:导出为CSV方便翻译学习

如果需要将结果导出为可编辑的CSV文件(便于后续导入翻译工具),可以调整命令:

Get-Content -Path "C:\mytextfile.txt" | 
    ForEach-Object { $_ -split '\W+' } | 
    Where-Object { $_ -ne '' } | 
    Group-Object | 
    Sort-Object -Property Count -Descending | 
    # 自定义表头为中文,更直观
    Select-Object @{Name='单词'; Expression={$_.Name}}, @{Name='词频'; Expression={$_.Count}} | 
    Export-Csv -Path "C:\word_frequency.csv" -NoTypeInformation -Encoding UTF8

进阶调整选项

  • 统一大小写统计:如果文本中存在大小写不同的相同单词(如To和to),想要合并统计,可在分割后转小写:
    Get-Content -Path "C:\mytextfile.txt" | 
        ForEach-Object { ($_ -split '\W+') | ForEach-Object { $_.ToLower() } } | 
        Where-Object { $_ -ne '' } | 
        Group-Object | 
        Sort-Object Count -Descending | 
        Select-Object Name, Count
    
  • 保留带连字符的单词:如果需要保留类似mother-in-law这类带连字符的复合词,修改分割正则:
    Get-Content -Path "C:\mytextfile.txt" | 
        ForEach-Object { $_ -split '[^\w-]+' } | 
        Where-Object { $_ -ne '' -and $_ -notmatch '^-$' } | 
        Group-Object | 
        Sort-Object Count -Descending | 
        Select-Object Name, Count
    

内容的提问来源于stack exchange,提问作者Enigma IT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 04:52:42