ディレクトリ
従来のデータマイニングタスクは構造化データを指向していることはわかっています。構造化データは理解しやすく、非常に構造化されたデータです。
たとえば、銀行顧客データベースの次の表:
数 |
お名前 |
年齢 |
年間収入 |
職業 |
ローンはありますか |
01 |
Xi Xiaoyao |
16(ちょうどいい) |
100 |
学生 |
なし |
02 |
ハンマー |
40 |
1,000,000 |
副大統領 |
持っている |
03 |
呉明 |
30 |
200,000 |
プログラマー |
なし |
上記の履歴情報に基づいて特定のデータマイニングタスクが完了すると、各ディメンションの特性が非常に明確になり、テーブルの各列または属性が機能になります。したがって、各サンプル、つまり各行は、特徴ベクトルとして簡単に表現できます。
しかし、自然言語のテキストは構造化されていないことがわかっています。したがって、自然言語テキストに基づくデータマイニングタスク、つまりテキストマイニングタスクを開始するにはどうすればよいでしょうか。言い換えると、機械学習アルゴリズムによって認識された特徴ベクトルをテキストから抽象化する方法は?
ワードバッグモデル
自然言語テキストの各文字を特徴と考えるのは簡単です。したがって、対応する特徴ベクトルはこれらの特徴の組み合わせです。このアイデアはナイーブですが、非常に効果的です。このアイデアに基づくモデルは、Vector Space Modelとも呼ばれるBag of Wordsモデル(Bag of Words)です。
Bag of Wordsモデルで、各特徴(つまり、各単語)の値を定義する方法は?または各単語をエンコードする方法は?必要な特徴ベクトルをさらに生成する方法は?
ワンホット
同じ素朴なアイデアは次のとおりです。辞書のサイズをn(辞書にはn個の単語がある)とし、辞書内の単語の位置がkの場合、n次元のベクトルを設定し、k番目の次元を1に設定し、残りの次元を設定します。すべて0に設定されています。このアイデアは、ワンホットエンコーディングで、中国と呼ばれるワンホットエンコーディングを(0広大な海ではなく、その孤独なホットすぎて、1があります)。
たとえば、次の3つの文、つまり3つのサンプルがあります。
「私はあなたが好きです」;
「あなたはあなたの犬が好きです」;
「あなたは犬です」。
単語のセグメンテーションが完了していると仮定すると、バッグオブワードモデルのアイデアに従って、これら3つのサンプルから情報をマイニングしたい場合は、次のようになります。
まず、これらの文章に登場する単語の辞書を作成する必要があります。辞書順では、[あなたのようなI、はい、犬]これらの6つの単語を含みます。ワンホットエンコーディングによれば、「I」は[1,0,0,0,0,0]としてエンコードされ、「like」は[0,1,0,0,0,0]としてエンコードされます。等々。
では、ワンホットエンコーディングを使用して特徴ベクトルを生成し続けるにはどうすればよいでしょうか。
サンプルの特徴ベクトルは、直接追加されたサンプル内の各単語のワンホットベクトルです。これら3つのサンプルの特徴ベクトルは次のように表されます。
好きです:[1,1,1,0,0,0]
あなたの犬は好きですか:[0,1,2,1,0,1]
あなたは犬です:[0,0,1,0,1,1]
その中で、「あなた」は2番目の文に2回出現するため、3番目の次元の値は2です。ただし、ベルヌーイ分布の単純ベイズモデルなどの一部の機械学習モデルでは、各単語の出現のみが考慮され、2番目の文のバッグオブワードモデルは[0、 1,1,1,0,1]。
見て、特徴ベクトルの構築が完了しました、残りは機械学習に任されています〜
しかし、この場合、よく考えてみると大変なことのようです。たとえば、関連する単語が多い場合、辞書は非常に大きくなり、数千の次元になりやすくなります。したがって、各サンプルの特徴ベクトルも非常にまばらになります(ほとんどの次元の値は0です)。このような高い次元は、ニューラルネットワークなどの多くの機械学習モデルのトレーニングにとって障害となります。
もう一度考えてみてください。このエンコーディングのため、単語の意味も無視されます!たとえば、「ニャースター」と「猫」は同じ意味ですが、2つの異なる単語にエンコードされます。
これら2つの問題を同時に解決する方法はありますか?
単語の埋め込み
解決策は単語の埋め込みです。これは中国語では単語ベクトルと呼ばれ、単語の埋め込みとも呼ばれます。本質は、単語を低次元の実数ベクトルにエンコードすることです。(専門用語は、埋め込みプロセスのように単語を低次元空間にマッピングすることなので、単語埋め込みと呼ばれます)
たとえば、「犬」は[0.192、0.221、-0.442、...]としてエンコードされます。一般的に言えば、寸法は500寸法未満に制御され、数十の寸法も一般的です。しかし、一般的にそれは千の次元に上昇しません。
では、単語間の意味的な関係をどのように表現するのでしょうか。実際、各単語を低次元のベクトル空間にマッピングした後は明らかです。たとえば、単語ベクトルは2次元に制限されています。次に、単語ベクトルにマップされた「cat」、「dog」、「happy」、「surprise」、および「mobile phone」という単語は、ベクトル空間では次のようになります。
「犬」と「猫」はどちらも動物であり、似たような意味を持つため、角度が小さく、「幸せ」と「驚き」があります。ただし、「犬」と「携帯電話」という2つの小さな関連語には大きな角度があります。ベクトル間の距離を計算する角度を測定するこの専門的な方法は、コサイン類似度の計算と呼ばれます。
修飾された単語ベクトルは、意味的に類似しているだけでなく、隣接する領域にエンコードされ、単純なセマンティック演算をサポートし、セマンティック演算をベクトル演算にマップする必要があります。たとえば、次のとおりです。
"中国" + "資本" = "北京";
"プリンス"-"プリンセス" = "男性"-"女性";
ベクトル空間ではこんな感じ
ご覧のとおり、単語ベクトルなどのインテリジェントなエンコーディング方法を使用して、テキストマイニングにそれを使用することの信頼性が大幅に高まっていると思いますか?
単語ベクトルはインテリジェントですが、単語ベクトルの生成は簡単な作業ではありません。高精度の単語ベクトルをどのようにトレーニングするかは、NLPとIRの分野では依然としてホットなトピックであり、NLPの分野でのディープラーニングの重要なアプリケーションでもあります。ディープニューラルネットワークに似ています)。ワードベクトルの生成に大きな関心があり、十分な機械学習、特にニューラルネットワークの基礎がある場合は、Xiao Xiが推奨する次の論文をGoogleで検索できます。
1、Yoshua Bengio、Rejean Ducharme、Pascal Vincent、Christian Jauvin。 神経確率言語モデル。Journal of Machine Learning Research(JMLR)、3:1137–1155、2003
2、Turian Joseph、Lev Ratinov、Yoshua Bengio。 単語表現:半教師あり学習のためのシンプルで一般的な方法。第48回計算言語学会(ACL)の年次会議の議事録。2010
3、MikolovT、Sutskever I、Chen Kなど 語句の分散表現とその構成性 [C] // Advancesin神経情報処理システム。2013:3111-3119。
4、Mikolov T、Chen K、Corrado Gなど ベクトル空間における単語表現の効率的な推定 [J]。arXiv preprintarXiv:1301.3781、2013。