ctrl+shift+p filters: :st2 :st3 :win :osx :linux
浏览

精美词库

Easton Lee ST3

精美词库是一个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

说明文档

源代码
raw.​githubusercontent.​com

精美词库

精美词库是一个Sublime Text 3词典插件,可以提高你在英文写作中的用词选择。

精美词库是一个辅助用户在英文写作中选择更优美词汇的SublimeText插件。

FancyWord_Demo

欢迎在GitHub上进行Fork、提交PR或提出问题。

如果您觉得它很有用,请考虑捐赠。 捐赠

动机

作为一个非英语母语者,我在写作正式内容时,常常因为想不出替换平淡词汇的炫酷词汇而感到沮丧。

作为一个非英语母语者,在正式英语写作过程中,我经常为如何选择更佳的词汇而感到困扰,只有平淡的字词可用。

一个非英语母语者也许拥有庞大的词汇量,他能在阅读和听力中识别很多单词,但在写作和口语表达时,往往无法恰当地回忆和主动使用这些单词。这些能够识别却不会主动使用的单词,被称为被动词汇。这篇博客对这一点有详细的解释。

一名非英语母语者也许有很大的词汇量,在读和听的过程中他能识别出很多单词,但在写和说的过程中他可能无法回忆和适当地使用这些单词。这些能够识别但不会使用的词,称为被动词汇。这篇博客对此有深入的探讨。

程序化地寻找炫酷词汇

Wordnet与Word2Vec

为了解决这个问题,我在词典中查找一个词的同义词,程序上使用ntlk库中的wordnet。但Wordnet无法按相似度顺序提供同义词,其结果是按照不同的词性进行分类。此外,在许多情况下,如果词典中没有这个词的同义词,Wordnet将不会给出任何结果。相比之下,Word2Vec也会告诉你单词之间的相似度,你可以根据这个相似度来排序结果,并且只要要求的结果数量N不超过Word2Vec的词汇量,它总是会给你返回前N个最相似的结果。Word2Vec方法的本质在于,最接近的单词暗示它们是在最相似的情况下使用的,它们未必是相互的同义词,但它们以某种方式相关,可能性不是简单的词汇相关。

为了解决这个问题,我可以在词典里查找一个单词的同义词,从编程的角度来说,我会使用ntlkPython包中的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 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"

设置

为简单起见,我将同时称 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