
之前我们通过程序整理过一份 Python 及编程相关的英语高频词汇表:我们用程序整理出了一份Python英语高频词汇表,拿走不谢!(回复 单词 查看代码及单词本),希望能给同时学习编程和英语的同学一点帮助。
单词本给出后,有不少朋友提出了一些很有价值的改进意见。于是我们又做了几次修改,比如增加了用户补充解释的功能。
最近,大牛 @韦易笑 在知乎上看到我们的项目之后,建议增加 lemma(原型单词)转换以提高词频统计的准确性,并推荐了他制作并维护的开源项目:英汉词典数据库 ECDict。
我看到 ECDict 这个项目之后觉得相见恨晚,如果早点知道就可以节省不少工作,并且可以把单词本做得更好。(之后有时间了要再更新)
因此今天就给大家分享下这个项目,正在开发或打算开发翻译、单词类程序,或需要在软件中增加内置词库的同学可重点关注。
项目地址:
https://github.com/skywind3000/ecdict
项目介绍(部分内容摘自项目说明):
ECDict 是一份英文->中文字典的双解词典数据库,根据各类考试大纲和语料库词频收录各类单词的英文和中文释义,并按照各类考试大纲(中考/高考/四六级)和词频(英国国家语料库/当代语料库)星级(柯林斯)进行标注。每个单词还附带了不同的时态/词性/比较级/最高级/三单/复数/原型单词。目前已收录340多万词。
340万什么概念?对比一下: OALD8:7.2万词条 朗文5:6.2万词条 Merriam-Webster’s Collegiate:11.9万 柯林斯 Cobuild 5:3.4万 21世纪:37.7万 有道本地增强版离线词库:40万 欧陆离线词库:40万
在庞大而详细的单词数据基础之上,ECDict 提供了一些英文词汇处理的实用方法:
词干查询
这里说的词干,就是我们前面提到的 Lemma。比如我们从文章里提取出的单词,很多都是动词的不同形式以及名词复数等,不便于直接统计。用 LemmaDB 类就可以方便的查询 [‘gave’, ‘taken’, ‘looked’, ‘teeth’] 的 lemma 是 [‘give’, ‘take’, ‘look’, ‘tooth’],也可以查找 ‘take’ 这个词的若干种变体。对于查不到的单词,再依据各种算法生成(判断词尾 -ed,-ing 等)。
模糊匹配
搜索时可通过 strip-word 进行模糊匹配。比如对 long-time 进行搜索,可以找到包括 long-time/long time/longtime 这类词的所有结果:
long-time, longtime, long time, long-time base, longtime base, …
数据读写
基于 CSV、SQLite、MySQL 的单词读写、查询、匹配、条件、修改、删除等。
我们通过一小段代码示例来体验下 ECDict:
s= '''
Dear Red. If you're reading this, you've gotten out.
And if you've come this far, maybe you're willing to come a little further.
You remember the name of the town, don't you?
I could use a good man to help me get my project on wheels.
I'll keep an eye out for you and the chessboard ready. (beat)
Remember, Red.
Hope is a good thing, maybe the best of things, and no good thing ever dies.
I will be hoping that this letter finds you, and finds you well.
Your friend. Andy.
'''
import re
from stardict import LemmaDB
lemma = LemmaDB()
lemma.load('lemma.en.txt')
words = re.findall(r'\'?\w+', s)
for w in words:
l = lemma.word_stem(w.lower())
if l:
print(w, l[0])
else:
print(w)部分结果:
Dear dear
Red red
If
you you
're be
reading read
this this
you you
've have
gotten get
out out
And
if
you you
've have
...对于这一段《肖申克的救赎》中的台词,我们先用正则取出了里面的单词,再通过 LemmaDB 获取每个单词的词干。可以看出来,几乎所有的单词都得到了正确的结果,当然也有极少部分因为多义词或分词的原因没有正确处理。另外还有一些没有查询到结果的单词,这些词基本都不需要变化。总体来看,效果还是非常好的。
经过 Lemma 转换过之后的结果再进行词频统计,会比直接统计原文中的单词准确得多。
ECDict 项目可以为你开发需要内嵌词典的软件或单词查询统计的项目时提供极大的便利。即使你不是一个开发者,只是想要一个词汇量丰富的英汉词典,同样也可以使用 ECDict 搭配开源词典工具 GoldenDict,或者欧陆、MDict、StarDict、BlueDict、EDWin,甚至导入 kindle 词典中使用。
更详细说明和示例可去项目的 Github 上查看。
作者也发布了一个词汇量达432万的词典工具《简明英汉必应版》,在知乎 @韦易笑 的专栏里有介绍:
https://zhuanlan.zhihu.com/p/31493883
本文分享自 Crossin的编程教室 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!