web-dev-qa-db-ja.com

重要な単語を見つけるための言語解析

私は、語彙のトピックにどのように取り組むかについて、いくつかのインプットと理論を探しています。

文字列のコレクションがあるとします。これは、1つの文または複数の文になる可能性があります。これらの文字列を解析して、最も重要な単語を取り除きたいと思います。おそらく、その単語がどれほど重要であるかを示すスコアが付いています。

私が意味することのいくつかの例を見てみましょう。

例#1:

「キューリグは本当に欲しいけど、買う余裕がない!」

これは非常に基本的な例で、1文だけです。人間として、ここでは「Keurig」が最も重要な言葉であることがすぐにわかります。また、「アフォー」は比較的重要ですが、文の主なポイントではないことは明らかです。 「私」という言葉は2度出てきますが、実際には何の情報も伝えていないので、それほど重要ではありません。私はWord/scoresのハッシュが次のようなものになると期待するかもしれません:

"Keurig" => 0.9
"afford" => 0.4
"want"   => 0.2
"really" => 0.1
etc...

例#2:

「私の人生で最高の水泳練習の1つだけがありました。うまくいけば、私は自分の時間を競争に参加できます。防水ではない時計を忘れずに持っていれば」

この例には複数の文があるため、全体を通じてより重要な単語があります。例1のポイント演習を繰り返さなければ、おそらく「水泳」(または「水泳練習」)、「競争」、および「監視」(または「防水」という2つまたは3つの非常に重要な単語が出てくると思います。ハイフンの扱い方に応じて、「時計」または「非防水時計」)。

このような例をいくつか挙げて、同様のことをするにはどうしたらよいでしょうか。すでにこれを行っている既存の(オープンソース)ライブラリまたはプログラミングのアルゴリズムはありますか?

9
Matt Huggins

あなたが説明する問題について考えている人は確かにいます。 JoãoVenturaとJoaquim Ferreira da Silvaの テキスト内の関連する単一の単語のランク付けと抽出 (pdf)は、既存のランキング手法の紹介と改善の提案です。彼らが説明するすべての手法は、1行または2行のテキストではなく、コーパス(テキストのロット)に依存しています。コーパスは、すべてのサンプルのコレクション、または特定のソースから収集されたサンプルの多くのコーパスである必要があります。単一の単語(ユニグラム)の関連性は、未解決の問題であることに注意してください。ペーパーが説明するように:

「...純粋に統計的な方法を使用する場合、関連性の概念は理解しやすい概念ですが、通常、関連性と非関連性を区別するフロンティアに関するコンセンサスがないため、この種の分類は常に簡単で正確ではありません。たとえば、「Republic」や「London」などの単語は重要な関連性があり、「or」や「since」などの単語はまったく関連性がありませんが、「read」、「terminate」、「next」などの単語はどうですか?通常、それらの意味論的価値についてコンセンサスがないため、単語の数に問題があります。」

多くのオープンソース 自然言語処理ツールキット があります。 (注意してください。一部のツールは研究用に無料ですが、商用利用には商用ライセンスが必要です。)これらのツールは、選択したアプローチに関係なく、あなたの生活を楽にします。

私は Natural Language Toolkit(NLTK) に最も精通しています。それは使いやすく、十分に文書化されており、本 Pythonによる自然言語処理 (無料でオンラインで利用可能)で紹介されています。 NLTKで何ができるかを示す簡単な例として、その 品詞のタガー の使用を想像してみてください。各単語の品詞を特定したら、固有名詞は非常に重要であり、形容詞はそれほど重要ではないと考えます。動詞は重要で、副詞はそれほど重要ではないかもしれません。決して最新のランキングではありませんが、少しの労力で有用な情報を得ることができます。より高度な分析に進む準備ができたら、トークン化、タグ付け、チャンク化、および分類を行うNLTKの組み込み機能により、ソリューションの他の詳細に集中できます。

5
Corbin March

自然言語処理はそれ自体の分野であり、かなり多くの正式な研究が行われています。まずはそこを見てみましょう。

自分のニーズも再考します。 50年以上の研究の後でさえ、コンピューター科学者が思いついた最高のコンピューターはSiriです。コンピューターがあなたが話していることを定期的にうまく実行することは期待していません。

スピーチに特定の制限がある場合(Siri単純なコマンドまたは質問があると仮定した場合など)は、それがより良い場合があります。私のニーズを再検討する(NLPが必要だと仮定)には、私の制限の定義が含まれます。その後、私はおそらく大量の例を探します。自分が思いついたものを部分的にテストするためですが、多くの最新のソリューションには機械学習が含まれています。学習曲線への入力としてこれらの例が必要です。

要約すると、私はこの種の文脈自由なシナリオであなたに良いスコアを与えることができるとは真剣に疑っています。

1
Telastyn