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


9

私は、語彙のトピックにアプローチする方法についてのいくつかの入力と理論を探しています。

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

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

例#1:

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

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

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

例2:

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

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

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


また、これは、programmers.stackexchange.comに関する私の最初の投稿です。これが間違った場所で、StackOverflowまたは別のSEサイトに属している場合は、お詫び申し上げます。必要に応じて、質問を移動してください。
Matt Huggins、

あなたが何を成し遂げようとしているのかという質問から、私にはわかりません。特に最初の例では、「Keurig」と「afford」という単語は単純な統計チェックによって識別できます。文の単語の中で、これらの2つの単語は他の英語よりも一般的ではありません。したがって、単語の頻度のデータベースがあれば、それらの単語を簡単に特定できます。
Qwertie

回答:


5

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

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

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

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


1

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

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

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

つまり、要約すると、この種のコンテキストフリーシナリオでは、何でも良いスコアが得られるとは思えません。


+1でシリディグ...またはプロモーション...
アーロンマクイバー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.