ウィキペディアを接続してテキスト分類の品質を改善する

テキストの分類を改善するために、Wikipediaの多言語テキストの大規模な構造化ソースを使用します。 このアプローチは、高度な自動化と特定の分類問題が解決される独立性を備えており、優れています。 ただし、トピックを決定するタスクに最大の効果が期待されます。



主なアイデアは、Wikipediaから分類問題の解決に役立つテキストのみを抽出し、他のテキストを無視することです。 猫に関するテキストを分類する場合、量子物理学に関するテキストが必要になることはほとんどありませんが、他の種類の動物に関するテキストも有用です。 このようなテキストを互いに自動的に分離することが、説明したアプローチの本質です。



ウィキペディアは、ご存じのとおり、知識と興味の多くの分野に関する記事のコレクションです。 同時に、記事の大部分には、同様の主題の記事へのリンクがありますが、他の言語で書かれています。 これらは翻訳ではなく、一般的なテーマの記事です。 また、ほとんどの記事は1つ以上のカテゴリに分類されます。 同様に、カテゴリは大部分が階層ツリーで編成されています。 つまり、興味のあるトピックに関するウィキペディアの記事をグループ化するタスクを解決できます。



ウィキペディアの事前に配線され構造化されたバージョンであるリソースDBPediaを使用します。 DBPediaは、記事の名前、注釈、記事カテゴリ、カテゴリの上位カテゴリなど、必要なすべての情報を提供します。 ウィキペディアで最も広く表現されている言語-英語から始めます。 タスクに英語のテキストがない場合、またはほとんどない場合は、ドキュメントが多い言語を使用してください。



ステップ1.ウィキペディアのクラスタリング



記事のカテゴリに焦点を当てます。 今のところ、それらのコンテンツは無視してください。 カテゴリは、ほとんどがツリーのようなグラフを形成しますが、サイクルもあります。 アーティクルは、グラフの1つ以上のノードに接続されたグラフ(リーフ)のエンドポイントです。 Node2Vecツールを使用して、各カテゴリと各記事のベクトル表現を取得します。 同様の主題の記事は、ベクトル空間でグループ化されます。



記事の便利な方法で、かなり多数(数百)のクラスターにクラスター化します。



ステップ2.ウィキペディアでの分類子トレーニング



結果のクラスター内の記事の名前をアノテーション(長い要約と短い要約-記事ごとに約1段落のテキスト)に置き換えます。 これで、テキストのセットとして定義された数百のクラスターができました。 便利なモデルを使用して、マルチクラス分類問題を解決する分類器を作成します:1つのクラスター-1つのクラス。 FastTextを使用しました。

出力では、入力としてテキストを受け取るモデルを取得し、出力では、テキストが数百のクラスクラスターに属する度合いの推定値のベクトルを提供します。



最初のステップが、カテゴリではなくコンテンツによってウィキペディアの記事をクラスター化することである場合、まず、カテゴリーごとに情報を失いますが、それは重要です、そして次に、縮退したシステムを取得します-それは、テキストによれば、クラスター化されて構築されます分類子モデル。 最終的な品質はおそらく、個別のアプローチを使用した場合よりも悪化します。 私はチェックしませんでしたが。



ステップ3.独自の戦闘データに基づいてモデルを構築する



戦闘データのサンプルを使用し、各ドキュメントを手順2のモデルの入力に送信します。モデルは推定値のベクトルを返します。 問題のドキュメントの特徴ベクトルとしてこのベクトルを使用します。 その結果、戦闘文書のトレーニングサンプルをすべて処理した後、機械学習用の標準形式のテーブル(クラスラベル、一連の数値記号)を取得します。 このテーブルをトレーニングセットと呼びます。



