自分の語彙を使ってword 2 vecモデルを訓練する
3635 ワード
一、環境と語彙を準備する:ニュース20 w+編(フォーマット: 【ニュースは自分で各ニュースサイトから入手したり、オープンソースのニュースデータセットをダウンロードしたりすることができます.インターネットコーパス(SogouT) 中国語テキスト分類データセットTHUCNews 李栄陸英語テキスト分類語料 譚松波中国語テキスト分類語料 等 結巴分詞 word2vec
二、分詞
まずニューステキストを分詞し、後の使用に備えて、結巴分詞ツールを使用し、分詞後のテキストを
jiebaキットのインストール:pip install jieba
三、word 2 vecモデルを訓練する
pythonのgensimパッケージを使用してトレーニングを行います.
インストールgemsimパッケージ:pip install gemsimパラメータ説明 sentences:大語彙セットの場合は、BrownCorpus、Text 8 CorpusまたはineSentenceを使用して構築することを推奨します. sg:トレーニングアルゴリズムを設定するために使用され、デフォルトは0であり、CBOWアルゴリズムに対応する;sg=1はskip-gramアルゴリズムを採用する. size:フィーチャーベクトルの次元を指し、デフォルトは100です.大きなsizeはより多くのトレーニングデータが必要ですが、より効果的です.推奨値は数十~数百です. window:現在の語と予測語の1つの文の中の最大距離を表す alpha:学習速度 seed:乱数発生器に使用されます.初期化語ベクトルに関係します. min_count:辞書をカットできます.min_countより少ない頻度の単語は破棄されます.デフォルト値は5 です. max_vocab_size:ワードベクトル構築中のRAM制限を設定します.すべての独立した単語の個数がこれを超えると、その中で最も頻繁ではないものが消去されます.1千万個あたり約1 GBのRAMが必要です.Noneに設定すると制限はありません. sample:高周波語彙のランダムダウンサンプリングの構成閾値、デフォルトは1 e-3、範囲は(0,1 e-5) workersパラメータ制御トレーニングの並列数. hs:1の場合はhierarchica・softmaxテクニックが使用されます.0(defau・t)に設定するとnegative samplingが使用されます. negative:0未満の場合、noise words を複数設定するためにnegativesamp・ingが使用されます. cbow_mean:0の場合は文脈語ベクトルの和、1(defau・t)の場合は平均値をとる.CBOWを使用する場合のみ有効. hashfxn:hash関数を使用して重みを初期化します.デフォルトではpythonのhash関数 が使用されます. iter:反復回数、デフォルトは5 trim_rule:用語集の整理規則を設定し、それらの単語を残すか、削除するかを指定します.None(min_countが使用される)またはRU・E_DISCARD、uti・s.RU・E_KEEPまたはuti・s.RU・E_DEFAU・Tの に設定できます. sorted_vocab:1(defau・t)の場合、word indexを割り当てるときに単語を周波数降順にソートします. batch_words:スレッドに渡される単語の数は、デフォルトでは10000 です.
四、word 2 vec応用
.
)二、分詞
まずニューステキストを分詞し、後の使用に備えて、結巴分詞ツールを使用し、分詞後のテキストを
seg201708.txt
に保存します.jiebaキットのインストール:pip install jieba
# -*- coding: utf-8 -*-
import jieba
import io
#
jieba.load_userdict("financialWords.txt")
def main():
with io.open('news201708.txt','r',encoding='utf-8') as content:
for line in content:
seg_list = jieba.cut(line)
# print '/'.join(seg_list)
with io.open('seg201708.txt', 'a', encoding='utf-8') as output:
output.write(' '.join(seg_list))
if __name__ == '__main__':
main()
三、word 2 vecモデルを訓練する
pythonのgensimパッケージを使用してトレーニングを行います.
インストールgemsimパッケージ:pip install gemsim
from gensim.models import word2vec
def main():
num_features = 300 # Word vector dimensionality
min_word_count = 10 # Minimum word count
num_workers = 16 # Number of threads to run in parallel
context = 10 # Context window size
downsampling = 1e-3 # Downsample setting for frequent words
sentences = word2vec.Text8Corpus("seg201708.txt")
model = word2vec.Word2Vec(sentences, workers=num_workers, \
size=num_features, min_count = min_word_count, \
window = context, sg = 1, sample = downsampling)
model.init_sims(replace=True)
# ,
model.save("model201708")
#
# model = gensim.models.Word2Vec.load('/tmp/mymodel')
# model.train(more_sentences)
if __name__ == "__main__":
main()
四、word 2 vec応用
model = Word2Vec.load('model201708') #
model.most_similar(positive=['woman', 'king'], negative=['man']) #
model.doesnt_match("breakfast cereal dinner lunch".split()) #
model.similarity('woman', 'man') #
model['computer'] #