キーワードをクラスタリングするために、文章は、最初に、本当に心を見つけていない、と後で使用するword2vecに学んだ定量化以下を達成するために、キーワードを定量化を達成するためにさせることができ、その後、k-meansクラスタリングを使用することは、まだそこにいません。
定量化するために1.組み合わせword2vecキーワード
リファレンス接続:https://blog.csdn.net/qq_28840013/article/details/89681499
この記事では、初期使用word2vecは、詳細にそれを説明する方法を説明することで、説明していません、
コード試してください。
gensim.models インポートword2vec インポートgensim #文取得 文章を= word2vec.Text8Corpus(「kjcg.txt 」) #の印刷(文章) #SG = 1であるスキップグラムアルゴリズムSG = 0がデフォルトのアルゴリズムCBOWで、低頻度語に敏感です #サイズは、ニューラルネットワークの層の数であり、メモリの値が遅すぎるアルゴリズムは、典型的には100〜200の値とし、消費しますあります。 #ウィンドウは、3が目標単語の前に3-Bワードを表す参照し、ターゲット単語と文で現在の単語との間の最大距離である単語が後ろB(ランダム0~3の間b)参照 #min_countワードが実行されます濾過し、周波数が少ない分カウント・ワードよりも無視されますされ、デフォルト値は5です。 #負のサンプルやトレーニング結果を微調整することができ、サンプルワードが高いランダムなしきい値を設定し、デフォルト値であるサンプリング周波数を表し3-1E、。 #の負:> 0の場合、設定のために、negativesamping使用しますどのように多くの単語ノイズ #HS = 1レベルのソフトマックスが使用される表し、デフォルト= 0、HSを使用して選択される陰性サンプル、ゼロと負ではありません。 #労働者は、スレッドの数は、あなたはシングルコアを使用することができ、このパラメータはCPythonのは、インストール後にのみ有効です モデル = gensim.models.Word2Vec(文章、SG = 0、サイズ= 30、10 =ウィンドウ、min_count = 2、負の3 =、= 0.001試料からHS = 1、労働= 4。。 ) #1 印刷(model.wv.vocab) #1 ワード= model.wv.vocab #サイズ= model.wv.vectors #I 0 = #を言葉で単語の: # # 印刷(I) # 印刷(ワード) #の 印刷(サイズ[I]) #1 、I + = 1つの #は、モデル作成 model.save(" kjcg_test1.txt ") #1 、モデルの.pyファイルが同じレベルのディレクトリに保存されモデルが開いて文字化けしている #model.wv.save_word2vec_format(「kjcg_test2.txt」、バイナリ= 「トゥーレ」)#をこの方法で保存されたモデルは、テキスト形式を開くことができます、だけでなく、バイナリセットを介してバイナリファイルを保存するかどうか。しかし、モデルが破棄されたときに保存ツリー(詳細は類似したハフマン木の保全・ワードを形成するword2vecビルドプロセスに参加)の保存、モデルが追加のトレーニング従うことができないので、 #1 .sava保存されたモデルの負荷を: = gensim.models.Word2Vec.loadモデル(" kjcg_test1.txt " ) #..wv.save_word2vec_format保存されたモデルのは、ロードされた: #1 モデル= model.wv.load_word2vec_format( 'kjcg_test1.txt') #のモデル追加のトレーニングを(ありません)理解 #model.train(more_sentences) 印刷を model.most_similar((「研究」)、上位N = 10) #は単語最も類似単語を計算し、上位Nは、上位n単語指定 #は二つの単語の類似度を計算します: 印刷(model.similarity(「研究」、「農業」)) #私はかなり理解していないが、これによりGET単語ベクトルは()、あなたは操作およびその他の関連する単語を追加し、減算することができますことを意味しません: 印刷(「研究:」、モデル[ 「研究」 ])
ここで行う、すべての単語がベクトル化し、モデルに格納されている、次のステップは、単語ベクトルの分類を使用することです。
2. K-手段を使用して分類しました
https://zhuanlan.zhihu.com/p/29500866
この記事では、セグメンテーション、ベクトル化、クラスタリングを説明し、効果が表示されます(ただし、私は実行することはできません)
これら二つの記事の組み合わせは、以下のコードを達成するために:
gensim.models インポートword2vec から sklearn.cluster インポート関数kmeans インポートgensim インポートnumpyの #文得る 文= word2vec.Text8Corpus(「kjcg.txt 」) #1 印刷(文章) #SG = 1は、スキップグラムアルゴリズムは、低頻度語に対して敏感ですデフォルトアルゴリズムCBOW SG = 0と #1 サイズニューラルネットワーク層、値は、典型的には100〜200を値とする、遅すぎるアルゴリズムとメモリ消費であろう。 #ウィンドウは、3が目標単語の前に3-Bワードを表す参照し、ターゲット単語と文で現在の単語との間の最大距離である単語が後ろB(ランダム0~3の間b)参照 #min_countワードが実行されます濾過し、周波数が少ない分カウント・ワードよりも無視されますされ、デフォルト値は5です。 #負のサンプルやトレーニング結果を微調整することができ、サンプルの単語は、サンプリング周波数が高いほど、ランダムなしきい値を設定し、デフォルト値で表します。3-1E、 #陰性:場合> 0、設定するため、negativesampingノイズワードの数を使用します 。#。HS =ソフトマックス1は、階層が使用される表し、デフォルト= 0は陰性サンプルの、ゼロおよび負でないHSを使用して選択されるであろう。 #労働者は、このパラメータはCPythonのは、それがシングルコア使用できるインストールした後でのみ有効であり、スレッドの数である モデル= gensim.models.Word2Vec(文章、SG = 0、サイズ= 100、ウィンドウ= 5、min_count = 2、労働者= 4 ) #モデル作成 model.save(「kjcg_test1.txt 」) #のモデルが同じディレクトリの.pyファイルに保存されますが、モデルが開いて文字化けしている #.sava保存されたモデルのはロード: モデル= gensim.modelsを.Word2Vec.load(" kjcg_test1.txt " ) #GETすべてのキーワードのモデル内部 鍵= model.wv.vocab.keys() #の印刷(キー) #1 (タイプ(キー)の)印刷 #印刷(一覧(キー)[0]) #単語のためのGET単語ベクトル wordvector = [] のためのキーでキー: wordvector.append(モデル[キー]) #の印刷(wordvector) #分類 classCount = 10 #カテゴリの数 CLF関数kmeans =(n_clusters = classCount) S = clf.fit(wordvector) #の印刷(S) #すべての単語ベクトルのカテゴリ得る ラベルを = clf.labels_ 印刷(' カテゴリ:' 、ラベル) #の印刷(タイプ(ラベル)) #辞書の種類に配置する classCollects ={} のための I における範囲(LEN(キー)): #1 プリント( 'lenは(キー):'、lenは(キー))#长度 #1 プリント( 'classCollects的キー:'、classCollects.keys()) #のプリント( '標識[i]が'、ラベル[I]) #1 プリント(キー) #1 プリント( 'dict_keys:'、リスト(キー)[0])#将dict_keys转换为リスト、输出第一个元素 #プリント(型( classCollects.keys())) #のプリント(型(classCollects)) #のプリント(I) #1 プリント(classCollects.keys()) プリント(リスト(classCollects.keys())) であれば、ラベル[I] においてリスト(classCollects。キー()): 印刷(" -----------------' ) classCollects [ラベル[I]アペンド(リスト(鍵)[I])。 他: classCollects = {0:[]、1:[]、2:[]、3:[]、4:[]、 5:[]、6:[]、7:[]、8:[]、9 :[]} 印刷(' 0类:' 、classCollects [0]) 、印刷(' 1类:'、classCollects [1 ] ) プリント(' 2类:'、classCollects [2 ]) 、印刷(' 3类:'、classCollects [3 ]) 、印刷(' 4类:'、classCollects [4 ]) 印刷(' 5つのカテゴリー:'、classCollects [5 ]) を印刷(' 6つのカテゴリ:'、classCollects [6 ]) を印刷(' 7つのカテゴリ:'、classCollects [7 ]) プリント(' 8つのカテゴリ:' [8、classCollects ] ) を印刷(' 9つのカテゴリ:'、classCollects [9])