トレーニングサンプルに基づいて、個々の属性の情報コンテンツを評価できる分類器を構築します。 デシジョンツリーとそれらの任意のフォレストバリエーションが適しています。 最も有益な兆候は、私たちの戦闘文書のテーマと同様のテーマを持っているだけでなく、最も重要なことには、これらの記事のトピックによって戦闘クラスをうまく分離できるウィキペディアの記事のクラスターです。 最初の反復では、符号の情報量のヒストグラムは通常非常にフラットです。いくつかの情報クラスターと長いテールは、残りの数百の符号と情報量の点でほぼ等しくなります。



文字の情報内容のヒストグラムを調べた後、変曲点が毎回経験的に決定され、クラスターの約10〜30%が次の反復に進みました。 反復の本質は、選択された情報クラスターからの記事が結合され、ステップ1〜3に送信され、再びクラスター化され、2つの分類子が再び構築され、すべてが情報コンテンツヒストグラムの分析で終了したことです。 3〜4回の反復が必要です。



私たちのデータでは、デジタルサイン、特に年数に非常に強い重みがあり、クラスター全体の情報価値をそれ自体に引きずっています。 論理的な結果として、毎年のスポーツイベントに特化したクラスターは、最も有益なものになりました-多くの数字と日付、狭い語彙。 記事の注釈のテキストからすべての数字を削除する必要がありました(2番目のステップ)。 それは顕著に良くなり、ターゲットを絞った記事のクラスターが目立ち始めました(想像したとおり)。 同時に、私たちの戦闘任務に論理的に当てはまり、適切な語彙を持つ予想外のクラスターが出現しましたが、そのようなクラスターの有用性を演prior的に推測することは非常に困難でした。



ステップ4.モデルを完成させる



手順1〜3を数回繰り返した後、ウィキペディアから選択された妥当な数の記事があり、そのテーマは戦闘文書の共有に役立ちます。 興味のある他の言語の同様の記事で選択を拡大し、今回は数十の最終的なクラスターを構築しています。 これらのクラスターは2つの方法で使用できます-ステップ2と同様の分類器を作成し、それを使用して戦闘ミッションでデジタル機能ベクトルを拡張するか、これらのテキストセットを追加の語彙のソースとして使用して、戦闘分類器に統合します。 2番目の方法を使用しました。



戦闘分類子は、切り捨てられたナイーブベイとxgboostの2つのモデルのアンサンブルです。 Naive Bayesは長さ1〜16の長さのグラムで動作し、見つかった各グラムは合計をクラスの1つに傾けますが、ベイズは最終的な決定を行いません-それぞれに関連するグラムの重みの合計のみを提供しますクラスから。 Xgboostは、ベイ、他の分類子、およびテキストとは独立して構築されたデジタル属性の出力を受け入れ、xgboostはすでに最終モデルと最終スコアを提供します。 このアプローチにより、結果として得られるウィキペディアの記事のセットなど、テキストのセットをグラムベイズモデルに簡単に接続できるようになります。xgboostは、バトルテキストに対するウィキペディアクラスターの典型的な反応の形式のパターンを既に探しています。



結果と結論



最初の結果は、条件付き60%の精度から62%に増加しました。 ステップ4のWikipedia記事の注釈を収縮した記事自体に置き換えると、精度は66%に向上しました。 注釈のサイズは2つまたは3つのフレーズであり、記事のサイズは数桁大きいため、結果は自然です。 より言語的な素材-より高い効果。



注釈ではなく記事のテキストに関する手順全体を完了すると、品質の向上はさらに大きくなりますが、すでに技術的な問題があります-Wikipedia全体またはその顕著な部分(最初の反復からではない場合)をダウンロードして処理することは困難です。 また、最初に英語だけでなく、関心のあるすべての言語を使用する場合でも、他の何かを獲得できます。 この場合、処理済みボリュームの増加は複数であり、最初の場合のように桁違いではありません。



セマンティックドキュメントベクトル



