Skip to content

基于python3训练中文wiki词向量、字向量、拼音向量

Notifications You must be signed in to change notification settings

taishan1994/python3_wiki_word2vec

Repository files navigation

python3_wiki_word2vec

基于python3训练中文wiki词向量、字向量、拼音向量。
已处理好的文件:
阿里云链接:https://www.aliyundrive.com/s/p35V1WmiBJS

依赖

gensim
jieba
pypinyin
opencc-python-reimplemented

第一步

过滤掉原始文本中的html符号,并存储为txt文件

python convert_to_txt.py zhwiki-latest-pages-articles.xml.bz2 wiki.zh.txt

第二步

将繁体字转换为简体字,首先要安装以下包:

pip install opencc-python-reimplemented

然后在命令行执行:

python -m opencc -c t2s -i wiki.zh.txt -o wiki.zh.simp.txt

第三步

获取词向量训练语料

使用jieba进行分词,如果没安装该模块,则需要:

pip install jieba

然后运行以下命令:

python segment_by_jieba.py

最后执行:

python train_word2vec.py

获取字向量训练语料

先运行:

python segment_char.py

然后运行:

python train_word2vec_char.py

获取拼音向量语料

你需要先安装以下包:

pip install pypinyin

你可以使用以下命令测试:

python test_pinyin.py

然后运行:

python segment_by_pinyin.py

最后运行:

python segment_by_pinyin.py

加载训练好的模型,并测试

加载词向量

python test_word2vec.py

结果:

==============================
求孙悟空的相似词悟空 0.8302149176597595
牛魔王 0.8158780336380005
唐僧 0.7910414934158325
猪八戒 0.7805720567703247
沙悟净 0.7804343104362488
沙僧 0.7628636956214905
铁扇公主 0.7468816637992859
哪吒 0.7401531338691711
唐三藏 0.7286755442619324
齐天大圣 0.728164553642273
==============================
==============================
皇上+国王=皇后+臣子 0.5882754325866699
侍臣 0.5720297694206238
三世 0.5707935690879822
教皇 0.5681069493293762
下臣 0.5630483031272888
新王 0.561499297618866
陛下 0.5612003207206726
叔向 0.5568481683731079
圣上 0.5560325384140015
皇帝 0.5549168586730957
==============================
==============================
找出太后 妃子 贵人 贵妃 才人不匹配的词语
妃子
==============================
==============================
找出书籍和书本"的相似度
0.6888837
找出"逛街和书本"的相似度
0.15222512

加载字向量

python test_word2vec_char.py

结果:

==============================
求丑的相似词 0.5284875631332397
 0.5041337013244629
 0.4905036985874176
 0.4649895429611206
 0.43988290429115295
 0.42739951610565186
 0.40833044052124023
 0.38065898418426514
 0.37993788719177246
 0.3759212791919708
==============================
==============================
求龚的相似词 0.836471676826477
 0.8297753930091858
 0.8270807266235352
 0.8269028067588806
 0.8242413997650146
 0.8150491714477539
 0.8111284375190735
 0.807446300983429
 0.8055393099784851
 0.7994782328605652
==============================
==============================
求美的相似词 0.6687709093093872
 0.6437357664108276
 0.5671981573104858
 0.521937906742096
 0.5166231393814087
 0.43756103515625
 0.35331031680107117
 0.35141149163246155
 0.3467445373535156
 0.32968077063560486
==============================

加载拼音向量

python test_word2vec_pinyin.py

结果:

==============================
求chou3的相似词mao3 0.7094196677207947
yao3 0.45190462470054626
nong4 0.4128718078136444
man2 0.407620906829834
shuo1 0.3986712098121643
niang2 0.39512279629707336
dai3 0.382381796836853
xia1 0.3749469220638275
mao1 0.37324249744415283
dan3 0.37195447087287903
==============================
==============================
求gong1的相似词umpc 0.34139925241470337
tie3 0.3174058496952057
meng1 0.3167680501937866
guan3 0.3146922290325165
mcfly 0.30235010385513306
ホテル 0.29963892698287964
esp 0.2994944155216217
chuang4 0.2983870208263397
vertex 0.29366573691368103
のあたる 0.29353320598602295
==============================
==============================
求mei3的相似词ying1 0.45298585295677185
han2 0.4176357686519623
jia1 0.4083157479763031
ou1 0.3890629708766937
トメ 0.3689119815826416
ベロキス 0.3615325093269348
bash 0.34474748373031616
かず 0.3278074264526367
からみた 0.3273840844631195
あゆ 0.32595932483673096
==============================

讲在最后

你可以尝试以下:

  • 在得到词向量训练语料的时候,可以使用jieba分词中加载停止词的用法,过滤掉停用词。
  • 得到字训练语料的时候,可以过滤掉英文以及其它的一些非中文字符或者字符串。
  • 得到拼音语料的时候,也可以去除掉英文及其它的一些非拼音的字符或字符串。

参考

https://github.com/Embedding/Chinese-Word-Vectors: 获取大量中文预训练向量
https://github.com/AimeeLee77/wiki_zh_word2vec: 本项目基于该项目进行的修改,不同之处:
(1)修改支持为python3;
(2)修改繁体转简体使用的包,该项目里面的包不可用;
(3)修改新版gensim加载词向量的方式;
(4)增加字向量和拼音向量。

About

基于python3训练中文wiki词向量、字向量、拼音向量

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages