使用维基百科数据利用word2vec简历词向量, 通过对词向量之间的距离的比对,查找出与给出词语相似度较高的单词进行返回
1.使用维基百科官方给出的文档处理程序处理从维基百科上下载的压缩包文件成原始text格式。
使用命令 python process.py zhwiki-latest-pages-articles.xml.bz2 wiki.zh.text
import logging
import os. path
import sys
from gensim. corpora import WikiCorpus
if __name__ == '__main__' :
program = os. path. basename( sys. argv[ 0 ] )
logger = logging. getLogger( program)
logging. basicConfig( format = '%(asctime)s: %(levelname)s: %(message)s' )
logging. root. setLevel( level= logging. INFO)
logger. info( "running %s" % ' ' . join( sys. argv) )
if len ( sys. argv) < 3 :
print ( globals ( ) [ '__doc__' ] % locals ( ) )
sys. exit( 1 )
inp, outp = sys. argv[ 1 : 3 ]
space = ' '
i = 0
output = open ( outp, 'w' , encoding= 'utf-8' )
wiki = WikiCorpus( inp, lemmatize= False , dictionary= { } )
for text in wiki. get_texts( ) :
s= space. join( text)
s= s + "\n"
output. write( s)
i = i + 1
if ( i % 10000 == 0 ) :
logger. info( "Saved " + str ( i) + " articles" )
output. close( )
logger. info( "Finished Saved " + str ( i) + " articles" )
链接:https://pan.baidu.com/s/1Y9uPYbDz31rxOOP_BaevpQ
提取码:asfv
复制这段内容后打开百度网盘手机App,操作更方便哦
2.因为维基百科中的中文数据多半是繁体的中文数据, 所以需要用opencc拓展包将繁体数据转换成为可以使用的简体数据
使用命令 .\opencc -i yuanshi.text -o yuanshi-jianti.text -c zht2zhs.ini
链接:https://pan.baidu.com/s/1H_Bxzl5dk3BHjm5Wz2oxYw
提取码:h3g9
复制这段内容后打开百度网盘手机App,操作更方便哦
win10下1.0版本可能不管用, 我的就不管用, 所以使用0.42版本即可, 同样可以使用
3.将转化为简体中文后的数据, 利用jieba分词进行分词。
使用命令 打开py文件,指定输入文件和输出文件后运行即可
链接:https://pan.baidu.com/s/1a2pAZJncvVr6_yIg4NTL2w
提取码:9rj6
复制这段内容后打开百度网盘手机App,操作更方便哦
4.将分好词的语料库放入gensim拓展库中的word2vec中进行词向量转化, 输出向量文件等文件。
使用命令 python word2vec_model.py ./yuanshi-jianti-fenci.txt word2vec-myself.model word2vec-myself.vector
import logging
import os. path
import sys
import multiprocessing
from gensim. corpora import WikiCorpus
from gensim. models import Word2Vec
from gensim. models. word2vec import LineSentence
if __name__ == '__main__' :
program = os. path. basename( sys. argv[ 0 ] )
logger = logging. getLogger( program)
logging. basicConfig( format = '%(asctime)s: %(levelname)s: %(message)s' )
logging. root. setLevel( level= logging. INFO)
logger. info( "running %s" % ' ' . join( sys. argv) )
if len ( sys. argv) < 4 :
print ( globals ( ) [ '__doc__' ] % locals ( ) )
sys. exit( 1 )
inp, outp1, outp2 = sys. argv[ 1 : 4 ]
model = Word2Vec( LineSentence( inp) , size= 400 , window= 5 , min_count= 5 , workers= multiprocessing. cpu_count( ) )
model. save( outp1)
model. wv. save_word2vec_format( outp2, binary= False )
链接:https://pan.baidu.com/s/1l8nq8ocZ_ht_3cA7E4HZZA
提取码:09ex
复制这段内容后打开百度网盘手机App,操作更方便哦
5.利用已经建立好的词向量进行相似词的预测
from gensim. models import Word2Vec
en_wiki_word2vec_model = Word2Vec. load( 'word2vec-myself.model' )
testwords = [ '苹果' , '数学' , '学术' , '白痴' , '篮球' ]
for i in range ( 5 ) :
res = en_wiki_word2vec_model. most_similar( testwords[ i] )
print ( testwords[ i] )
print ( res)
链接:https://pan.baidu.com/s/1MfzVQnTENOidc7BwRSDkbw
提取码:bkrp
复制这段内容后打开百度网盘手机App,操作更方便哦