Word2Vec:テキストドキュメントの分類

分布セマンティクスの有名なユーティリティであるWord2Vecは驚くべき結果を示し、それを使用する機械言語コンペティションを使用する専門家に賞を受賞する場所を安定して提供します。 ユーティリティとその類似物-グローブとAdaGramの利点は、学習プロセスとトレーニングテキストの準備が安価であることです。 しかし、欠点もあります-ベクトル形式の単語の表現は、単語で、フレーズで十分に、フレーズでまあまあ、そして一般的に-長いテキストでうまく機能します。



この記事では、ベクター形式で任意の長さのテキストを表示できるディスカッションアプローチを提案します。これにより、テキストとの比較(距離の計算)、テキストの加算および減算の操作を実行できます。



ベクトル表現から意味ベクトルへ





Word2Vecの結果として得られた単語のベクトル表現には、次の興味深い特性があります。ベクトル間の距離だけが意味を持ち、ベクトル自体は意味を持ちません。 言い換えれば、特定の単語のベクトル表現をそのコンポーネントに分解して研究することは、不可能な作業のようです。 まず第一に、学習プロセスはいくつかのランダムな初期ベクトルから始まり、さらに学習プロセス自体がランダムであるためです。 そのランダム性は、並列実行学習フローが相互に行われた変更を同期させない場合の確率学習の原理と関連しており、純粋なデータ競合を実現します。 しかし、このレースではトレーニングの質が大幅に低下することはありませんが、トレーニングの速度は非常に顕著に向上します。 アルゴリズムとデータのランダム構造により、単語のベクトル表現は意味のあるコンポーネントに分解されず、全体としてのみ使用できます。



ベクトル表現のこのプロパティの悪影響は、ベクトルの操作中にベクトルが急速に劣化することです。 2つの単語のベクトルの追加は、通常、これらの単語に共通することを示しています(単語が実際の世界で実際に接続されている場合)が、用語の数を非常に迅速に増やしようとすると、実用的な価値のある結果が失われます。 1つのフレーズの単語を追加するために、まだいくつかのフレーズを追加することはできません。 別のアプローチが必要です。



哲学的論理の観点から、どのようにテキストを記述することができますか? その主題を示すために、多分-スタイルについていくつかの言葉を言ってください。 自動車専用のテキストには、明らかに「car」という単語とそれに近い単語が含まれますが、「sport」という単語、自動車ブランドの名前などが含まれる場合があります。 一方、他のトピックのテキストには、そのような単語がはるかに少ないか、まったく含まれません。 したがって、テキストに十分な数のトピックをリストすることで、テキスト内の各トピックに対応する単語の存在の統計を計算し、セマンティックテキストベクトルを取得できます。ベクトルは、この要素によってエンコードされたトピックに対する特定のテキストの関係を示すベクトルです。



次に、テキストのスタイルも統計的手法によって決定されます。これは、著者に特有の寄生虫と発話のターン、フレーズの始まりの詳細、句読点の配置です。 トレーニング中に大文字と小文字を区別し、テキストから句読点を削除しないため、Word2Vec辞書には「テキスト」のような単語がいっぱいです。 そして、著者のスタイルを強調するために使用できるのはまさにそのような言葉です。 もちろん、スタイルを安定して強調するには、本当に巨大なテキスト部隊、または少なくとも非常に独創的な著者のスタイルが必要ですが、それにもかかわらず、新聞記事をフォーラムの投稿やツイートと区別するのは簡単です。



したがって、セマンティックテキストベクトルを構築するには、テキストの主題とスタイルを反映する十分な数の安定したクラスターを記述する必要があります。 Word2Vecユーティリティ自体には、kMeansベースのクラスタリングツールが組み込まれているため、これを使用します。 クラスター化ツールは、辞書のすべての単語を特定のクラスター数に分割します。クラスター数が十分に大きい場合、各クラスターはテキストのかなり狭い主題、またはむしろテーマやスタイルの狭い兆候を示すことが予想されます。 私のタスクでは、2000個のクラスターを使用しました。 つまり、セマンティックテキストベクトルの長さは2000要素であり、このベクトルの各要素は、このクラスターに対応する単語で説明できます。



