簡単に言えば、「いいえ、リモートでもうまく機能する原則的な方法でそれを行うことは不可能です」です。これは自然言語処理の研究における未解決の問題であり、たまたま私の博士研究の主題でもあります。現在の状況を簡単に要約し、いくつかの出版物を紹介します。
言葉の意味
ここで最も重要な前提は、各単語を表すベクトルを取得できるということです。問題の文で。このベクトルは通常、単語が出現するコンテキストをキャプチャするために選択されます。たとえば、「食べる」、「赤」、「ふわふわ」の 3 つのコンテキストのみを考慮する場合、「猫」という単語は [98, 1 、87]、非常に長いテキスト (今日の標準では数十億語は珍しくありません) を読む場合、「猫」という単語は「ふわふわ」と「食べる」の文脈で非常に頻繁に現れるためです。 、しかし「赤」の文脈ではそれほど頻繁ではありません。同様に、「犬」は [87,2,34] と表され、「傘」は [1,13,0] と表されます。これらのベクトルを 3 次元空間の点としてイメージすると、「猫」は明らかに「傘」よりも「犬」に近いため、「猫」になります。
この一連の作業は 90 年代初頭から調査されており ( Greffenstette によるこの作業など)、驚くほど良い結果が得られています。たとえば、コンピューターでウィキペディアを読み取って最近作成したシソーラスのいくつかのランダムなエントリを次に示します。
theory -> analysis, concept, approach, idea, method
voice -> vocal, tone, sound, melody, singing
james -> william, john, thomas, robert, george, charles
これらの類似した単語のリストは、人間の介入なしで完全に取得されました。テキストをフィードして、数時間後に戻ってきます。
フレーズの問題
「ジンジャー キツネはフルーツが大好き」などの長いフレーズに対して、なぜ同じことをしないのかと疑問に思われるかもしれません。それはテキストが足りないからです。X が何に似ているかを確実に確立するためには、コンテキストで X が使用されている多くの例を確認する必要があります。X が「声」のような 1 つの単語の場合、これはそれほど難しくありません。ただし、X が長くなるにつれて、X の自然発生を見つける可能性は指数関数的に遅くなります。比較のために、Google には「fox」という単語を含む約 10 億ページがあり、「ginger foxes love fruit」を含むページは 1 つもありませんが、それは完全に有効な英文であり、その意味を理解しているにもかかわらずです。
構成
データの希薄性の問題に取り組むために、構成を実行したいと考えています。つまり、実際のテキストから簡単に取得できる単語のベクトルを取得し、その意味を捉える方法でそれらを組み合わせます。悪いニュースは、これまでのところ誰もそれをうまくできていないということです.
最も簡単で明白な方法は、個々の単語ベクトルを加算または乗算することです。これは、「猫が犬を追いかける」と「犬が猫を追いかける」がシステムにとって同じ意味になるという望ましくない副作用につながります。また、乗算する場合は、特に注意する必要があります。そうしないと、すべての文が [0,0,0,...,0] で表されてしまい、ポイントが無効になります。
参考文献
これまで提案されてきた、より洗練された構成方法については説明しません。Katrin Erk の「単語の意味と句の意味のベクトル空間モデル: 調査」を読むことをお勧めします。これは、開始するための非常に優れた高レベルの調査です。残念ながら、出版社の Web サイトでは無料で入手できません。コピーを入手するには、著者に直接電子メールを送信してください。その論文では、より多くの具体的な方法への参照を見つけることができます。よりわかりやすいのは、Mitchel and Lapata (2008)とBaroni and Zamparelli (2010)によるものです。
@vpekar によるコメント後の編集: この回答の要点は、素朴な方法(加算、乗算、曲面の類似性など) は存在しますが、これらには根本的な欠陥があり、一般的に優れたパフォーマンスを期待するべきではないという事実を強調することです。彼ら。