7

私は現在、ニューラルネットワークベースの短いドキュメント分類のアプローチに取り組んでいます。私が使用しているコーパスは通常約10語であるため、標準的な統計ドキュメント分類方法の使用は限られています。この事実のために、私はトレーニングで提供された一致に対して何らかの形の自動同義語検出を実装しようとしています。私の質問は、より具体的には、次のように状況を解決することについてです。

「InvolvedFood」の分類と「InvolveingSpheres」の1つ、および次のようなデータセットがあるとします。

"Eating Apples"(Food);"Eating Marbles"(Spheres); "Eating Oranges"(Food, Spheres);
"Throwing Baseballs(Spheres)";"Throwing Apples(Food)";"Throwing Balls(Spheres)";
"Spinning Apples"(Food);"Spinning Baseballs";

私は次のリンケージに向かって動くインクリメンタルな方法を探しています:

Eating --> Food
Apples --> Food
Marbles --> Spheres
Oranges --> Food, Spheres
Throwing --> Spheres
Baseballs --> Spheres
Balls --> Spheres
Spinning --> Neutral
Involving --> Neutral

この特定のケースでは、これらは少し疑わしい一致である可能性があることを私は理解していますが、それは私が抱えている問題を示しています。私の一般的な考えは、カテゴリ内の単語の反対側に表示される単語をインクリメントした場合、偶然にすべてを「関与する」という単語にリンクすることになり、次に表示される単語を単純にデクリメントすることになると思いました。複数の同義語、または非同義語と組み合わせて使用​​しますが、「食べる」と「食べ物」の間のリンクが失われます。上記の方向に私を動かすアルゴリズムをどのようにまとめるかについて、誰かが何か手がかりを持っていますか?

4

4 に答える 4

15

これを行うように私に説明された、監視されていないブートストラップアプローチがあります。

このアプローチとバリエーションを適用するさまざまな方法がありますが、ここに簡略化されたバージョンがあります。

コンセプト:

2つの単語が同義語である場合、コーパスではそれらが同様の設定で表示されると想定することから始めます。(ぶどうを食べる、サンドイッチを食べるなど)

(このバリアントでは、設定として共起を使用します)。

ブートストラップアルゴリズム:

2つのリストがあります。

  • 1つのリストには、食品と共起する単語が含まれます
  • 1つのリストには、食品である単語が含まれます

監視された部分

リストの1つをシードすることから始めます。たとえば、食品リストにAppleという単語を書く場合があります。

次に、コンピューターに引き継がせます。

監視されていない部品

まず、Appleの直前に表示されるコーパス内のすべての単語を検索し、出現頻度の高い順に並べ替えます。

上位2つ(または必要な数)を取得して、食品リストとの同時発生に追加します。たとえば、おそらく「食べる」と「おいしい」が上位2つです。

次に、そのリストを使用して、リスト内の各単語の右側に表示される単語をランク付けして、次の2つの上位の食品単語を見つけます。

結果に満足するまで、このプロセスを続けて各リストを展開します。

それが終わったら

(明らかに間違っているものをリストから手動で削除する必要があるかもしれません。)

バリアント

この手順は、キーワードの文法設定を考慮に入れると非常に効果的になります。

Subj ate NounPhrase
NounPhrase are/is Moldy

The workers harvested the Apples. 
   subj       verb     Apples 

That might imply harvested is an important verb for distinguishing foods.

Then look for other occurrences of subj harvested nounPhrase

このプロセスを拡張して、各ステップで単一のカテゴリではなく、単語をカテゴリに移動できます。

私の情報源

このアプローチは、数年前にユタ大学で開発されたシステムで使用され、ニュース記事を見るだけで、武器の単語、犠牲者の単語、場所の単語の適切なリストを作成することに成功しました。

興味深いアプローチであり、良い結果が得られました。

ニューラルネットワークのアプローチではなく、興味深い方法論です。

編集:

ユタ大学のシステムはAutoSlog-TSと呼ばれ、プレゼンテーションの終わりに向けて、このシステムに関する短いスライドをここで見ることができます。そしてそれについての論文へのリンクはここにあります

于 2012-07-14T05:42:07.247 に答える
1

教師なしLDAを試すことができます。LDAの監視ありバージョンがありますが、名前を思い出せません。スタンフォードパーサーには、いろいろと試すことができるアルゴリズムがあります。私はそれがあなたが探しているNNアプローチではないことを理解しています。ただし、情報をグループ化するだけの場合、特に「トピック」を探している場合は、LDAが適切と思われます。

于 2012-07-06T22:10:22.543 に答える
1

ここのコード(http://ronan.collobert.com/senna/)は、NLPタスクでさまざまな処理を実行するニューラルネットワークを実装しています。このページは、畳み込みニューラルネットをNLPタスクに適用するこれまでで最も成功したアプローチの1つを説明する論文にもリンクしています。

センテンスを分類するために提供するトレーニング済みネットワークを使用するようにコードを変更することは可能ですが、これには期待以上の作業が必要になる可能性があり、ニューラルネットワークを正しくトレーニングするのは難しい場合があります。

生物学的配列を分類するために同様の手法を使用して多くの成功を収めましたが、英語の文とは対照的に、私の配列には、50〜100kではなく位置ごとに20の可能な記号しかありませんでした。

あなたに役立つかもしれない彼らのネットワークの1つの興味深い特徴は彼らの単語の埋め込みです。単語の埋め込みは、個々の単語(それぞれ長さ100kのインジケーターベクトルと見なすことができます)を長さ50の実数値ベクトルにマップします。埋め込まれたベクトル間のユークリッド距離は、単語間の意味距離を反映する必要があるため、同義語の検出に役立ちます。

より簡単なアプローチとして、WordNet(http://wordnet.princeton.edu/)は同義語のリストを提供していますが、私はこれを自分で使用したことはありません。

于 2012-07-10T21:09:17.463 に答える
0

あなたの質問を誤解しているかどうかはわかりません。入力データのみに基づいてシステムが推論できるようにする必要がありますか、それとも外部辞書を参照することは許容されますか?

許容できる場合は、英語の単語関係のデータベースであるhttp://wordnet.princeton.edu/を参照することをお勧めします。(他のいくつかの言語にも存在します。)これらの関係には、同義語、反意語、類義語(同義語ではなく、実際に探しているように見えるもの)、下位語などが含まれます。

上位概念/下位概念の関係は、より一般的な用語をより具体的な用語にリンクします。「バナナ」と「オレンジ」という言葉は、「フルーツ」の下位語です。それは両方の上位語です。http://en.wikipedia.org/wiki/Hyponymyもちろん、「オレンジ」はあいまいであり、「色」の下位語でもあります。

あなたは方法を求めましたが、私はあなたにデータを指摘することしかできません。これが有用であることが判明したとしても、特定のアプリケーションで使用するには、明らかにかなりの作業が必要になります。一つには、適切な抽象化レベルに到達したことをどのようにして知ることができますか?入力が大幅に正規化されていない限り、一般的な用語と特定の用語が混在することになります。「柑橘類」、「果物」、「植物」、「アニメーション」、「コンクリート」、「名詞」のどれに立ち寄りますか?(申し訳ありませんが、この特定の階層を構成したばかりです。)それでも、これが役立つことを願っています。

于 2012-07-14T08:03:44.247 に答える