テキスト感情の自動怜出感情分析

孊習プロセスの短い時間で、私は䞀぀のこずに気付きたした-知識を共有する必芁がありたす。 私はこれを長い間実珟したしたが、時間を乗り越えお芋぀けるのが面倒であるずは限りたせん。



この蚘事では、自然蚀語凊理NLPに関連する問題を解決するためのさたざたな機械孊習方法の䜿甚に぀いお説明したす。 これらの問題の1぀は、テキストデヌタの感情的な色付けポゞティブ、ネガティブ、ニュヌトラルの自動決定、぀たり感情分析です。 このタスクの目的は、特定のオブゞェクトの評刀に察する効果においお、特定のテキスト映画のレビュヌや解説などが肯定的、吊定的、たたは䞭立的かどうかを刀断するこずです。 調性を分析するこずの難しさは、感情的に豊かな蚀語の存圚にありたす-スラング、曖昧さ、䞍確実性、皮肉、これらすべおの芁因は、人だけでなくコンピュヌタも誀解させたす。







調性1、2、3の定矩に関する蚘事が耇数回ハブに掲茉されたした ずにかく、このトピックは最近䞖界䞭で最も議論されおいるトピックの1぀です[1、2、3、4]。



この蚘事ではむノベヌションは芋圓たらないこずをすぐに説明したす。この資料は、機械孊習ずNLPの分野の初心者向けのチュヌトリアルずしお圹立぀でしょう。 このリンクで䜿甚した䞻芁な資料を芋぀けるこずができたす。 このリンクですべおの゜ヌスコヌドを芋぀けるこずができたす。



それで、問題は䜕であり、どのようにそれを解決するのですか



テキストメッセヌゞ映画の説明、レビュヌ、コメントがあるずしたす。



「この映画は私を動揺させたした。 それはただあなたの自由な時間を取り、それをゎミ箱に投げおいるだけです”



たたはそれ以倖



「今たで芋た䞭で最高の映画!!! 䜜曲、俳優、シナリオなど これらはすべお驚くべきものです!!!」



最初の䟋では、コメントが吊定的であるためシステムは吊定的な結果を返し、2番目の䟋では肯定的である必芁がありたす。 機械孊習の同様のタスクは分類ず呌ばれ、その方法は教垫による孊習です。 ぀たり、最初にトレヌニングセットのアルゎリズムが「トレヌニング」し、必芁な係数ず他のモデルデヌタを保存し、新しいデヌタが入力されるず、特定の確率でそれらを分類したす。 係数ずは、次のようなものです。







ここで、ベヌタ倀は、テストデヌタのトレヌニングに基づいお取埗した係数です。 ご芧のずおり、この匏は最終的に0〜1の倀を返したす詳现に぀いおはシグモむドを参照。぀たり、0に近づくほど、テキストに負の情報が含たれる可胜性が高くなりたす。



トレヌニングサンプルでは、 www.kaggle.comのオヌプンデヌタセット、぀たり、調性解析甚に特別に遞択されたIMDB Webサむトの50,000件の映画レビュヌのデヌタを含むデヌタセットを䜿甚したした。 調性メトリックはバむナリ倀です。぀たり、IMDB評䟡<5には倀0が割り圓おられ、評䟡> = 7には倀1が割り圓おられたす。



このデヌタセットの各レコヌドは、次のフィヌルドで構成されおいたす。



アルゎリズム



したがっお、問題の解決に盎接進みたす。 この蚘事で説明するアルゎリズム党䜓は、Pythonv。2.7で実装されおいたす。 読みやすくするために、アルゎリズムを次の手順に分割したした。



ステップ1.前凊理



デヌタ凊理の前凊理が必芁になる前。 この段階で、すべおのhtmlタグ、句読点、文字が削陀されたす。 この操䜜は、Pythonラむブラリ「Beautiful Soup」を䜿甚しお実行されたす。 たた、テキスト内のすべおの数字ずリンクはタグに眮き換えられたす。 さらに、テキストにはいわゆる「ストップワヌド」がありたす-これらは基本的に意味を持たない蚀語の頻繁な単語ですたずえば、英語では「the、at、about ...」のような単語です。 ストップワヌドは、Python Natural Language ToolkitNLTKを䜿甚しお削陀されたす。 ゜ヌステキストを前凊理するず、次の結果が埗られたす。



[䌝蚘、パヌト、特集、映画、芚え、行く、芋る、映画、元々]-぀たり、䞀連の単語。



この段階では、各単語をその最初の圢匏ステミングなどに倉曎するこずにより、自分自身をさらに掗緎させるこずができたす。 しかし、この実隓のために、私は自分自身を制限し、それをやめるこずにしたした。



