1

Nこれはおそらくかなり基本的な NLP の質問ですが、手元に次のタスクがあります: 1-、2-、3- などの用語の (英語) レキシコンに対してスコアリングする必要があるテキスト ドキュメントのコレクションがあります。言葉が長い。Nは何らかの「妥当な」数に制限されていますが、 のさまざまな値に対する辞書内のさまざまな用語の分布は、n = 1, ..., Nかなり均一である可能性があります。このレキシコンには、たとえば、特定のタイプのデバイスのリストを含めることができ、特定のドキュメントがこれらのデバイスのいずれかに関するものであるかどうかを確認したいと考えています。したがって、レキシコン エントリのいずれかが 1 つ以上出現する場合、ドキュメントのスコアを高くしたいと思います。

レキシコンに出現する可能性のあるさまざまな形式の単語を考慮しながらスコアリングを行う標準的な NLP 手法は何ですか? 入力ドキュメントとレキシコンの両方がスコアリングを実行できるようにするには、どのような前処理が必要ですか? 前処理とスコアリングの両方のために、どのような種類のオープンソース ツールが存在しますか?

4

1 に答える 1

2

私はほぼ 1 年前にLSIとトピック モデリング を勉強しました。

これを行うにはさまざまな方法があり、成功の度合いもさまざまです。これは、情報検索の分野では難しい問題です。トピック モデリングを検索して、さまざまなオプションや最新技術について学ぶことができます。

単語が異なる形式で表示される可能性がある場合は、前処理と正規化が必要です。NLTK とそのステマーの 1 つについてはどうですか。

>>> from nltk.stem.lancaster import LancasterStemmer
>>> st = LancasterStemmer()
>>> st.stem('applied')
'apply'
>>> st.stem('applies')
'apply'

私が用語と呼ぶつもりの用語集とたくさん文書があります。用語に関してドキュメントをランク付けするための非常に基本的な手法を探っていきます。読むことができるより洗練された方法は無数にありますが、あまりにも洗練されていて厳密なものを探していないのであれば、これで十分かもしれません.

これはベクトル空間 IR モデルと呼ばれます。用語とドキュメントは両方とも k 次元空間のベクトルに変換されます。そのためには、用語ごとのドキュメント マトリックスを作成する必要があります。これは、数値がドキュメント内の用語の頻度を表すサンプル マトリックスです。

ここに画像の説明を入力

ここまでで、各ドキュメントを 3 次元配列 (各列) で表現できる 3x4 マトリックスができました。しかし、項の数が増えるにつれて、これらの配列は大きくなりすぎて、ますますまばらになります。また、セマンティック コンテンツをあまり追加せずに、ほとんどのドキュメントに出現するIorなどの単語が多数あります。andしたがって、これらのタイプの単語は無視することをお勧めします。大きさとまばらさの問題については、 SVDと呼ばれる数学的手法を使用して、行列に含まれる情報のほとんどを保持しながら行列を縮小できます。

また、上記のチャートで使用した数値は raw カウントです。もう 1 つの手法は、ブール値を使用することです。1 はドキュメント内の用語の存在、0 はゼロです。しかし、これらは単語の意味的重みが等しいと仮定しています。実際には、一般的な単語よりも珍しい単語の方が重みがあります。したがって、初期行列を編集する良い方法は、tf-idなどのランキング関数を使用して、各項に相対的な重みを割り当てることです。ここまでで重み付けされた単語ごとのドキュメント行列に SVD を適用した場合、k 次元のクエリ ベクトルを作成できます。これは単に単語の重みの配列です。クエリに同じ用語の複数のインスタンスが含まれている場合は、頻度と用語の重みの積が使用されます。

そこから何をする必要があるかは、やや単純です。コサイン類似度を分析することにより、クエリ ベクトルとドキュメント ベクトルを比較します。これが、クエリに対するドキュメントのランク付けの基礎となります。

于 2015-10-22T01:27:36.497 に答える