Gensim训练维基百科词向量模型(含代码)
由于平时会用到很多的文本预处理,这里就系统的讲解一下Gensim是如何训练维基百科词向量模型的!!其中训练好的模型,也就是最终生成的 **.model 文件,可以作为预训练词向量使用。训练维基百科词向量模型的代码参见我的github:https://github.com/ly987/NLP首先简单了解一下gensim:自定义两句话,分词,以分好词的句子作为输入,使用 gensim ...
由于平时会用到很多的文本预处理,这里就系统的讲解一下Gensim是如何训练维基百科词向量模型的!!
其中训练好的模型,也就是最终生成的 **.model 文件,可以作为预训练词向量使用。
训练维基百科词向量模型的代码参见我的github:https://github.com/ly987/NLP
首先简单了解一下gensim:
自定义两句话,分词,以分好词的句子作为输入,使用 gensim 的 Word2Vec 训练词向量。
from gensim.models import word2vec
raw_sentences = ["the room is very hot", "the dog is very cute"]
sentences = [s.split() for s in raw_sentences]
print(sentences)
# [['the', 'room', 'is', 'very', 'hot'], ['the', 'dog', 'is', 'very', 'cute']]
model = word2vec.Word2Vec(sentences, min_count=1)
print(model.similarity('dog', 'room')) # 0.008617729
embedding_dim = model['dog'].shape[0]
# print('词向量的长度为{}'.format(embedding_dim)) # 100
print(model['dog']) # 100维度的向量
print(model.most_similar(positive=['hot'], topn=10))
# 输出:
# [('room', 0.1527533233165741),
# ('dog', 0.09926721453666687),
# ('the', 0.06792610883712769),
# ('is', 0.03735002875328064),
# ('cute', 0.018039152026176453),
# ('very', -0.1967192143201828)]
print(model.most_similar(positive=['dog', 'room'], negative=['cute'], topn=1))
# 输出:
# [('very', 0.1005309671163559)]
下面我们开始训练维基百科数据:
一、下载维基百科数据
下载网址:https://dumps.wikimedia.org/zhwiki/
一般有两个版本,这里我们选用小点的那一个,在实际应用中,我们用1.7G训练的词向量作为预训练词向量。
下载好的文件格式就为 **.bz2
二、将下载好的维基百科文件的文件格式转化为 **.txt格式
使用github中分享的代码:process.py
在cmd中,将路径调至process.py和下载好的 **.bz2 文件目录下,运行:
python process.py zhwiki-latest-pages-articles.xml.bz2 wiki.zh.text
其中wiki.zh.text的名称可以自定义。
三、将 **.txt 文件的繁体字转化为楷体
使用软件:opencc
安装好opencc软件,将 **.txt 文件放置与 opencc.exe 同一目录下,在cmd中,将路径调至opencc的安装目录下,运行:
opencc -i wiki_texts.txt -o test.txt -c t2s.json
其中 test.txt 的名称可以自定义。
四、对 test.txt 分词
使用github中分享的代码:Testjieba.py
在cmd中,将路径调至Testjieba.py和下载好的文件目录下,运行:
python Testjieba.py
五、训练词向量
使用github中分享的代码:word2vec_model.py
在cmd中,将路径调至word2vec_model.py和下载好的文件目录下,运行:
python word2vec_model.py zh.jian.wiki.seg.txt wiki.zh.text.model wiki.zh.text.vector
其中 wiki.zh.text.model 和 wiki.zh.text.vector 的名称可以自定义。wiki.zh.text.model 即为最终训练好的词向量。
六、测试
使用刚刚训练好的 wiki.zh.text.model 来对句子进行词向量转化。
from gensim.models import Word2Vec
en_wiki_word2vec_model = Word2Vec.load('wiki.zh.text.model')
testwords = ['苹果','数学','学术','白痴','篮球']
for i in range(5):
res = en_wiki_word2vec_model.most_similar(testwords[i])
print (testwords[i])
print (res)
更多推荐
所有评论(0)