2017-06-28 2 views
1

私は単純な「ハック」を探して、次のアイデアを実装しています:特定の単語を人工的にすべての単語のコンテキストで表示したい監督された文章分類にはword2vecを使用します)。Word2vec:すべてのコンテキストに外部単語を追加します。

例がベストです:だから我々は(ターゲット、コンテキスト)の次PAISになるだろう"The dog is in the garden"、および1

の窓:

は私が文を持っていると言う

しかし、私はword2vecアルゴに送りたいことはこれです:

(dog, The), (dog, is), **(dog, W)**, (is, dog), (is, in), **(is, W)**, etc., 

私の単語Wがすべての単語の文脈にあったかのように。

ここで、Wは自分の選択した単語であり、既存の語彙ではありません。

Rまたはpythonでこれを行う簡単な方法はありますか?

+0

「Context Enrichment」と似たようなものがありますか? http://aclweb.org/anthology/R/R15/R15-1029.pdf – Mehdi

+0

ありがとうございます。ありがとうございました!基本的に私のアイデアは、彼らの「豊かな文脈」の特別なケースであるようです。 私は実際に自分の袖を巻いて自分でコード化しなければならないのだろうか... –

答えて

1

私はあなたが文章や各文のラベルのリストのリストを持っている想像:各文のためにあなたが持っている場合今

word_context = [("dog", "The"), ("dog", "is"), ("is", "dog"), ("is", "in") ...] 

sentences = [ 
    ["The", "dog", "is", "in", "the", "garden"], 
    ["The", "dog", "is", "not", "in", "the", "garden"], 
] 

は、その後、あなたは、ワードコンテキストのペアを作成ラベルを追加すると、すべての単語の文脈にラベルを追加できます。

labels = [ 
    "W1", 
    "W2", 
] 

word_labels = [ 
    (word, label) 
    for sent, label in zip(sentences, labels) 
    for word in sent 
] 

word_context += word_labels 

注文を保存しない限り単語 - 文脈のペア!

+0

これは実際には文章をスキップグラムアルゴリズムに与える前に文章と一緒にやりたい踏み台です。これらのタプルを入力として(生のセンテンスだけでなく)実装する可能性のある実装について認識していますか? –

+0

これはたとえば? http:// www。katrinerk.com/courses/introduction_to_computational_linguistics_spring_2012/ics12_schedule/python-code-creating-a-vector-space-representation – Mehdi

+0

私はあなたの質問を理解しました!申し訳ありませんが、コード化する必要があります。私があなたに送ったリンクはword2vecではありません。これらの単語のペアを作成する方法の例です。私はわかりません。多分、Gensimの単語のペアで練習する方法があります。 – Mehdi

1

Python gensimでDoc2Vecクラスとして実装されている 'Paragraph Vectors'アルゴリズムを見てみましょう。その中で、各テキストの例は、すべてのスキップグラムのようなもの(Paragraph VectorsのPV-DBOWと呼ばれる)またはCBOWのような(Paragraph VectorsのPV-DMと呼ばれる)トレーニングに寄与する、 -コンテキスト。

Facebookの「FastText」紙と図書館もご覧ください。これは本質的に2つの異なる方向のword2vecの拡張です:

最初に、将来の未知の単語がそのサブワードから粗推定ベクトルを得ることができるように、サブワードフラグメント(ベクトルnグラム)のベクトルを学習するオプションがあります。

第2に、ベクトルトレーニング中に近くの単語だけでなく、含まれているテキストの例(文)の既知の分類ラベルも予測することができます。その結果、学習された単語ベクトルは、その後の他の将来の文章のその後の分類のためにより良好であり得る。

+0

ありがとうございました! gensimの実装は、特に複数の段落に同じラベルを再利用できるのであれば、私が探しているものになると思います(可能かどうか分かりますか?)。私はFastTextを見ていきます。 –

+0

はい、ラベル(Doc2Vecトレーニング時に「タグ」と呼ばれます)を再利用するか、各テキストに一意のタグを付けることができます。次に分類子を訓練してそれらのタグベクトルからラベルへのマッピングを学習します。 – gojomo

関連する問題