「類似性測度」または「距離測度」のカテゴリを確認することをお勧めします(データマイニングの用語では、「分類」とは異なります)。
基本的に、類似度は数学で次のことができる方法です。
- 2セットのデータ(あなたの場合は単語)を取ります
- いくつかの計算/方程式/アルゴリズムを実行します
- その結果、そのデータがどれほど「類似」しているかを示す数値が得られます。
類似性の尺度では、この数値は0から1までの数値です。ここで、「0」は「まったく一致しない」を意味し、「1」は「同一」を意味します。
したがって、実際には文をベクトルと考えることができます。文の各単語は、そのベクトルの要素を表します。同様に、各カテゴリのキーワードのリストについて。
そして、非常に簡単なことを行うことができます。「コサイン類似度」または「ジャッカード係数」を取得します(データの構造に応じて)。
これらのメトリックの両方が行うことは、両方のベクトル(入力文と「キーワード」リスト)を取り、数値を与えることです。すべてのカテゴリでこれを行う場合は、それらの数値をランク付けして、どの一致が最大の類似度係数を持っているかを確認できます。
例として:
あなたの質問から:
顧客取引:預金、預金、顧客、口座、口座
したがって、5つの要素(1、1、1、1、1)でベクトルを作成できます。これは、「customertransactions」キーワードの場合に5つの単語があり、(これは明白に聞こえますが)各単語が検索文字列に含まれていることを意味します。私と一緒にいてください。
だから今あなたはあなたの文を取ります:
システムは、顧客の指定された口座に預金を適用するものとします。
これには、「顧客トランザクション」セットからの2つの単語があります:{預金、アカウント、顧客}
(実際、これは別のニュアンスを示しています。実際には「顧客」がいます。これは「顧客」と同等ですか?)
あなたの文のベクトルは(1、0、1、1、0)かもしれません
このベクトルの1は、最初のベクトルの1と同じ位置にあります。これは、これらの単語が同じであるためです。
つまり、これらのベクトルは何回違うのでしょうか。比較してみましょう:
(1,1,1,1,1)(1,0,1,1,0)
うーん。それらは同じ「ビット」を3回持っています-1、3、および4番目の位置にあります。それらは2ビットだけ異なります。したがって、これら2つのベクトルを比較すると、「距離」は2であるとしましょう。おめでとうございます。ハミング距離を計算しました。ハミング距離が短いほど、データは「類似」しています。
(「類似度」測度と「距離」測度の違いは、前者が正規化されていることです。0から1までの値が得られます。距離は任意の数値であるため、相対値のみが得られます。)
とにかく、これは自然言語処理を行うための最良の方法ではないかもしれませんが、あなたの目的にとっては最も簡単で、実際にはアプリケーションにとって、または少なくとも出発点としてはかなりうまくいくかもしれません。
(追記:「分類」は、タイトルにあるように、「私の文章をとると、どのカテゴリに分類される可能性が最も高いか」という質問に答えることになります。これは、「どれだけ似ているか」と言うのとは少し異なります。カテゴリ2よりもカテゴリ1への私の文章?」これはあなたが求めているもののようです。)
幸運を!