2
私はword2vec類似性辞書を構築しようとしています。私は1つの辞書を構築することができましたが、類似点は正しく配置されていません。私のコードで何かが欠けていますか?Word2Vecをスキップして正しく動作しない
入力サンプル・データ・テキスト
TAK PO LUN UNIT 3 15/F WAYSON COMMERCIAL G 28 CONNAUGHT RD WEST SHEUNG WAN
- EDDY SUSANTO YAHYA ROOM 1503-05 WESTERN CENTRE 40-50 DES VOEUX W. SHEUNG WAN
DNA FINANCIAL SYSTEMS INC UNIT 10 19F WAYSON COMMERCIAL 28 CONNAUGHT RD SHEUNG WAN
G/F 60 PO HING FONG SHEUNG WAN
10B CENTRAL MANSION 270 QUEENS RD CENTRAL SHEUNG WAN
AKAMAI INTERNATIONAL BV C/O IADVANTAGE 28/F OF MEGA I-ADVANTAGE 399 CHAI WAN RD CHAI WAN HONG KO HONG KONG
VICTORIA CHAN F/5E 1-3 FLEMING RD WANCHI WAN CHAI
HISTREND 365 5/F FOO TAK BUILDING 365 HENNESSY RD WAN CHAI H WAN CHAI
ROOM 1201 12F CHINACHEM JOHNSO PLAZA 178 186 JOHNSTON RD WAN CHAI
LUEN WO BUILDING 339 HENNESSY RD 9 FLOOR WAN CHAI HONG KONG
マイコード:
model.most_similar("wan")
[('want', 0.6867533922195435),
('puiwan', 0.6323356032371521),
('wan.', 0.6132887005805969),
('wanstreet', 0.5945449471473694),
('aupuiwan', 0.594132661819458),
('futan', 0.5883135199546814),
('fotan', 0.5817855000495911),
('shanmei', 0.5807071924209595),
('30-33', 0.5789132118225098),
('61-63au', 0.5711270570755005)]
ここに私の期待している:私の結果は
import gensim
from gensim import corpora,similarities,models
class AccCorpus(object):
def __init__(self):
self.path = ''
def __iter__(self):
for sentence in data["Adj_Addr"]:
yield [word.lower() for word in sentence.split()]
def build_corpus():
model = gensim.models.word2vec.Word2Vec(alpha=0.05, min_alpha=0.05,window=2,sg=1)
sentences = AccCorpus()
model.build_vocab(sentences)
for epoch in range(1):
model.train(sentences,total_examples=model.corpus_count, epochs=model.iter)
model.alpha -= 0.002 # decrease the learning rate
model.min_alpha = model.alpha # fix the learning rate, no decay
model_name = "word2vec_model"
model.save(model_name)
return model
model=build_corpus()
類似性のためのed出力:sheungwan、wanchai、chaiwan。私はスキップグラムが正しく動作していないと推測しています。これをどうすれば解決できますか?
デフォルトから 'alpha'や' min_alpha'を変更しないでください。 'train()'を複数回呼び出さないでください。 'alpha 'を自分で管理しようとしないでください。あなたが合理的な方法でワードトークンに前処理されたたくさんの良いデータを持っていることを確認してください。ロギングを有効にして、すべてのステップが進捗状況を示す合理的な出力を生成していることを確認します。いくつかの同様のデータセットの実際の例から始めて、ベースラインの結果を改善するのに役立っている場合は、(windowなどの)パラメータを変更するだけです。 – gojomo
@gojomo、sgパラメータで何かしていますか –