各ドキュメントについて、Wikipediaのカテゴリに基づいて、ドキュメントと特定のトピックとの関係からなるベクトルが構築されます。 ベクターのコストは、ステップ3で説明した方法またはグラム単位のいずれかによって決まります。 したがって、戦闘文書はこれらのベクトルに従ってクラスター化され、主題ごとに戦闘文書のグループを取得できます。 ハッシュタグを置くだけで、新しいドキュメントはそれぞれタグ付きのデータベースにすでに含まれています。 その後、ユーザーは検索できます。 これは、明示的かつ目に見える方法でタグをユーザーに付加する場合です。 私はサポーターではありませんが、ファッショナブルに見えます。



適応検索



セマンティックドキュメントベクトルを使用するより興味深い方法は、適応検索です。 ユーザーの活動、彼が残している文書、読んでいない文書を観察することで、長期的な意味でユーザーの関心領域を概説することができます(結局、ユーザーは責任の分担を持ち、誰もが主に自分自身を探しています)そして現在の検索セッションの枠組み内で



同様のトピックを含むドキュメントには、高いコサインメジャーを備えた同様のセマンティックベクトルがあります。これにより、検索結果内のドキュメントを、ユーザーの関心事項への期待される順守の程度に従ってオンザフライで評価でき、その結果、検索結果に必要なドキュメントを増やすことができます



その結果、ユーザーごとに同一の検索クエリを使用しても、検索結果はユーザーごとにパーソナライズでき、ユーザーが前のステップのどのドキュメントに興味を持っていたかに応じて、検索クエリ自体が変更されていなくても、次の検索ステップはユーザーのニーズに合わせて調整されます。



現在、適応検索の問題に取り組んでいます。



ビジネス仮説検定



ビジネスには、実装するのが非常に難しい明るいアイデアが定期的にあります。 トレーニング用にマークアップされたサンプルや、マーク付けのためにドキュメントのセットを評価者に提出する能力を持たずに、説明によってドキュメントを見つけることを学習する必要があります。 これは通常、ドキュメントの一般的な流れに関連してターゲットドキュメントがめったに見つからない場合に発生し、その結果、予備フィルタリングなしで1万ドキュメントのプールを評価者に送信することで、1-2の必要な出力、またはさらに少ない出力を取得できます。



私たちのアプローチは、意味ベクトルに基づいて反復学習プロセスを作成することです。 最初のステップでは、ターゲットトピックを設定するいくつかのテキストを見つけます。これらは、Wikipediaの記事や他のソースのテキストです。 各テキストに対して、その意味ベクトルが生成されます。 ターゲットトピックが複雑な場合、セット代数は機能します。つまり、統一、交差、一部のトピックを他のトピックから除外します。 たとえば、「研究開発」と「化粧品」に関するウィキペディアの記事があります。セットの共通部分は「化粧品に関する研究開発」を提供します。



データベース内のすべてのドキュメントは、特定のトピックへの準拠の程度によってソートできます。セットの代数は、ドキュメント自体に対して次のように機能します。セマンティックベクトルが、データベースの平均よりも特定のトピックのWikipedia記事のベクトルに近い場合、ドキュメントはトピックに関連すると見なされます。 交差-同時にドキュメントの意味ベクトルがデータベースの平均よりも両方のトピックに近い場合。 他の操作も同様です。



すべての肯定的なトピックに最も近く、同時にすべての否定的なトピックに最も近い数百または2つのドキュメントのセットを見つけます(探している研究の経済的な問題に興味がない場合は、「金融」カテゴリの記事を例として設定します) これらのドキュメントを評価者に渡します。評価者は、それらにいくつかの肯定的な例を見つけます。これらの例に基づいて、セマンティックベクトルが近い他のドキュメントを探してマークアップし、出力で、ポジティブクラスが便利な分類子を構築するのに十分なドキュメントを取得します。 数回の反復が必要になる場合があります。



まとめ



説明したアプローチにより、手動分析なしで、Wikipediaまたは別のソースから分類問題の解決に役立つテキストのセットを自動的に選択できます。 クラスターをウィキペディアから動作中の分類器に接続するだけで、分類器自体の適合を必要とせずに、品質の大幅な向上が期待できます。



さて、適応検索は興味深いものです。



All Articles