ShuGao0810 / cw2vec

Implementation of the cw2vec model

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

cw2vec 的 TensorFlow 实现

cw2vec 是一种基于 skip-gram,并辅以笔画信息来训练中文词向量的模型,详见文章:https://www.aaai.org/ocs/index.php/AAAI/AAAI18/paper/download/17444/16786

声明:此实现非 cw2vec 的官方实现,所有观点皆非 cw2vec 官方观点,如有错误请指正。

此实现力求忠于原文,除了以下:

  1. 相似度的计算:此代码在原文的基础上,乘了1 / |S(w)|,这是因为在使用原文的公式时,观察到了嵌入中出现 NaN 的现象。
  2. 在 skip window 中采样使用的是 random.sample(),原文未作说明。
  3. batch 的处理并没有使用断句,原文未作说明。
  4. 对于笔画长度太短的词,代码进行了 padding,原文未作说明,(这样的词较少)。

关于 commit 的数量

此代码库只有为数不多的几个 commit,这是因为内部的代码库使用了 Git LFS,有许多大文件,所以使用了新的代码库。

训练方法

git clone https://github.com/noobiegz/cw2vec.git
cd cw2vec

conda create -n cw2vec python=3.6
source activate cw2vec
conda install --file requirements.txt

# 编译,注意,这里要求 gcc >= 5,这包括用来编译 TensorFlow 的 gcc。
# 对于更早的 gcc 的支持请参照:
# https://www.tensorflow.org/extend/adding_an_op
./compile.sh

# 详细参数(如训练语料,超参数等)请参见 train.py
CUDA_VISIBLE_DEVICES='' python -m train --cmd=train

训练好的词向量(仍有提升空间)

https://github.com/noobiegz/cw2vec/releases

可提升的地方

  • 运算速度
  • 断句
  • 参数调优

一个不严谨的比较

受限于时间预算,并没有用相同的参数、分词方式及语料训练各个模型来进行比较。下面的比较中:

  • cw2vec: 使用本库 commit 8f789ed 训练,(其中包含详细参数),语料为中文维基百科,epochs=8
  • word2vec: 使用 gensim 的 word2vec 训练,语料为中文维基百科(与 cw2vec 非同一份,但接近),epochs=5
  • score: cosine 相似度

与“森林”相似的词:

cw2vec score cw2vec word word2vec word word2vec score
0.750604 林地 对诺定 0.686841
0.724008 湿地 沼泽 0.686402
0.700475 沼泽 林地 0.677119
0.697006 雨林 布雷顿 0.674078
0.688101 沼泽地 草原 0.652401
0.684015 草原 球会诺定 0.641564
0.681602 次生林 原野 0.64027
0.665787 热带雨林 于诺定 0.636917
0.665439 山林 热带雨林 0.63283
0.663163 茂密 雪伍 0.63075

与“地道”相似的词:

cw2vec score cw2vec word word2vec word word2vec score
0.603195 黄泥 东么 0.607535
0.595496 坑道 海旁 0.569167
0.591545 小巷 闹市 0.557204
0.585134 防空洞 油街 0.548172
0.574345 地底 对出 0.546444
0.574298 入口 雪厂 0.544023
0.555908 沿路 加连威 0.541257
0.555483 葡式 弥敦道 0.53981
0.554203 天桥 太古 0.538864
0.547074 铁架 尖沙咀 0.53674

与“水污染”相似的词:

cw2vec score cw2vec word word2vec word word2vec score
0.808701 污染物 环境污染 0.8823
0.80737 污染源 工业废水 0.874002
0.798353 污染 工业污染 0.870867
0.792276 富营养化 污染物 0.852176
0.782273 废水 污染源 0.847119
0.772658 地表水 水土流失 0.843561
0.767345 优养化 荒漠化 0.832941
0.764575 排污 废水 0.823486
0.755194 酸雨 大气污染 0.82276
0.742726 水体 空气污染 0.821326

与“仿佛”相似的词:

cw2vec score cw2vec word word2vec word word2vec score
0.81085 似的 眼前 0.83014
0.806375 好像 萦绕 0.804456
0.791631 犹如 阴暗 0.796338
0.785168 样子 般地 0.784732
0.778468 眼前 好似 0.782319
0.777897 隐约 脑海 0.776568
0.777875 感觉 隐约 0.773886
0.772368 诡异 喧嚣 0.766031
0.768422 看著 冰冷 0.763594
0.766752 脑海 充满著 0.762369

与“心照不宣”相似的词:

cw2vec score cw2vec word word2vec word word2vec score
0.784952 照料者 掏肺 0.803912
0.783772 结结巴巴 偷改 0.801685
0.78354 不幸者 上津役 0.784095
0.782021 测谎仪 马面亚 0.78059
0.781118 鼓励性 旱坑子 0.780149
0.775456 血浓于水 分清是非 0.778836
0.775402 直观性 亮家 0.778631
0.773511 共谋者 镇东埔 0.776044
0.772164 清况 宁南伯 0.774432
0.771717 双语者 大巧若拙 0.771338

About

Implementation of the cw2vec model


Languages

Language:Python 80.7%Language:C++ 18.3%Language:Shell 1.0%