精美词库
精美词库是一个Sublime Text 3词典插件,可以提高你在英文写作中的用词选择。
详细信息
安装
- 总数 458
- Win 290
- Mac 110
- Linux 58
8月6日 | 8月5日 | 8月4日 | 8月3日 | 8月2日 | 8月1日 | 7月31日 | 7月30日 | 7月29日 | 7月28日 | 7月27日 | 7月26日 | 7月25日 | 7月24日 | 7月23日 | 7月22日 | 7月21日 | 7月20日 | 7月19日 | 7月18日 | 7月17日 | 7月16日 | 7月15日 | 7月14日 | 7月13日 | 7月12日 | 7月11日 | 7月10日 | 7月9日 | 7月8日 | 7月7日 | 7月6日 | 7月5日 | 7月4日 | 7月3日 | 7月2日 | 7月1日 | 6月30日 | 6月29日 | 6月28日 | 6月27日 | 6月26日 | 6月25日 | 6月24日 | 6月23日 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Windows | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
Mac | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Linux | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
说明文档
精美词库
精美词库是一个Sublime Text 3词典插件,可以提高你在英文写作中的用词选择。
精美词库是一个辅助用户在英文写作中选择更优美词汇的SublimeText插件。
欢迎在GitHub上进行Fork、提交PR或提出问题。
动机
作为一个非英语母语者,我在写作正式内容时,常常因为想不出替换平淡词汇的炫酷词汇而感到沮丧。
作为一个非英语母语者,在正式英语写作过程中,我经常为如何选择更佳的词汇而感到困扰,只有平淡的字词可用。
一个非英语母语者也许拥有庞大的词汇量,他能在阅读和听力中识别很多单词,但在写作和口语表达时,往往无法恰当地回忆和主动使用这些单词。这些能够识别却不会主动使用的单词,被称为被动词汇。这篇博客对这一点有详细的解释。
一名非英语母语者也许有很大的词汇量,在读和听的过程中他能识别出很多单词,但在写和说的过程中他可能无法回忆和适当地使用这些单词。这些能够识别但不会使用的词,称为被动词汇。这篇博客对此有深入的探讨。
程序化地寻找炫酷词汇
Wordnet与Word2Vec
为了解决这个问题,我在词典中查找一个词的同义词,程序上使用ntlk
库中的wordnet
。但Wordnet无法按相似度顺序提供同义词,其结果是按照不同的词性进行分类。此外,在许多情况下,如果词典中没有这个词的同义词,Wordnet将不会给出任何结果。相比之下,Word2Vec也会告诉你单词之间的相似度,你可以根据这个相似度来排序结果,并且只要要求的结果数量N不超过Word2Vec的词汇量,它总是会给你返回前N个最相似的结果。Word2Vec方法的本质在于,最接近的单词暗示它们是在最相似的情况下使用的,它们未必是相互的同义词,但它们以某种方式相关,可能性不是简单的词汇相关。
为了解决这个问题,我可以在词典里查找一个单词的同义词,从编程的角度来说,我会使用ntlk
Python包中的wordnet
。但是,Wordnet的结果并不是按照相似性排列的,而是以不同的词性进行分类。另外,很多时候如果Wordnet词典中没有某个单词的同义词,那么就不会有任何结果。再来说Word2Vec,它实际上不是一个词典,而是机器学习常用的用向量表示单词的技术。Word2Vec可以告诉你单词之间的相似度,你可以根据这个相似度对结果进行排序,同时,只要你不要求的结果数量N超过Word2Vec的词汇量,它总是可以给你返回前N个结果。Word2Vec的本质在于观察单词出现的上下文,它们出现的语境越相似,单词本身就越相似,但相似的单词不一定是同义词,它们可能是以某种方式相关的,往往不是简单的词汇相关。
所需空间
Wordnet是ntlk
包的一部分,大约占用11MB的空间,加上43MB的词典数据。如果计算模型,例如使用Wikipedia Dependency方法训练出来的,具有300个维度、174,015个词汇量的模型,则为860MB,如果转换成二进制形式则是210MB,再加上所需的全部软件包约为110MB,总共至少需要320MB的空间。
Wordnet和Word2Vec占用的磁盘空间差别很大。Wordnet是ntlk
包的一部分,整个ntlk
只占用11MB空间。而Word2Vec则要大得多,如果包含其模型,如使用Wikipedia Dependency方法训练出的具有300个维度、174015个词汇量的模型,则占用了860MB的空间,转换为二进制形式则是210MB,再加上所有依赖的软件包的大小约为110MB,总共至少需要320MB的空间。
有趣的示例
下面是当我对单词'beautiful'进行查询时Word2Vec和Wordnet的输出结果。请注意,Wordnet的输出是无序的,我只是取了它给出的前10个。我们可以看到,结果都相当不错。
Word2Vec的前10个输出 | Wordnet的前10个输出 |
---|---|
gorgeous | beauteous |
delightful | bonny |
glamorous | dishy |
seductive | exquisite |
elegant | fine-looking |
adorable | glorious |
stylish | gorgeous |
sumptuous | lovely |
wonderful | picturesque |
prettiest | pretty-pretty |
当然我也测试了一些非正式的词,从Wordnet中只得到了三个同义词,似乎Wordnet把它看得太正式了,LOL。Word2Vec给出的结果更为多样,其中大部分是咒骂词,有些则稍微有些离题。
Word2Vec的输出 | Wordnet的输出 |
---|---|
crybaby | creep |
klutz | crazy |
cheater | |
voyeur | |
bummer | |
wanker | |
trekkie | |
lycanthrope | |
masochist | |
motherfucker |
'strengthen',我简直不敢相信Wordnet只给出一个结果。
Word2Vec的输出 | Wordnet的输出 |
---|---|
entrench | tone |
reinvigorate | |
enhance | |
democratize | |
solidify | |
deepen | |
bolster | |
modernise | |
weaken | |
decentralize |
'disgusting',Word2Vec在这轮赢了。
Word2Vec的输出 | Wordnet的输出 |
---|---|
sickening | disgust |
embarassing | offensive |
horrifying | |
baffling | |
patronising | |
perplexing | |
nauseating | |
maddening | |
saddening | |
unsettling |
'door',Wordnet仍然给出很少的输出,而Word2Vec给出了一些有趣的结果。
Word2Vec的输出 | Wordnet的输出 |
---|---|
doors | doorway |
doorway | |
window | |
gate | |
stairwell | |
stairway | |
jamb | |
balcony | |
entryway | |
vestibule |
"with",Wordnet给出零结果,而Word2Vec给出了一些介词和连词,其中一个是以单引号开头的错误。
Word2Vec的输出 | Wordnet的输出 |
---|---|
for | |
without | |
after | |
despite | |
by | |
without | |
whither | |
in | |
eventhough | |
although |
"about",你应该从Word2Vec的结果中非常仔细地挑选。
Word2Vec的输出 | Wordnet的输出 |
---|---|
s750 | approximately |
贫乏的 | 活跃的 |
超过 | |
schilpp(此处可能为专有名称,需确认是否有译名或保留原样) | |
approximately | |
without | |
比 | |
不道德的 | |
作为 | |
特别地 |
"轻柔地",我认为大多数时候 Word2Vec 比 Wordnet 表现更好。
Word2Vec的输出 | Wordnet的输出 |
---|---|
温柔地 | 轻轻地 |
优雅地 | |
整洁地 | |
笨拙地 | |
大声地 | |
安静地 | |
狂怒地 | |
尖锐地 | |
侵略性地 | |
无休止地 |
缺点
Word2Vec 和 Wordnet 都只能处理单个单词,目前还不能输入词组。
目前 Word2Vec 和 Wordnet 还只能处理单个单词,所以你不能输入一个词组。
如何安装?
- 通过 Sublime Text 3 的 Package Control 安装
- Package Control - 首先安装 Package Control
- 搜索 FancyWord 包并安装
从源代码安装
- 从源代码 - 将仓库克隆到 Sublime Text 的 packages 文件夹中,
git clone https://github.com/eastonlee/FancyWord.git "~/Library/Application Support/Sublime Text 3/Packages/FancyWord"
- 从源代码 - 将仓库克隆到 Sublime Text 的 packages 文件夹中,
通过 Sublime Text 3 的 Package Control 安装
- 首先安装 Package Control
- 打开 Package Control,搜索并安装 FancyWord
源代码安装
- 直接将克隆的项目目录复制到 Sublime Text 3 的 packages 目录,
git clone https://github.com/eastonlee/FancyWord.git "~/Library/Application Support/Sublime Text 3/Packages/FancyWord"
- 直接将克隆的项目目录复制到 Sublime Text 3 的 packages 目录,
设置
为简单起见,我将同时称 Word2Vec 和 Wordnet 为词典,实际上 Word2Vec 并不是。由于 Word2Vec 预训练模型的体积庞大,我将其设置为默认词典。如果你想使用性能更佳的 Word2Vec 词典,你需要手动安装 Gensim 和 Flask-RESTful:pip install gensim flask-restful
,然后从这里或这里下载预训练模型,或 yourself 可以找到合适的模型或甚至自己训练模型,但请注意训练好的模型必须与 Gensim 兼容且必须是二进制格式。最后一步,在 FancyWord.sublime-settings 文件中启用 Word2Vec 并设置模型文件的位置,然后重启 Sublime Text 3。
为了简单起见,我在这里称 Word2Vec 和 Wordnet 为词典,实际上 Word2Vec 并不是词典。因为 Word2Vec 预训练模型体积庞大,所以我把 Wordnet 设置默认词典,如果你想使用效果更好的 Word2Vec 词典,你需要手动安装 Gensim 和 Flask-RESTful:pip install gensim flask-restful
,然后在这里或这里下载预训练模型,或者你可以根据自身需要找到合适自己的模型,甚至自己训练模型,但要注意你所训练的模型必须同 Gensim 兼容而且必须是二进制格式的。最后,在 FancyWord.sublime-settings 文件中启用 Word2Vec 并配置模型文件路径,然后重启 Sublime Text 3。
使用方法
将光标移至需要查询的单词,使用CMD K + F
键弹出 FancyWord 的候选词列表,使用CMD K + D
键查找单词在 Wordnet 词典中的定义。目前 FancyWord 只支持英文。
将光标移至需要查询的单词,使用CMD K + F
快捷键弹出 FancyWord 的候选词列表,使用CMD K + D
快捷键查看 Wordnet 词典中单词的定义。目前 FancyWord 只支持英文。
请注意,Word2Vec 结果的质量取决于预训练模型,您可以从这里下载一个使用维基百科语料库训练出的模型,该模型包含 300 个维度和 174015 个词汇。
注意,Word2Vec 结果的准确性由预训练模型决定,您可以从这里下载一个具有 300 维和 174015 个词汇量的模型。
许可
本程序根据 GNU GPL v3 许可证分发。有关详细信息,请参阅 LICENSE 文件。
致谢
感谢 Gensim 和 NLTK 的贡献者
感谢 Yoav Goldberg 对预训练的 Wikipedia Dependency 模型的贡献
感谢 word2vec-api 代码的作者 3Top
感谢 Anaconda 代码的作者 Oscar Campos
感谢 KeyboardSpellCheck 代码的作者 jlknuth