Word2Vec and Text Classifier

Word2Vec

  1. Skip-gram
通過目標詞彙來預測上下文。
如:
我 是 一名 合格 的 共產黨員。
窗口設置爲2,生成對(Pair[input, label])爲:
(是, 我), (一名, 我), | (我, 是), (一名, 是), (合格, 是), | (我, 一名), ...
  1. CBOW (Continuous bag of words)
上下文預測目標詞彙
  1. 使用工具
pip install word2vec
import word2vec
word2vec.word2vec('large_pre.dat', 'wordsVec.bin', size=300, verbose=True)
數據格式要求: 空格間隔每個詞。
中文分詞工具: jieba (pip)

評價詞向量

model = word2vec.load("wordsVec.bin")
# 全部的單詞
model.vocab
# 第幾個單詞
model.vocab[index]

# 詞向量矩陣
model.vectors

# 獲取最近的10(默認)個
indexs = model.cosine("西瓜")
vocabs = [model.vocab[index] for index in indexs]
  1. 其他工具
gensim
fasttext
glove
...
  1. 數據來源和預處理
--- 搜狗實驗室全網新聞數據
http://www.sogou.com/labs/resource/list_news.php
--- 編碼轉變和content抽取
由於默認爲gbk編碼,需要轉換成Linux上的utf-8
cat data | iconv -f gbk -t utf-8 -c | grep </content> > utf8data

FastText — 文本分類

簡介

可以訓練詞向量,可以進行有監督的文本分類,在訓練過程中會自動訓練詞向量,也可以導入預訓練的詞向量,訓練速度極快。
https://github.com/facebookresearch/fastText/archive/v0.1.0.zip
  1. 入門
pip install fasttext    # 不支持預處理詞向量
github下載安裝編譯,通過CLI運行
數據通過空格分割,結尾是__label___(Yes) # Yes是標籤名,前綴可自定義
  1. python
import logging
import fasttext
logging.basicConfig(format="%(asctime)s : %(levelname)s : %(message)s", level=logging.INFO)

classifier = fasttext.supervised("./yes_no_wellformat_train.stat", "./yes_no_classified.model", label_prefix="__label__", dim=300, epoch=2, word_ngrams=1, ws=10  )

result = classifier.test("./yes_no_wellformat_dev.stat")
print(result.precision)
print(result.recall)    # 召回率
print(result.nexamples)
print(classifier.predict_proba(['對於 散 在 的 比較 小 的 宮頸 腺 囊腫 一般 不需 治療 , 只要 每年 檢查 即可 ; 對於 密集 的 較 小 的 納氏囊腫 或 比較 大 的 囊腫 , 可 考慮 光療 、 激光 、 微波 、 自凝 刀 等 物>理治療 ; 對於 較 大 的 突出 於 宮頸 表面 的 , 可 考慮 電刀 切除 治療 。']))   # 需要空格分開
  1. CLI
./fasttext supervised -input yes_no_wellformat_train.stat -output model -dim 300 -pretrainedVectors vocab_emb.dict -epoch 2 -loss ns
  1. 效果

    • epoch 不宜太大
    • 預處理詞向量意義不大,具體應該和規模有關
    • dim大一些有好處
  2. Tips

    • 預處理的詞向量格式
單詞數 維度
單詞 數字(用空格分割)
可以通過減少精度來降低詞向量佔用的磁盤空間
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章