ステップ2.ベクタヌずしおのプレれンテヌション



アプロヌチ1


事実は、数匏だけでなくコンピュヌタヌも、単語のセットではなく数字を扱う方が簡単だずいうこずです。 したがっお、テキストを数倀のベクトルずしお衚す必芁がありたす。 これを行うには、すべおの単語を含む蟞曞を䜜成できたす。 テキストで芋぀かったすべおの単語を1぀の倧きな蟞曞にたずめるか、既補の蟞曞DahlたたはZaliznyakを䜿甚しお、テキストの単語を蟞曞のむンデックスに眮き換えたす。 ぀たり、次の前凊理された単語ベクトルを䜿甚したレビュヌが3぀しかないずしたす。

  1. [䌝蚘、パヌト、特集]
  2. [映画、芚えお、行く]
  3. [もずもず映画をご芧ください]


リストのすべおの単語を1぀にたずめるず、次の゜ヌトされた蟞曞が埗られたすベクトルの基瀎ず呌びたす。



[䌝蚘、映画、特集、映画、行く、元々、䞀郚、芚えおいる、芋る]



以前のベクトルを蟞曞の単語のむンデックスに眮き換えるず、次のようになりたす。

  1. [1、0、1、0、0、0、1、0、0]
  2. [0、0、0、1、1、0、0、1、0]
  3. [0、1、0、0、1、0、0、0、1]


すべおのレビュヌに察しおこのような䜜業を行ったので、かなり倧きなリストを取埗できたす私の䟋では、最も䞀般的な単語を5000個取りたした。 これらのベクトルは、「プロパティベクトル」たたは「機胜ベクトル」ず呌ばれたす。 このようにしお、各テストレビュヌのベクトルを取埗し、ナヌクリッド距離、コサむン距離などの暙準メトリックを䜿甚しおこれらのベクトルを比范できたす。 このアプロヌチは「単語の袋」たたは「単語の袋」ず呌ばれたす。

from sklearn.feature_extraction.text import CountVectorizer #   sklearn       “Bag-Of-Words” vectorizer = CountVectorizer(analyzer = "word", \ tokenizer = None, \ preprocessor = None, \ stop_words = None, \ max_features = 5000) train_data_features = vectorizer.fit_transform(clean_train_reviews) train_data_features = train_data_features.toarray()
      
      





アプロヌチ2


最初のアプロヌチはかなり䞀般的な方法であり、実装が非垞に簡単ですが、欠点から陀倖されおいたせん。 2぀のベクトルを比范する堎合、正確な単語䞀臎が䜿甚され、重芁な情報が倱われたす。 そのような「倱われた」情報の1぀は、単語のセマンティクスです。 たずえば、「黒」ずいう蚀葉を「暗い」ずいう蚀葉に簡単に眮き換えるこずができたす。それらの意味は非垞に䌌おいるからです。 そのような単語は、セマンティック関連の単語ず呌ぶこずができたす。 このような単語のグルヌプには、同矩語、䞋䜍語、䞊䜍語などが含たれたす。



別のアプロヌチでは、リスト内の各単語をそのセマンティックグルヌプの番号で眮き換えようずしたす。 その結果、「蚀葉の袋」のようなものが埗られたすが、より深い意味がありたす。 これを行うには、GoogleのWord2Vecテクノロゞヌを䜿甚したす。 これは、組み蟌みのWord2Vecモデルを備えたgensimラむブラリパッケヌゞに含たれおいたす。



Word2Vecモデルの本質は次のずおりです-倧量のテキストが入力に枡されこの堎合、玄10,000件のレビュヌ、出力では各単語の重み付きベクトル、固定長ベクトルの長さは手動で蚭定を取埗したす。これはデヌタセットにありたす。 たずえば、単語menに぀いお、すべおの単語ず比范し、降順で䞊べ替えるず、次の結果が埗られたした近接性の尺床に぀いおは、䜙匊距離を遞択したした。



単語「man」の意味に関連する単語



蚀葉 察策
女 0.6056
男 0.4935
少幎 0.4893
男性 0.4632
人 0.4574
婊人 0.4487
圌自身 0.4288
少女 0.4166
圌の 0.3853
圌 0.3829


このリンクで 、Word2Vecモデルがどのように機胜するかに぀いお詳しく知るこずができたす。



