17

gensimイタリアのウィキペディア「http://dumps.wikimedia.org/itwiki/latest/itwiki-latest-pages-articles.xml.bz2」を使用して word2vec モデルをトレーニングしようとしています。

しかし、このコーパスに最適な前処理が何であるかはわかりません。

gensimモデルは、トークン化された文のリストを受け入れます。私の最初の試みは、の標準WikipediaCorpusプリプロセッサを使用することgensimです。これにより、各記事が抽出され、句読点が削除され、スペースで単語が分割されます。このツールを使用すると、各文がモデル全体に​​対応することになりますが、この事実がモデルに与える影響については確信が持てません。

この後、デフォルトのパラメーターを使用してモデルをトレーニングします。残念ながら、トレーニングの後、私は非常に意味のある類似性を得ることができなかったようです.

このタスクにウィキペディアのコーパスで最も適切な前処理は何ですか? (この質問が広すぎる場合は、関連するチュートリアル/記事を参照してください)

これは私の最初の試行のコードです:

from gensim.corpora import WikiCorpus
import logging
logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)
corpus = WikiCorpus('itwiki-latest-pages-articles.xml.bz2',dictionary=False)
max_sentence = -1

def generate_lines():
    for index, text in enumerate(corpus.get_texts()):
        if index < max_sentence or max_sentence==-1:
            yield text
        else:
            break

from gensim.models.word2vec import BrownCorpus, Word2Vec
model = Word2Vec() 
model.build_vocab(generate_lines()) #This strangely builds a vocab of "only" 747904 words which is << than those reported in the literature 10M words
model.train(generate_lines(),chunksize=500)
4

2 に答える 2

9

あなたのアプローチは問題ありません。

model.build_vocab(generate_lines()) #This strangely builds a vocab of "only" 747904 words which is << than those reported in the literature 10M words

これは、使用頻度の低い単語を削除したためである可能性があります (デフォルトは ですmin_count=5)。

.txt.gz計算を高速化するには、前処理された記事をプレーンファイルとして 1 行に 1 つの文 (ドキュメント)として "キャッシュ" し、単純にword2vec.LineSentenceコーパスを使用することを検討できます。これにより、反復ごとに bzip された wiki XML を解析する手間が省けます。

word2vec がイタリア語の wiki に対して「意味のある類似点」を生成しない理由はわかりません。英語のウィキは問題ないようです。こちらもご覧ください

于 2014-05-30T16:56:41.490 に答える
4

私はウィキペディアのコーパスをマッサージし、そこからベクトルを取得するプロジェクトに取り組んでいます。すぐにイタリア語のベクトルを生成するかもしれませんが、自分でやりたい場合は、 https ://github.com/idiio/wiki2vec をご覧ください。

于 2015-02-20T09:27:40.997 に答える