恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
英汉词典数据库 ECDICT 实战指南:一个文件解决你阅读工具的词形、词频与模糊匹配难题
首页
资讯中心
/
英汉词典数据库 ECDICT 实战指南:一个文件解决你阅读工具的词形、词频与模糊匹配难题
英汉词典数据库 ECDICT 实战指南:一个文件解决你阅读工具的词形、词频与模糊匹配难题
发布时间:2026/8/19 1:35:03
英汉词典数据库 ECDICT 实战指南一个文件解决你阅读工具的词形、词频与模糊匹配难题【免费下载链接】ECDICTFree English to Chinese Dictionary Database项目地址: https://gitcode.com/gh_mirrors/ec/ECDICT每次想给阅读器、背单词 App 或翻译插件加一个靠谱的英汉词典你是不是都会卡在同一个环节查gave提示未收录查perceived也无结果想按四六级筛选词汇却拿不到标注数据。与其自造轮子不如直接用ECDICT 英汉词典数据库——这份开源数据内置 76 万词条、双词频与考试标签并附带一套 Python 接口把词形变化、词干还原和模糊匹配一次补齐。为什么值得用三个其他词典数据给不了的差异点1. 它把单词的亲戚关系都存下来了绝大多数词典数据只有单词 → 释义的映射动词时态、名词复数只能靠你自己写算法猜。ECDICT 的exchange字段记录了每个词的完整词形变化perceive 的数据长这样d:perceived/p:perceived/3:perceives/i:perceiving含义是过去分词d、过去式p、第三人称单数3、现在分词i。这让你做阅读器时遇到任意变形都能直接跳回原词展示释义而不是弹出一句未收录。2. 词频不是单一维度而是传统与现代双轨bnc是英国国家语料库的词频排名覆盖几百年历史文献frq是当代语料库排名最近 20 年。同一单词在两个榜单里可能天差地别——quay码头在 BNC 排 8906 名当代语料库却跌出两万Taliban 恰好相反。如果你做的是名著阅读工具bnc更值得参考做科技资讯阅读器frq更贴近现实。一次查询两种口径都在手里。3. 附带一份 1 亿词条语料训练出的词干数据库lemma.en.txt扫描了 BNC 全部一亿个词条把gave → give、teeth → tooth这类不规则的还原关系直接写死在数据库里。对做词频统计、拼写检查的人来说这比任何基于词尾猜测的算法都可靠。从零跑通五分钟做出你的第一个词典查询环境要求只有 Python 3无需安装任何第三方依赖。先把数据拉下来git clone https://gitcode.com/gh_mirrors/ec/ECDICT cd ECDICT仓库里的stardict.py是唯一要用的接口文件ecdict.csv是 76 万词条的基础版数据。写个最小查询脚本from stardict import DictCsv d DictCsv(ecdict.csv) # 加载约 4~5 秒 word d.query(perceive) print(word[translation]) print(词频:, word[bnc], word[frq]) print(考试标签:, word[tag])预期输出在当前数据上实测vt. 感觉, 认知, 理解, 意识到 词频: 2776 2165 考试标签: cet4 cet6 ky toefl ielts到这里你已经能查任意单词了。查询接口对大小写不敏感query(Perceive)与query(perceive)结果一致。深入实战三个能直接搬进业务场景的用法场景一给背单词工具做考试词汇 词频双筛选要做一套四六级词汇表用tag字段过滤即可还能结合双词频按重要性排序from stardict import DictCsv d DictCsv(ecdict.csv) def exam_words(exam, limit20): result [] for _, word in d: # 遍历全部词条 data d.query(word) if exam in data[tag] and data[frq]: result.append((data[frq], word)) result.sort() # 按当代词频升序 return [w for _, w in result[:limit]] print(exam_words(cet4)[:5])这段代码筛出四级词并取当代语料库中最常用的 5 个输出形如[a, of, to, and, in]做 Anki 卡片时把词频、柯林斯星级、时态信息一并拼进卡片模板学习排序就自动合理了。场景二抓词软件遇到变形词先用词干还原再查词典阅读器里鼠标取词最烦的就是取到gave、taken这类变形。正确的处理链路是词干还原 → 词典查询 → 模糊匹配兜底from stardict import DictCsv, LemmaDB d DictCsv(ecdict.csv) lm LemmaDB() lm.load(lemma.en.txt) # 加载词干库约 8 万组 def lookup(word): data d.query(word) if data: return data stems lm.word_stem(word) # 变形词 → 原型 if stems: return d.query(stems[0]) return None print(lookup(gave)[translation][:30])gave的词干是give所以最终打印的是 give 的中文释义前 30 个字符。实测[gave, taken, teeth]分别还原为[give, take, tooth]不规则的teeth也一次命中。场景三CSV 太慢一行代码转 SQLite查询提速到毫秒级CSV 加载需要 4~5 秒本地工具用起来还是偏慢。stardict.py提供了格式转换接口转换后单次查询在毫秒级from stardict import convert_dict, StarDict convert_dict(ecdict.db, ecdict.csv) # CSV → SQLite s StarDict(ecdict.db) # 直接读 SQLite print(s.query(perceive)[phonetic])转换只需运行一次之后StarDict与DictCsv的接口完全一致——query、match、query_batch、count全部通用业务代码不用改一行。这也是项目作者自己推荐的使用方式日常查询用 SQLite修订数据时才用 CSV。附赠模糊匹配的隐藏字段swstardict.py的match(word, limit, strip)第三个参数设为True时会走swstrip-word索引忽略连字符与空格。搜索long-time时能同时找到longtime、long time等所有形态——实测匹配结果里前五项就是longtime, long time ago, long-time burning oil, ...。用户拼写不规范时这一招能救回大量查询失败。避坑与调优最常踩的 4 个坑别用 Excel 直接打开 ecdict.csv。数据是 UTF-8 编码直接双击会乱码。要么用代码读取要么在 Excel 里走数据 → 从文本导入指定逗号分割和 UTF-8 编码。exchange里偶发冗余标签。早期数据存在f复数、b比较级、z最高级这些与s/r/t重复的旧标签。仓库里的del_bfz.py专门做清洗转换库之前可以先跑一遍不影响主流程。MySQL 版本需要额外驱动。DictMySQL依赖MySQLdb没装会直接抛ImportError: No module named MySQLdb。单机应用优先选 SQLite省心且足够快。词干查询是首选算法才是兜底。lemma.en.txt覆盖了 BNC 语料中 95% 的变形但查不到时不要硬编规则先用match(..., stripTrue)模糊匹配两者都失败再考虑写后缀判断。生态与扩展这些文件各有用武之地文件作用适合场景ecdict.csv/stardict.7z基础版 / 完整版数据直接查询、PR 修订lemma.en.txt8.4 万组词干数据词频统计、取词还原dictutils.py词典生成与转换工具导出 StarDict / mdx / Anki 模板wordroot.txt词根词缀资料JSON词源学习功能resemble.txt近义词辨析数据辨析类词典扩展linguist.pyWordNet / NodeBox 封装获取英文释义、生成词形社区已有 T.vim、Trans.nvim 等编辑器翻译插件基于 ECDICT 构建如果你的项目是 Vim/Neovim 插件可以直接参考它们的接入方式。数据本身是 CSV 纯文本随时可以 fork 一份自己修订词条改完再合并回来。下一步现在就能动手的三件事第一把仓库 clone 到本地用上面的最小脚本查 10 个你最近学到的单词看看exchange、tag、双词频这些字段长什么样第二写一个convert_dict把数据转成 SQLite体验毫秒级查询第三把你手头某个查不到变形词的老功能接上LemmaDB你会立刻看到取词失败率的下降。如果对某个字段比如pos里的词性比例n:46/v:54或某种转换格式有疑问仓库里的README.md字段说明和stardict.py自带测试用例就是最好的参考文档。数据在手剩下的就交给你的想象力了。【免费下载链接】ECDICTFree English to Chinese Dictionary Database项目地址: https://gitcode.com/gh_mirrors/ec/ECDICT创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考