web-dev-qa-db-ja.com

英語の文の「主要トピック」を検出するのに役立つアルゴリズムは存在しますか?

文の「重要な概念」を検出できる既知のアルゴリズムがあるかどうかを調べようとしています。

ユースケースは次のとおりです。

  1. ユーザーはクエリとして文を入力します(鶏肉は七面鳥のような味がしますか?)
  2. 私たちのシステムは文の概念を識別します(鶏肉、七面鳥)
  3. そして、それは私たちのコーパスコンテンツの検索を実行します

私たちが欠けている領域は、文のコア「トピック」が実際に何であるかを特定することです。 「鶏肉は七面鳥の味がしますか」という文は、ユーザーが鶏肉の味について質問しているため、「鶏肉」という主要なトピックがあります。 「トルコ」はそれほど重要ではないヘルパートピックですが。

だから...私は文の主要なトピックを特定するのに役立つアルゴリズムがあるかどうかを調べようとしています...何か知っているかどうか教えてください!!!

31
rockit

私は実際にこれについて研究プロジェクトを行い、2つの大会で優勝し、全国大会に出場しています。

メソッドには2つのステップがあります:

  1. 解析文脈自由文法を含む文
  2. 結果の解析ツリーで、名詞句のような構成要素にのみ従属するすべての名詞を検索します

たとえば、「I ate pie」には、「I」と「pie」の2つの名詞があります。構文解析ツリーを見ると、「pie」は動詞句の内部にあるため、主語にすることはできません。ただし、「私」はNPのような構成要素の内部にのみ存在します。唯一の主題候補であり、それは主題です。 http://www.candlemind.com でこのプログラムの初期のコピーを見つけてください。語彙は基本的な単数形に限定されており、動詞の活用はないため、「男性」はあるが「男性」はなく、「食べる」はあるが「食べる」はないことに注意してください。また、使用したCFGは手作り限定でした。このプログラムはまもなく更新されます。

とにかく、このプログラムには制限があります。私のメンターは、現在の状態では、「実際の」NP(文法では実際にNPと呼ばれる)である主語を含む文を認識できないと指摘しました。たとえば、「月が平らであるということは、もはや議論ではありません」。主題は実際には「月が平らであること」です。ただし、プログラムは「月」を主題として認識します。これはまもなく修正されます。

とにかく、これはほとんどの文に十分です...

私の研究論文もそこにあります。メソッドを読むには、その11ページに移動してください。

お役に立てれば。

21
Michael

基本的なNLP構文解析手法のほとんどは、文の基本的な側面を抽出できます。つまり、鶏肉と七面鳥はNPであり、「のような」などの形容詞でリンクされています。これらを「トピック」または「概念」に変換します。 'はもっと難しい

潜在意味解析やその多くの派生物などの手法は、この情報をベクトルに変換し(一部には品詞間の階層/関係を保持する方法があります)、既存の、通常は概念によって事前に分類されたベクトルと比較します。開始するには、 http://en.wikipedia.org/wiki/Latent_semantic_analysis を参照してください。

Editこれは、さらに追求したいかどうかを確認するために試してみることができるLSAアプリの例です。 http://lsi.research.telcordia.com/lsi/demos.html

9
dfb

多くの長い文章では、トピックが正確に何であるかを言うのは難しく、また複数ある場合もあります。

おおよその回答を取得する1つの方法は

1.)最初に、openNLP、スタンフォードパーサー、またはいずれかを使用して文にタグを付けます。 2.)次に、文からすべてのストップワードを削除します。 3.)名詞(固有名詞、単数形、複数形)をピックアップします。

他の方法は

1.)任意のパーサーによって文をフレーズにチャックします。 2.)すべての名詞句をピックアップします。 3.)子として名詞を持たない名詞句を削除します。 4.)形容詞と名詞のみを保持し、残りの名詞句からすべての単語を削除します。

これは約を与えるかもしれません。推測。

3
Naveen

MIT今月の計算言語学ジャーナル: http://www.mitpressjournals.org/doi/pdf/10.1162/COLI_a_00076 )に名詞句の解析に関する記事があります。

1
ZeoS

「重要な概念」は言語学では明確に定義された用語ではありませんが、これが出発点になる可能性があります。 parse 文、解析ツリーまたは取得した依存構造で主語を見つけます。 (これは常に機能するとは限りません。たとえば、「雨が降っていますか?」という件名は「雨」ですが、重要な概念は「雨」である可能性があります。また、「スパゲッティとラザニアは同じものですか?」の重要な概念は何ですか。 ? ")

この種の問題(NLP +検索)は、 [〜#〜] lsa [〜#〜] などの方法でより適切に処理されますが、これは非常に高度なトピックです。

1
Fred Foo

お金を払う気があるなら、 http://www.connexor.com/ は、英語を含む多種多様な言語に対してこのタイプのセマンティック分析を実行できるはずです。私は彼らの製品を直接使用したことがないので、それがどれほどうまく機能するかについてコメントすることはできません。

1
btilly

複合文または複雑な文には、文の複数の重要な概念が含まれる場合があります。

文の依存構造を与えることができるstanfordNLPまたはMaltParserを使用できます。また、主語、動詞、目的語などの品詞のタグ付けも行います。

ほとんどの場合、オブジェクトが文の重要な概念になると思います。

1
Naveen

GoogleのCloudNatural LanguageAPIを確認する必要があります。それは彼らのNLPサービスです。

https://cloud.google.com/natural-language/

1
Tom

最も基本的なレベルでは、英語の質問は通常<verb> <subject> ... ?または<pronoun> <verb> <subject> ... ?の形式です。これは、特に主題が複数の単語にまたがる可能性があることを考えると、決して良いアルゴリズムではありませんが、必要なソリューションの洗練度によっては、有用な出発点になる場合があります。

精度が必要な場合は、この答えを無視してください。

1
biziclop

簡単な解決策は、スピーチの一部のタガーで文にタグを付けて(たとえば、 [〜#〜] nltk [〜#〜] Pythonのライブラリから)、事前定義されたスピーチの一部と一致するものを見つけることです。文の主語がどこにあるかが明確なパターン

0
Andrey Sboev

1つのオプションは、最初のステップとして次のようなものを調べることです。

http://www.abisource.com/projects/link-grammar/

しかし、これらのリンクからトピックをどのように導き出すかは、それ自体が別の問題です。しかし、Abiwordは文法上の問題を検出しようとしているので、あなたはそれを使ってトピックを決定できるかもしれません

0
Glenn