Word2Vecのより良い入力は何ですか?


22

これは、一般的なNLPの質問に似ています。Word2Vecを埋め込む単語をトレーニングするための適切な入力は何ですか?記事に属するすべての文は、コーパス内の別個の文書である必要がありますか?または、各記事はコーパス内のドキュメントである必要がありますか?これは、Pythonとgensimを使用した単なる例です。

文で分割されたコーパス:

SentenceCorpus = [["first", "sentence", "of", "the", "first", "article."],
                  ["second", "sentence", "of", "the", "first", "article."],
                  ["first", "sentence", "of", "the", "second", "article."],
                  ["second", "sentence", "of", "the", "second", "article."]]

コーパスを記事ごとに分割:

ArticleCorpus = [["first", "sentence", "of", "the", "first", "article.",
                  "second", "sentence", "of", "the", "first", "article."],
                 ["first", "sentence", "of", "the", "second", "article.",
                  "second", "sentence", "of", "the", "second", "article."]]

PythonでのWord2Vecのトレーニング:

from gensim.models import Word2Vec

wikiWord2Vec = Word2Vec(ArticleCorpus)

回答:


14

この質問への答えは、それが依存するということです。主なアプローチは、トークン化された文を渡すことです(そのためSentenceCorpus、例では)が、目標が何であり、コーパスが何を見ているかに応じて、代わりに記事全体を使用して埋め込みを学習することができます。これは事前に知らないかもしれないことです-埋め込みの品質をどのように評価したいかを考え、いくつかの実験を行ってどの種類の埋め込みがタスクに役立つかを確認する必要があります( s)。


その場で。モデルに埋め込みを使用しましたが、あなたが言ったように、記事全体を使用するとモデルの予測パフォーマンスが大幅に向上しました。そのため、どのような場合でも文ごとのトレーニングが優れています。
wacax

1
同様のベクトルを持つ単語が互いにどのように関係しているかを見て、見るべきです。コンテキストウィンドウのサイズとコンテキストの種類については、小さなウィンドウ(およびおそらく文章のような小さなドキュメントサイズ)が、局所的に類似するのではなく、機能的に類似する単語(米国の州など)を作成することを示唆するいくつかの作業が行われました(米国の州や政府関連の言葉のように)より類似したベクトルを持っています。私は主に2014年のOmer LevyとYoav GoldbergのDependency-Based Word Embeddingsを引用しています。
-NBartley

1

@NBartleyの回答の補足として。誰にでもこの質問に出くわします。Spark2.2のword2vecの入力として記事/文章を使用しようとしましたが、結果は次のとおりです。

入力としてを使用:

ここに画像の説明を入力してください

入力として記事を使用します。

ここに画像の説明を入力してください


0

前者の場合、gensimにはWord2Vecクラスがあります。後者の場合、Doc2Vec。

http://rare-technologies.com/doc2vec-tutorial/


3
doc2vecは、文章ではなく記事のコーパスに対してword2vecを実行することとは大きく異なります。doc2vecは、単なる単語ではなく、記事自体の表現を学習します。
jamesmf
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.