news 2026/9/19 5:12:51

english-words如何一键生成全套词表文件?gen.sh与create_json.py数据流水线源码深度剖析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
english-words如何一键生成全套词表文件?gen.sh与create_json.py数据流水线源码深度剖析

english-words如何一键生成全套词表文件?gen.sh与create_json.py数据流水线源码深度剖析

【免费下载链接】english-words:memo: A text file containing 479k English words for all your dictionary/word-based projects e.g: auto-completion / autosuggestion项目地址: https://gitcode.com/gh_mirrors/en/english-words

english-words 是一个包含 47 万+ 英语单词的开源词表词库项目,通过 scripts/gen.sh 一条命令即可从原始词表一键生成 words_alpha.txt 纯字母词表、words_dictionary.json 英汉速查 JSON 词典和全套 zip 压缩包。本文将深度剖析这条「排序去重 → 过滤 → JSON 转换 → 打包」的数据流水线,带你看懂每一行脚本背后的设计意图,让你的自动补全、拼写检查、单词消消乐项目直接受益。

5 条命令看懂 english-words 数据流水线全景

整个生成流程被封装在 scripts/gen.sh 中,核心逻辑只有 5 行:

sort -u words.txt -o words.txt cp words.txt words_alpha.txt python3 scripts/create_json.py words_alpha.txt > words_dictionary.json find . -type f -name "words*" -maxdepth 1 -execdir zip '{}.zip' '{}' \;

一句话概括它的职责:输入一份原始词表,输出三种格式、三种大小、开箱即用的成品词库

产物文件内容规模适用场景
words.txt全量词表(已排序去重)约 46.6 万行数据库导入、语料训练
words_alpha.txt仅纯字母单词约 37 万行自动补全、拼写校验
words_dictionary.jsonwords_alpha 的 JSON 版本约 6.6 MBPython 高速查词
三个 *.zip 包对应文件的压缩版合计约 3.3 MB快速下载分发

流水线第一步:sort -u 让词表「有序且唯一」

sort -u words.txt -o words.txt

这是整个流水线的地基。words.txt 原始数据来自 infochimps 词库 与 Moby Word II(Gutenberg 编号 3201) 等公开词源,天然存在大量重复行sort -u一步完成两件事:

  • -u(unique):自动去重,保证每个单词只出现一次;
  • sort(字母序):让词表严格有序——有序词表不仅方便人工抽查,还能用二分查找实现 O(log n) 的快速单词校验。

流水线第二步:cp + grep 提取「纯字母词表」

cp words.txt words_alpha.txt grep -v '[[:alpha:]]*' words_alpha.txt

注意这一步的取巧之处:words_alpha.txtwords.txt的副本,而 words.txt 在排序后,纯字母单词恰好整体排在数字、符号、混合格式词的前面(例如210-point3D这类词条会沉底)。项目维护者据此约定:只需截取前 37 万行「纯字母段」,就得到了一份不含数字和符号的高质量词表,也就是 README 中推荐的「快速方案」words_alpha.txt。

grep -v那一行则充当「质检探针」——把仍夹带非字母字符的行打印出来供人工核对,属于流水线里的一道防错关卡。

💡 使用建议:做自动补全、拼写检查请选 words_alpha.txt;做语料库、词频统计请选 words.txt。

流水线第三步:create_json.py 把词表变成 O(1) 速查字典

scripts/create_json.py 是流水线里唯一的 Python 脚本,全文逻辑不到 10 行,却解决了一个关键痛点——查词速度

words = open(sys.argv[1]) word_list = words.readlines() json_words = {word.rstrip(): "1" for word in word_list} print(json.dumps(json_words, indent=4))

它的设计思路非常巧妙:

  1. 词典即数据库:把每个单词作为 key、统一赋值为"1",生成形如{"a": 1, "aa": 1, "aaa": 1}的 JSON 结构,加载后就是一个 Python dict,单词存在性判断从「遍历列表」升级为哈希O(1) 查询
  2. 零依赖:只用了标准库sys+json,任何装了 Python 3 的机器都能直接跑,无需 pip 安装任何包;
  3. 流式输出:直接print到 stdout,由 gen.sh 用>重定向写入 words_dictionary.json,脚本本身不落盘、不污染工作区。

