ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

免费开源英汉词典数据库 ECDICT 全解:76万词条离线查询、词频分析到词形还原的一站式方案

免费开源英汉词典数据库 ECDICT 全解:76万词条离线查询、词频分析到词形还原的一站式方案 免费开源英汉词典数据库 ECDICT 全解76万词条离线查询、词频分析到词形还原的一站式方案【免费下载链接】ECDICTFree English to Chinese Dictionary Database项目地址: https://gitcode.com/gh_mirrors/ec/ECDICT做工具开发的人大概都经历过这样的尴尬产品功能都写好了唯独查单词这一步卡住。用联网词典接口吧要处理网络延迟、调用次数限制还得担心数据源哪天突然停服自己手工整理一个单词表吧两万个词条已经是极限音标、释义、词频、词形变化全部自己补工作量堪比重新编一本词典。ECDICT 就是为这类场景准备的一站式答案。它是一个完全免费的英汉双解词典数据库由开发者 skywind 历经数年积累、借助 BNC 语料库持续校对而成。仓库里的ecdict.csv是基础版本收纳了大约 76 万个词条完整版本在压缩包stardict.7z中历史 release 数据量一度达到 222 万词条。配上仓库里的stardict.py你可以直接用 Python 在 CSV、SQLite、MySQL 三种格式之间任意切换把一本离线词典嵌入你自己的应用。为什么现成的词典数据总让你不顺手先说说多数词典数据源的通病你会发现 ECDICT 几乎是踩着这些坑一个个填出来的收词量太小。很多免费词表只有几千词连中学课本都覆盖不全更别提小说、论文里那些生僻词。没有音标和词性。释义有了但音标缺失、词性不分做学习类 App 完全没法用。词频无从谈起。你无法知道一个词是高频词还是冷僻词也就没法做分级背单词之类的功能。查不到单词的各种形态。输入gave查不到、输入teeth也查不到而大部分词典根本不会告诉你give和tooth才是它们的原型。ECDICT 的数据表结构几乎是针对这些问题逐条设计的。下面这张表就是ecdict.csv里每条记录的字段布局字段含义word单词本身phonetic音标以英式为主definition英文释义每行一条translation中文释义每行一条pos词性分布如n:46/v:54表示名词占比 46%、动词占比 54%collins / oxford柯林斯星级、是否属于牛津 3000 核心词tag考试大纲标签zk中考、gk高考、cet4、cet6、toefl、ielts、gre 等bnc / frq英国国家语料库词频排名 / 当代语料库词频排名exchange词形变化数据动词时态、名词复数、形容词比较级都在这里detail / audioJSON 扩展信息、读音 URL预留字段一个词条同时带上音标、双解释义、词性比例、考试标签、双词频和词形变化这在同类开源数据里相当少见。一个词两种词频为什么 BNC 和当代语料库要同时看bnc和frq这两个字段是 ECDICT 的一个特色。BNC英国国家语料库统计的是过去几百年的英文资料偏向传统当代语料库只统计最近 20 年的语料贴近当下。同样是查词这两组数字会给出完全不同的答案。以 quay码头为例它在 BNC 里排到第 8906 名算得上高频词因为航海时代留下的文字大量提及它但在当代语料库里它掉到两万名开外。反过来Taliban 这类近年才频繁出现的词BNC 前 20 万基本查无此词当代语料库里却已经冲到 6089 名。一句话总结读 19 世纪的名著看 BNC 排名读现代杂志和科技资讯看当代排名。两套词频叠加词的重要程度基本就一目了然了。词形变化一个 exchange 字段顶半本语法书动词的过去式、过去分词、现在分词、第三人称单数形容词的比较级、最高级名词的复数……这些变化在exchange字段里用一个紧凑格式统一记录。比如perceive这条数据长这样d:perceived/p:perceived/3:perceives/i:perceiving字母前缀对应不同的变化类型p过去式、d过去分词、i现在分词、3第三人称单数、r比较级、t最高级、s复数、0表示词干原型Lemma。这套数据是用 NodeBox 和 WordNet 语言工具包生成的覆盖了几乎所有动词的派生形式——很多词典压根查不了时态变体ECDICT 可以。词干还原把 gave、taken、teeth 打回原型词形变化之外仓库里还有一份更底层的数据lemma.en.txt。它由作者扫描 BNC 全部一亿词条的语料生成包含 18 万余个词形归入 8 万多个词干组lemma group。文件开头是;注释数据行格式是词干 - 变体列表比如be/4109826 - is,was,are,were,s,been,being,re,m,am have/1315648 - had,has,ve,having配合stardict.py中的LemmaDB类词干还原就是一条命令的事from stardict import LemmaDB db LemmaDB() db.load(lemma.en.txt) print(db.get(be)) # 正查be 的所有变体 print(db.word_stem(teeth)) # 反查teeth 的原型是 tooth对做词频统计、拼写检查、抓词软件的人来说这比靠正则猜-ed、-ing后缀靠谱得多。数据库查不到再用算法兜底这是最稳的组合策略。模糊匹配为什么 long-time 能查出 longtime 和 long time数据库里藏着一个隐藏字段swstrip-word。它会把单词里所有非字母数字的字符剥掉、统一转小写long-time变成longtime。SQLite 和 MySQL 建表时就带上这个字段CSV 加载进内存后也会自动生成。使用match方法时把第三个参数设为True就按sw走模糊匹配# 严格匹配只命中 long-time 开头的词 dict.match(long-time, limit10) # 模糊匹配long-time / longtime / long time 都能找出来 dict.match(long-time, limit10, fuzzyTrue)一个词组从分开写到加连字符再到彻底连写往往要经历漫长的演变词典不一定收全所有形态。有了sw用户输错形态也能被引导到正确的词条上。CSV、SQLite、MySQL三种格式到底怎么选仓库默认发布的是 CSV因为它基于纯文本方便用 diff 查看改动、提交 PR 参与修订。但本地用 76 万行的 CSV 体验很差打开慢、查询更慢。实际使用建议按场景来选场景推荐格式理由开发调试、临时查数据CSV直观改动可见适合增量修订桌面应用、个人本地查询SQLite查询延迟低stardict.py建好表就自动带索引高并发服务端MySQL读写并发适合做在线词典 API三种格式统一走stardict.py里的三个类DictCsv、StarDict、DictMySQL接口完全一致。核心方法就六个query查单词、match模糊匹配、query_batch批量查询、count数词条、register注册新词、commit提交修改。从克隆到跑通十五分钟把离线词典用起来整套流程只需要三步。先把仓库克隆到本地git clone https://gitcode.com/gh_mirrors/ec/ECDICT cd ECDICT接着把 CSV 转成 SQLite本地查询会流畅很多from stardict import StarDict db StarDict(ecdict.db) db.import_csv(ecdict.csv) # 一次性导入 word db.query(perceive) # 返回 Python 字典 print(word[translation], word[bnc], word[frq])最后根据自己的需求查数据。比如按考试标签筛选四级词汇或者把某个词的所有时态一次性拿出来生成 Anki 卡片代码量都很小# 筛出全部四级词汇 cet4 [w[word] for w in db.get_all_words() if cet4 in w.get(tag, )] # 批量查询 results db.query_batch([perceive, conceive, receive])如果只是偶尔查几个词直接用DictCsv读ecdict.csv就够了两行代码的事不用建库。周边工具与衍生生态一本数据撑起一片应用数据之外仓库还配了一套厨房用具dictutils.py词典数据维护工具集支持导出两个字典的差异、把差异合并回词典、导出 StarDict 原始格式配合 DictEditor 生成字典、导出 MDX 源文件配合 MdxBuilder 生成 mdx 词库还能在 CSV、SQLite、MySQL 之间互转。linguist.py对 WordNet、NodeBox 的轻量封装做语言学处理时可以直接调用。wordroot.txt 与 resemble.txt前者是词根词缀学习资料后者是形近词列表适合做背单词应用的素材。依托这套数据社区已经孵化出不少成熟产品《简明英汉字典增强版》可以在 GoldenDict、欧陆、MDict、BlueDict 甚至 Kindle 上直接挂载号称全网收词量最大的本地化词典T.vim 和 Trans.nvim 则分别是 Vim 与 Neovim 的翻译插件程序员不离开编辑器就能查词。什么时候你不该用它任何工具都有边界提前说明白可以少走弯路。ECDICT 的定位是词典数据源不是成品词典所以它不提供例句音频audio和detail字段目前还是待开发状态中文释义以简明释义为主追求每一句都带权威例句的体验需要自己二次加工CSV 是 UTF-8 编码直接用 Excel 打开会乱码正确姿势是在 Excel 里走数据→来自文本选逗号分割和 UTF-8 编码。把它当数据底座用而不是当成品词典用你会觉得它格外顺手。接下来可以做什么如果看完文章想动手建议按这个顺序上手先跑通DictCsv查词 → 再转一份 SQLite 体验毫秒级查询 → 用LemmaDB试一次词干还原 → 最后用dictutils.py导出你需要的格式。ECDICT 的生态依然在生长作者在 TODO 里还在持续修订核心两万词汇的释义准确性也欢迎大家用 CSV 提交词条增补。你的下一个词典应用、单词卡工具或是词频分析脚本差的可能就是这份 76 万词条的免费数据——克隆下来跑起来剩下的交给你的想象力。【免费下载链接】ECDICTFree English to Chinese Dictionary Database项目地址: https://gitcode.com/gh_mirrors/ec/ECDICT创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表