NLP之自己動手訓練中文word2vec模型
訓練語料
word2vec的演算法是公開的,word2vec模型的質量完全取決於訓練語料的質量。目前免費開放的預料不多,中文語料更是鳳毛麟角。
這裡推薦使用搜狗實驗室的中文語料,對應的網址為:
通常使用"搜狐新聞數據"即可,該數據來自搜狐新聞2012年6月—7月期間國內,國際,體育,社會,娛樂等18個頻道的新聞數據,提供URL和正文信息。
數據格式
注意:content欄位去除了HTML標籤,保存的是新聞正文文本
數據文件
搜狐新聞數據區根據文件格式和數據規模細分為以下幾種:
迷你版(樣例數據, 110KB):tar.gz格式,zip格式
完整版(648MB):tar.gz格式,zip格式
歷史版本:2008版(6KB):完整版(同時提供硬碟拷貝,65GB):tar.gz格式
數據預處理
提取中文內容
原始數據中包含完整的html文件,所以需要提取其中的中文內容,通常提取其中 標籤包含的內容即可。
其中iconv命令的格式為:
參數含義為:
-f encoding :把字元從encoding編碼開始轉換。
-t encoding :把字元轉換到encoding編碼。
-l :列出已知的編碼字符集合
-o file :指定輸出文件
-c :忽略輸出的非法字元
-s :禁止警告信息,但不是錯誤信息
--verbose :顯示進度信息
-f和-t所能指定的合法字元在-l選項的命令裡面都列出來了
中文切詞
與處理英文不同,中文沒有切詞,需要使用jieba進行切詞處理。
訓練word2vec
完成預處理後,級可以利用gensim庫進行訓練。
sentences表示需要處理的語料
size表示word2vec的維數,一般50-300
window表示處理word時的窗口長度
min_count表示處理分析的word出現的最小次數
sg為1表示使用skip-gram演算法,為0為cbow
workers表示計算使用的線程數
iter表示迭代計算的次數
使用word2vec處理中文
把一個中文句子使用詞向量表示的方法。對於類似簡訊、微博、標題這些長度較短的文字,可以使用各個word的word2vec相加取平均來表示。對訓練數據集創建詞向量,接著進行比例縮放(scale)。
當需要把中文數據集X轉換成word2vec,可以使用如下方式。
測試效果
下面我們測試生成的word2vec模型的質量。
尋找近義詞
尋找近義詞是word2vec的一個應用場景。
百度的近義詞
微信的近義詞
單詞運算
word2vec的一個神奇之處就是把文字轉換成了數字,數字之間的加減運算,同樣適用於word2vec。
足球+明星
球星-明星
比較單詞的相似度
比較微信和陌陌
比較男人和壞人
NLP系列文章
機器學習入門
主要以機器學習常見演算法為主線,利用生活中的例子和具體安全場景來介紹機器學習常見演算法,是機器學習入門書籍,便於讀者可以快速上手。
深度學習實戰
本書將重點介紹深度學習,並以具體的11個案例介紹機器學習的應用,定位是面向具有一定機器學習基礎或者致力於使用機器學習解決工作中問題的讀者。
強化學習與GAN
重點介紹強化學習和生成對抗網路的基礎知識和實際應用,從AI攻防的基礎知識,到智能工具的打造,全面介紹如何使用AI做建設的方法。


※一個土鱉安全工程師的奮鬥史(下)
※NLP之詞袋模型和TF-IDF模型
TAG:兜哥帶你學安全 |