项目还附带了一个演示脚本 read_english_dictionary.py,展示了最精简的消费方式——加载词表为 set,然后用'fate' in english_words这样一行代码完成单词校验,这正是该 JSON 词库面向的目标用法。

流水线第四步:find + zip 一键打包分发

find . -type f -name "words*" -maxdepth 1 -execdir zip '{}.zip' '{}' \;

最后一步用find精确定位根目录下所有words*文件,逐个压缩为同名 zip。配合执行前的rm *.zip(清理旧包),保证了每次运行都产出干净的、与源文件完全同步的压缩包,不会出现「zip 里还是旧词表」的发布事故。这也是为什么仓库中 words.zip、words_alpha.zip、words_dictionary.zip 三个压缩包与源文件一一对应。

如何一键运行这套词表生成器?

环境要求很简单:Linux/macOS 命令行 + Python 3 + zip 工具

第 1 步:获取项目

git clone https://gitcode.com/gh_mirrors/en/english-words cd english-words

第 2 步:执行生成脚本

bash scripts/gen.sh

运行完毕后,根目录即产出全套成品词表文件。若想单独重跑某一步,脚本头部注释也写明了独立用法,例如:python3 scripts/create_json.py words_alpha.txt(见 create_json.py 第 28-29 行)。

数据流水线设计小结:新手最值得借鉴的 3 个套路

套路在英文词表项目中的体现可迁移经验
单入口脚本编排gen.sh 串联 5 条命令用 Shell 脚本把「多步数据加工」固化为一条命令
幂等可重跑rm旧 zip 再重新打包每次全量重建,避免增量状态污染
零依赖转换层create_json.py 只用标准库数据格式转换脚本保持极简,谁都能跑

这套「sort 去重 → 规则过滤 → 字典化 → 打包分发」的极简流水线,没有任何复杂框架,却把一个 47 万词的原始语料加工成了多格式、可直接落库投产的英语词表产品——这正是它成为众多拼写检查、自动补全、单词学习类项目首选词源的原因。

【免费下载链接】english-words:memo: A text file containing 479k English words for all your dictionary/word-based projects e.g: auto-completion / autosuggestion项目地址: https://gitcode.com/gh_mirrors/en/english-words

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/19 5:12:02

电脑屏幕黑边怎么消除?分辨率、显卡缩放与驱动排查全攻略

电脑屏幕有黑边、画面撑不满,这几乎是每个折腾过显示器的人都遇到过的事。我第一次碰到是在给一台老台式机换了个 24 寸显示器之后,系统里分辨率明明写着 1920x1080,可屏幕左右两侧硬是各留了一条两指宽的黑边,看着特别别扭。当时…

作者头像 李华
网站建设 2026/9/19 5:11:12

x86架构代码段间跳转原理与实践指南

1. 代码段间跳转的核心概念解析在程序执行过程中,代码段间跳转(Inter-Segment Jump)是指CPU从当前代码段转移到另一个代码段继续执行指令的过程。这种跳转不同于普通的段内跳转(Intra-Segment Jump),它涉及…

作者头像 李华
网站建设 2026/9/19 5:11:07

ArcGIS面转点与自动计算经纬度实操全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/19 5:09:19

AI玩具机芯对接全链路:SDK选型、API调用与UART通信实战

1. 从一颗机芯说起:为什么AI玩具的对接链路值得单独拎出来讲做AI玩具这行的人,大概都经历过这样一个阶段:硬件那边把机芯板子打样回来,烧好固件,插上USB转串口线,电脑上打开串口助手,能看到一堆…

作者头像 李华
网站建设 2026/9/19 5:09:07

用Grok Bot打造全自动X助手:从云电脑到插件部署实战

如果你平时在 X(原 Twitter)上看讨论、发观点,应该能体会到一个尴尬现象:时间线刷得飞快,想找素材、想回评论、想定时发帖,每一件事都得人肉操作。时间一长,你会发现运营一个账号的成本远比你想…

作者头像 李华