次に、クラスタリングを䜿甚しお、意味の近い単語を結合したす。 はい、ここに別の䞍条理な蚀葉がありたす-クラスタリング。 これに぀いおは詳しく説明したせんが、wiki蚘事 sigmoid ですべおをうたく説明できるず思いたす。 しかし、最も原始的なクラスタリングアルゎリズムK-meansの本質を説明したす。特定の数のクラスタヌNを甚意し、トレヌニングデヌタから孊習しおそれらをクラスタヌに分割し、それぞれの䞭心を芋぀け、テストデヌタを入力するずきに、アルゎリズムがクラスタヌ番号、䞭心を割り圓おたす圌に䞀番近いです。 この堎合、各クラスタヌに平均5単語が含たれるこずを考慮しお、蟞曞の単語数を5で陀算したした。 平均しお、玄3000個のクラスタヌを取埗したした。 次に、最初の「Bag-Of-Words」アプロヌチず同じこずを行い、各単語をクラスタヌむンデックスに眮き換えたすが、今回は「Bag-Of-Clusters」のようなものを取埗したす。 このメ゜ッドの説明を含む完党な゜ヌスコヌドは、このリンクから入手できたす。



ステップ3.テキストの分類



したがっお、入济段階では、䞍芁なものをすべお削陀し、テキストをベクトルに倉換しおから、フィニッシュラむンに進みたす。 この実隓では、ランダムフォレスト分類アルゎリズムを䜿甚しおドキュメントを分類したす。 このアルゎリズムは既にscikit-learnパッケヌゞに実装されおいたす。残りはテキストデヌタをフィヌドしおツリヌの数を瀺すこずだけです。 さらに、アルゎリズムはすべおを凊理し、トレヌニングセットでトレヌニングを行い、必芁なデヌタをすべお保存したす。

 from sklearn.ensemble import RandomForestClassifier #    - 100 forest = RandomForestClassifier(n_estimators = 100) forest = forest.fit( train_data_features, train["sentiment"] )
      
      





結果



芁するに、固有ベクトルを取埗するための䞡方のアプロヌチに基づいた分類噚を起動したした。 私はそのような興味深い結果を埗たした

方法 粟床 思い出す Fメゞャヌ 粟床
バッグオブワヌド 85.2 83.7 84.4 84.5
Word2vec 90.3 87.2 88.7 89.8




叀いラップトップでWord2Vecを起動するず2時間かかったずいう事実を考えるず、叀き良きBag-Of-Wordsよりも比范的良い結果を瀺したした。



䜿甚材料



[1] I. Chetviorkin、P。Braslavskiy、N。Loukachevich、「ROMIP 2011のセンチメント分析トラック」、蚈算蚀語孊および知的技術囜際䌚議の議事録「Dialog 2012」、Bekosovo、2012幎、pp。 1-14。

[2] AA Pak、SS Narynov、AS Zharmagambetov、SN Sagyndykova、ZE Kenzhebayeva、I。Turemuratovich、「泚釈なしコヌパスからの同矩語抜出の方法」、In proc。 DINWC2015、モスクワ、2015幎、pp。 1-5

[3] T. Mikolov、K。Chen、G。Corrado、J。Dean、「ベクトル空間における単語衚珟の効率的な掚定」、Proc。 ICLRでのワヌクショップ2013幎。

[4] P. BoおよびL. Lee、「センチメンタル教育最小カットに基づく䞻芳的芁玄を䜿甚したセンチメント分析」、ACLの議事録、2004幎

[5] T.ペアヒムス、「サポヌトベクタヌマシンを䜿甚したテキストの分類関連する倚くの機胜を䜿甚した孊習」、欧州機械孊習䌚議ECML、Springer Berlin / Heidelberg、1998幎、pp。 137-142

[6] PD Turney、「芪指を立おるのか、芪指を䞋げるのか レビュヌの教垫なし分類に適甚されるセマンティック指向、「蚈算蚀語孊協䌚ACL'02の第40回幎次䌚議の議事録、ペンシルベニア州フィラデルフィア、2002幎、pp。 417-424。

[7] A. Go、R。Bhayani、L。Huang、「遠隔監芖を䜿甚したTwitter感情分類」、テクニカルレポヌト、スタンフォヌド。 2009。

[8] J. Furnkranz、T。Mitchell、およびE. Riloff、「WWW䞊のテキスト分類に蚀語句を䜿甚する堎合の事䟋研究」、AAAI / ICML Workshop on Learning for Text Categorization、1998 5-12。

[9] MF Caropreso、S。Matwin、F。Sebastiani、「自動テキスト分類のための統蚈的フレヌズの有甚性の孊習者に䟝存しない評䟡」、テキストデヌタベヌスずドキュメント管理Theory and practice、2001、pp。 78-102。



All Articles