目錄
方法1---自己使用opencc庫手動了1個轉換程序,pip install opencc進行安裝
方法2---網上有一個exe應用程序進行轉換,詳情見:https://bintray.com/package/files/byvoid/opencc/OpenCC
一、數據獲取
使用的語料庫是wiki百科的中文語料庫
下載地址:https://dumps.wikimedia.org/zhwiki/latest/zhwiki-latest-pages-articles.xml.bz2
上述地址下載較慢,我分享一個我已經下載好的文件(截止2019年7月11日)
下載地址:https://pan.baidu.com/s/1SAXNFcr4hQSZvcMi914_kQ , 提取碼:kt20
二、將xml格式數據轉爲txt
使用了gensim庫中的維基百科處理類WikiCorpus,該類中的get_texts方法原文件中的文章轉化爲一個數組,其中每一個元素對應着原文件中的一篇文章。然後通過for循環便可以將其中的每一篇文章讀出,然後進行保存。
當時的轉換過程,大概需要了30分鐘吧!
三、繁體轉爲簡體
由於維基內有些內容是繁體內容,需要進行繁體--簡體轉換。
方法1---自己使用opencc庫手動了1個轉換程序,pip install opencc進行安裝
但是運行到130000+文章左右時出現了錯誤:(其實程序是對的,由於txt文件存在格式問題,後面詳解!)
UnicodeDecodeError: 'utf-8' codec can't decode bytes in position 6598-6599: invalid continuation byte
但是我的所有文本操作都是“encoding="utf8",還是出現上述問題。
方法2---網上有一個exe應用程序進行轉換,詳情見:https://bintray.com/package/files/byvoid/opencc/OpenCC
進入解壓後的opencc的目錄(opencc-1.0.1-win32),雙擊opencc.exe文件。在當前目錄打開dos窗口(Shift+鼠標右鍵->在此處打開命令窗口),輸入如下命令行:
opencc -i wiki.zh.txt -o wiki.zh.simp.txt -c t2s.json
(wiki.zh.txt簡繁混合文本,wiki.zh.simp.txt轉換後的純簡體文本,t2s爲繁體轉簡體,s2t爲簡體轉繁體)
記事本無法打開這麼大的txt文件,所以用notepad++打開,或者寫幾行代碼打開:
四、分詞
對於中文來說,分詞是必須要經過的一步處理,下面就需要進行分詞操作。在這裏使用了大名鼎鼎的jieba庫。調用其中的cut方法即可。順便使用停用詞進行了去除停用詞!拿到了分詞後的文件,在一般的NLP處理中,會需要去停用詞。由於word2vec的算法依賴於上下文,而上下文有可能就是停詞。因此對於word2vec,我們可以不用去停詞。所以需要依據自己的需求,確定是否進行停用詞!
但是運行到130000+文章左右時出現了錯誤:
UnicodeDecodeError: 'utf-8' codec can't decode bytes in position 6598-6599: invalid continuation byte
但是我的所有文本操作都是“encoding="utf8",還是出現上述問題!!!好啦,現在就揭曉出錯的原因是什麼?
由於程序在寫入txt文件的時候,存在類似於火星文的符號存在,所以這些符號會導致以'utf-8' 讀取文件出現錯誤!
解決方法:
試了網上n種方法,都不可以,所以勞動人民最偉大!用notepad++打開“wiki.zh.txt”(wiki的txt文件),全選進行復制(或許會有點卡,做好準備!),新建一個txt文本(名字隨意!),另存爲的時候注意按照下圖的方式進行存儲!然後就是上面手動的繁簡轉換程序就可以正常運行了(也可以使用exe應用程序進行!),然後jieba分詞就可以完美運行,但是有點心理準備,這個結巴分詞的過程非常的緩慢!
分詞的結果如下(貌似我的停用詞好像不是很好!後續繼續改進吧!)
五、Word2Vec模型訓練
分好詞的文檔即可進行word2vec詞向量模型的訓練了,文檔較大,訓練了應該有1個小時左右!
代碼運行完成後得到如下四個文件,其中wiki.zh.text.model是建好的模型,wiki.zh.text.vector是詞向量。
六、Word2Vec模型檢測
模型訓練好後,來測試模型的結果。
上述使用了gensim庫,gensim是一個python的自然語言處理庫,能夠將文檔根據TF-IDF, LDA, LSI 等模型轉化成向量模式,以便進行進一步的處理。此外,gensim還實現了word2vec功能,能夠將單詞轉化爲詞向量。
推薦介紹gensim的博客:
https://blog.csdn.net/u014595019/article/details/52218249#commentBox
https://blog.csdn.net/l7h9ja4/article/details/80220939#commentBox
這是對於word2vec方法以及模型訓練和檢驗的第一篇文章,其中關於文本2向量的有關知識進行了回顧,上面介紹gensim庫的博客也對相關背景知識在其博客內詳細說明了。
以上學習過程和代碼,感謝兩位博主:
liuwenqiang1202:https://github.com/liuwenqiang1202
AimeeLee77:https://github.com/AimeeLee77
代碼及相關資料:
鏈接:https://pan.baidu.com/s/1JEvadkEflY1FrltWImw3BA , 提取碼:u541