こんにちは、Habr!
お正月に多くの皆さんが素晴らしい休息をとれることを願っています。 しかし、休日は終わりました。 機械学習とデータ分析に戻りましょう。 1月25日から、 Beeline Data Schoolの 3番目のセットを開始します。
前回の投稿では、テキスト分析のクラスで教えていることをより詳細に説明することを約束しました。 この投稿では、この約束を果たします。
ところで、既にテキストの分析と処理に積極的に取り組んでいて、自分で試してみたい場合は、Kaggle =)でThe Allen AI Science Challengeで遊んで、同時にテキストの分析と応答システムの構築のためのハッカソンであるDeepHackに参加することをお勧めします。
ワープロに関するクラスでさらに教えていることについて。
自動ワードプロセッシングは、エントリのしきい値が高い領域です。興味深いビジネスオファーを作成したり、たとえばSemEvalやDialogなどのテキスト分析コンテストに参加するには、機械学習方法を理解し、ワードプロセッシング用の特別なライブラリを使用できる必要があります。ルーチン操作をゼロからプログラミングし、言語学の基本を理解します。
ワードプロセッシングのすべてのタスクといくつかのクラス内でそれらを解決する複雑さについて話すことは不可能であるため、トークン化、形態素解析、キーワードとフレーズの強調表示、テキスト間の類似性の決定といった最も基本的なタスクに集中しました。
トークン化(英語の単語のトークン化から)は、テキストを文と単語に分割するプロセスです。 トークン化の問題は、一見すると誤って些細なように見えるかもしれません。
実際、単語またはトークン-テキストの要素-の概念はあいまいです。たとえば、正式には、ニューヨーク市の名前は2つの別々の単語で構成されます。 もちろん、合理的な処理を行うには、これら2つの単語を1つのトークンとみなし、個別に処理する必要はありません。
さらに、疑問符や感嘆符とは対照的に、ピリオドは常に文の終わりではありません。 ドットは、略語または数字入力の一部である場合があります。
理論を掘り下げず、実用的な観点からトークン化を扱う必要があり、最も魅力的なタスクではない場合、ルールに従ってテキストを単語に分割し、バイナリ分類アルゴリズムを使用して文に分割する組み合わせトークナイザーを使用するのが最も合理的です:各ポイントは、分類子によってポジティブクラス(ポイントは文の終わり)またはネガティブ(ポイントは文の終わりではない)として分類されます。 同様に、分類子は感嘆符と疑問符の両方を指します。
幸いなことに、学生はこれらのアルゴリズムをゼロから実装する必要はありませんでした。これらはすべて、Pythonテキスト処理ライブラリであるNatural Language Toolkitに実装されていました。
形態素解析(英語の品詞タグ付け)は、各単語の形態的特性を決定することです:単語が名詞である場合、その単語がどの品詞に属しているか、そして、それがどれだけ立っているか(また、ロシア語の場合、性別と格付けは何ですか)言語)、単語が動詞である場合、その時間、外見、人、声などは何ですか?
形態学的同音異義のために、単語の品詞を決定することはそれほど簡単ではありません。異なる単語は、一致する形式を持つことができます。つまり、同音異義語です。 たとえば、「彼は単純な兵士に驚いた」という文には、単純と兵士という2つの同音異義語があります。
NLTKは、コンテキストに応じて品詞を決定できるスマートな形態素解析ツールと、各単語の最も頻繁な分析を返す単純な形態素辞書を実装しています。
キーワードとフレーズを強調表示するタスクの形式化は不十分です。通常、キーワードとフレーズは、テキストのテーマの詳細を反映する単語とフレーズとして理解されます。
定義があいまいであるため、キーワードやフレーズを強調表示するためのアプローチは数百ではないにしても数十あります。 それらのいくつかを検討します。
- 機械学習法を使用して、キーワードとフレーズを強調表示します。 キーワードとフレーズが専門家によって強調されているテキストのコレクションがあると想定されます。 次に、分類されたコレクションのキーワードとフレーズを強調するように分類器をトレーニングできます。
- 形態学的パターンに応じたキーワードとフレーズの選択。 マークされたテキストのコレクションがない場合、キーワードとフレーズは文法的に意味があると想定できます。たとえば、キーワードは名詞であり、フレーズは名詞+名詞または形容詞+名詞の形式の単語のペアです。
- 接続性の統計的尺度により、重要なバイグラム(単語のペア)を強調表示します。 接続性の統計的尺度は通常、情報理論から借用された単語のペアw1、w2(英語の点別相互情報)とその派生語の相互情報量の尺度、または2つのイベント「met w1」と「met w2」の独立性に関する統計検定のいずれかを意味します。 このアプローチの重要な制限は、単語のペアにのみ適用されることです。
- コントラスト測定によるキーワードとフレーズの強調表示。 プログラミング言語、映画、アトラクションなど、さまざまなpythonに関するウィキペディアから10の記事を収集したとします。 タスクは、コレクション全体ではなく、特定のテキストに最も固有の単語を見つけることです。 この問題を解決するには、他のコレクションと比較して単語またはフレーズのコントラストを評価します。 最も一般的なコントラスト測定の1つはtf – idfと呼ばれます。 2つの部分で構成されます。tfは問題のテキスト内の単語の頻度であり、idfは単語が含まれているドキュメントの数の逆数です。 tf – idfメジャーを使用すると、たとえば、Pythonの魅力に関するテキストで最も重要な単語がジェットコースターであることを見つけることができます。
「不思議の国のアリス」によって構築されたキーワードとフレーズクラウド
tf – idfの使用は、キーワードとフレーズの抽出に限定されません。 tf – idfのもう1つの用途は、テキスト間の類似性を計算することです。 コレクションの各テキストが含まれる単語のベクトルtf – idfで表される場合、2つのテキスト間の類似性は、多次元単語空間内の2つのベクトル間のコサインとして定義できます。 2つのテキスト間のこのコサインの類似性は、クラスター分析の距離として使用できます。
ディープラーニングワードプロセッシングアプローチ:word2vecデータ構造:
上記で説明した古典的なワードプロセッシング手法に加えて、Googleが開発し、ディープラーニングアプローチを使用したword2vecデータ構造が最近人気を集めています。 これを使用すると、脳を少し面白くすることができます。つまり、線形空間のベクトルを使用して(言語に関係なく)単語を識別することができます。 さて、その後、減算、加算、後者をスカラー的に乗算します。 この構造は内部から機能するのはかなり困難ですが、実際に使用するには、トレーニングパラメータの設定方法を学習する必要があります。 私たちはクラスでこれに時間を捧げます。 ブラックボックスの観点から見ると、この構造は非常に単純です。前処理をせずに、多数のテキストを単に「フィード」するだけです。 出力では、テキストから各単語のベクトル(特定の次元)を取得します。
読者はすぐに質問があります:今、それをどうするか? 以下は、指をクリックするだけで解決できる最も単純なタスクのリストです。
- たとえば、テキストを分類するタスクでは、各ドキュメントがそれに含まれる単語の平均ベクトルを計算し、それによって最悪の(しかし最高ではない)特性記述を取得することが可能です。 その後、古典的な機械学習の問題(分類問題)を解決した後、ドキュメントを分類する方法を学習します。
- テキスト内のタイプミスの定義-「スカラー製品」を使用して行われます-空き時間に読者がどのくらい正確に考えるかを提供します
- ワードクラスタリング(ちなみに、テキストを分類するタスクにも使用できます)
- 「余分な単語を見つける」という問題の解決策
これは、このword2vecデータ構造を使用して解決されるタスクの完全なリストではありません。 すべてのアプリケーションとチューニングの微妙さの詳細については、クラスで説明します。
これは、自然言語処理のような複雑で多面的な科学の紹介に過ぎません。 クラスでは、ロシア語の場合(ロシア語のテキスト)を含む、適用可能なテキストの自動処理の多くのタスクも考慮します。
これは特に当てはまります 今日、市場の多くのベンダーは、英語のエンクロージャでテストされたソリューションを提供しており、単一の「購入して置く」ソリューションはありません。すべてのタスクで製品をゼロから開発する必要があります。
テキスト分析の使用例:
今日の自然言語分析のアプリケーションの中で、最も有名な例の1つは、特定のオブジェクトへの参照を監視し、メディアおよびソーシャルサービスでそれらに対する態度を分析することです。 ネットワーク。 ソーシャルネットワークはもちろん、ニュース、プレスリリース、ブログなど、インターネットが毎日大量のテキスト情報を生成することは周知の事実です。 したがって、処理は言うまでもなく、このような情報を収集して保存するというタスクでさえ、別のビジネスです。 特に価値があるのは、ワードプロセッシングの方法、特に特定のオブジェクトまたは会社に関連するテキストへの参照の監視です。
確かに、多くの人がソーシャルネットワーク上で有名なブランドについて、またはさらに良いことにタグを付けて何かを書くと、答えを受け取る可能性が高いことに気付いています。 もちろん、答え自体はまだ人々によって書かれていますが(自然言語分析はこれで大きな進歩を遂げていますが)、スマートアルゴリズムはアピールのテキストの分類(ネガティブ、ニュートラル、ポジティブ)を行います。 これは古典的な感情分析タスクであり、教室で詳細に分析しますが、非常に多くの落とし穴があります。
それにもかかわらず、私たちは本質的にこの問題のみを解決します-一部の企業はこれで良いビジネスをしています。 たとえば、企業はソーシャルネットワーク上のメッセージを分析し、オピニオンリーダーを見つけます(これは、グラフ理論の分野で非常に人気のあるタスクであり、講義でも検討します)。
メッセージングアプリケーションでボット、インタラクティブロボットを構築するタスクも人気を集めています。 このようなボットは、顧客の質問に答えることができ、顧客の助けを借りて、顧客が利用できる会社のサービスを管理し、新しい製品やサービスを購入できます。 たとえば、インスタントメッセンジャーのボットの詳細については、 こちらをご覧ください。
お気づきかもしれませんが、今日、自然言語処理の分析には多くの問題があります。少なくとも1つを解決すれば、ビジネス全体を構築できます。
テキストの分析に興味のあるすべての人には、 Courserで同じ名前のコースを取ることをお勧めします-私たちの意見では、自動ワードプロセッシングで最も有用なコースの1つです。 さらに練習して問題を解決したい場合は、 Beeline Data Schoolへようこそ。3番目のセットは1月25日に始まります。