訓練一個聊天機器人的很重要的一步是詞向量訓練,無論是生成式聊天機器人還是檢索式聊天機器人,都需要將文字轉化為詞向量,時下最火的詞向量訓練模型是word2vec,所以,今天小編文文帶你使用維基百科訓練詞向量。
1、訓練數據下載
我們使用維基百科訓練詞向量,維基百科數據的下載地址為:https://dumps.wikimedia.org/zhwiki/latest/zhwiki-latest-pages-articles.xml.bz2。
下載后無需解壓,中文維基百科的數據比較小,整個xml的壓縮文件大約才1G
2、安裝依賴庫
下載數據之后,網上提供了現成的程序對xml進行解壓,在網上找到了一個解析xml的py文件,命名為process_wiki.py。不過還需要對其進行修改,
將原有的output = open(outp, 'w'),修改為output = open(outp, 'w',encoding='utf-8')
否則會報下圖的錯誤:
錯誤提示
在放完整的代碼之前,我們需要安裝一些依賴庫,有numpy、scipy以及gensim,安裝gensim依賴于scipy,安裝scipy依賴于numpy。我們直接用pip安裝numpy,在windows命令行下使用命令:
pip install numpy
成功安裝numpy之后安裝scipy,仍然使用命令pip install scipy,此時卻發現報錯了,其實,一般都會報錯,正確的打開方式是去網站下載whl,再進行安裝,去如下的網址下載scipy包:
http://www.lfd.uci.edu/~gohlke/pythonlibs/
找到相應版本的:
scipy.png
下載好之后使用pip命令安裝即可:
pip install scipy-0.19.0-cp35-cp35m-win_amd64.whl
接下來使用命令 pip install gensim 即可。
3、將xml的wiki數據轉換為text格式
使用下面的代碼對數據進行處理,命名為process_wiki.py,這個代碼是python2和python3通用的:
#!/usr/bin/env python
# Author: Pan Yang (panyangnlp@gmail.com)
# Copyrigh 2017
from __future__ import print_function
import logging
import os.path
import six
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))
# check and process input arguments
if len(sys.argv) != 3:
print("Using: python process_wiki.py enwiki.xxx.xml.bz2 wiki.en.text")
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():
if six.PY3:
output.write(b' '.join(text).decode('utf-8') + '\n')
# ###another method###
# output.write(
# space.join(map(lambda x:x.decode("utf-8"), text)) + '\n')
else:
output.write(space.join(text) + "\n")
i = i + 1
if (i % 10000 == 0):
logger.info("Saved " + str(i) + " articles")
output.close()
logger.info("Finished Saved " + str(i) + " articles")
使用如下的命令執行代碼:
python process_wiki.py zhwiki-latest-pages-articles.xml.bz2 wiki.zh.text
不過發現報錯了:
報錯
這是因為我們的numpy版本不對,所以我們首先要使用pip卸載掉我們當前的numpy,然后去網站:http://www.lfd.uci.edu/~gohlke/pythonlibs/下載對應的numpy版本并安裝即可:
numpy.png
隨后使用剛才的命令執行,發現執行成功:
執行成功.png
好啦,今天的實驗就先做到這里,明天咱們繼續!