調査対象のテキスト内の各クラスターからの単語の相対密度は、テキストを適切に説明しています。 もちろん、それぞれの特定の単語は、多くのクラスターに関連しており、いくつかのクラスターに関連しています。 したがって、まず、単語の意味ベクトルを計算する必要があります。これは、単語からベクトル空間Word2Vec内の対応するクラスターの中心までの距離を表すベクトルとしてです。 次に、テキストを構成する個々の単語のセマンティックベクトルを合計すると、テキスト全体のセマンティックベクトルが取得されます。



関連するトピックを定義する単語の相対頻度の計算に基づいて説明されているアルゴリズムは、任意の長さのテキストに適しているため、優れています。 一語から無限まで。 さらに、私たちが知っているように、ある主題の十分に長いテキストを見つけることは困難であり、多くの場合、テキストの主題は最初から最後まで変化します。 それどころか、短いテキストまたはメッセージは、その簡潔さのために多くのトピックを正確にカバーすることはできません。 その結果、長いテキストのセマンティックベクトルは、いくつかのトピックの機能が短いテキストとは異なります。短いテキストでは、機能ははるかに少なくなりますが、より強力に表示されます。 テキストの長さは明らかに考慮されていませんが、それにもかかわらず、アルゴリズムは短いテキストと長いテキストをベクトル空間で確実に広げます。



セマンティックテキストベクトルの使用方法



各テキストにはセマンティック空間でベクトルが割り当てられているため、2つのテキスト間の距離をコサイン尺度として計算できます。 テキスト間の距離により、kMeansアルゴリズムを使用してクラスタリングまたは分類を実行できます。 今回だけ-個々の単語ではなく、すでにテキストのベクトル空間にあります。 たとえば、テキストストリーム(ニュース、フォーラム、ツイートなど)から関心のあるトピックのみを除外するタスクがある場合、事前にマークされたテキストのデータベースを準備し、調査する各テキストについて、最も重要なクラスを計算できます(各クラスのいくつかの最適なオカレンスの最大平均コサイン測定値は、その最も純粋な形式のkMeansです)。



示された方法は、テキストをスタイル(さまざまなソース、長さ、メッセージ言語さえ)で、クラスのテーマ関連性(1つのテキストが多くの場合、いくつかに関連することが多い)で大幅に異なる、テキストを多数(数百)のクラスに分類するというかなり難しいタスクを解決しましたクラス)。 残念ながら、結果の具体的な数値はNDAの下にありますが、アプローチの全体的な有効性は次のとおりです。9%クラスで90%の精度、44%クラスで99%の精度、3%クラスで76%の精度。 これらの結果は次のように解釈する必要があります-分類子は、このクラスに一致するテキストの程度に従って数百のターゲットクラスすべてをソートします。その後、クラスの上位3%を取得すると、ターゲットクラスは確率76%、クラス9%でこのリストに含まれます確率はすでに90%を超えています。 誇張することなく、これは驚くほど強力な結果であり、顧客に大きな実用的なメリットをもたらします。



アルゴリズム、式、グラフ、および結果の詳細な説明を含むより詳細なレポートは、今後のダイアログに耳を傾けてください。



セマンティックベクトルを使用する他の方法は?


すでに述べたように、テキストのセマンティックベクトルは、概念化された(ベクトルの2000要素すべてを概念化する人はいませんが、これは可能です)要素で構成されています。 はい、それらは独立していませんが、それでも、お気に入りの汎用分類器(SVM、ツリー、またはディープグリッド)にロードできるすぐに使用できる機能ベクトルです。



結論



Word2Vecのベクトル表現に基づいて、任意の長さのテキストをベクトルに変換する方法は実際に機能し、テキストのクラスタリングと分類の問題で良い結果をもたらします。 セマンティックベクトルによってエンコードされたテキスト属性は、テキストの長さの増加に伴って劣化することはありませんが、長いテキストを互いにより細かく区別し、大幅に異なる長さのテキストを強く広げることができます。 コンピューティングの総量は控えめで、通常のサーバーでは1か月です。



コメントでご質問にお答えさせていただきます。



All Articles