NLPタスクの90を解決する方法自然蚀語凊理のチュヌトリアル

あなたが誰であるかは関係ありたせん-実瞟のある䌚瀟であっおも、最初のサヌビスを開始しようずしおいる堎合でも、い぀でもテキストデヌタを䜿甚しお補品をテスト、改善、機胜拡匵できたす。



自然蚀語凊理NLPは、テキストデヌタに基づいお意味の怜玢ず孊習に埓事する、積極的に発展しおいる科孊分野です。



この蚘事はどのように圹立ちたすか



過去1幎間、 Insightチヌムは数癟のプロゞェクトに参加し、米囜の倧手䌁業の知識ず経隓を組み合わせおきたした。 圌らはこの研究の結果を蚘事にたずめたした。蚘事の翻蚳はあなたの前にあり、機械孊習の最も䞀般的な応甚問題を解決するためのアプロヌチを掚枬したした。



機胜する最も単玔な方法から始めたす。そしお、 機胜゚ンゞニアリング 、単語ベクトル、ディヌプラヌニングなどのより埮劙なアプロヌチに埐々に進みたす。



蚘事を読んだ埌、次の方法を知るこずができたす。





投皿はりォヌクスルヌ圢匏で曞かれおいたす。 たた、高性胜暙準アプロヌチのレビュヌずしお芋るこずもできたす。





オリゞナルのJupyterノヌトブックが元の投皿に添付され、蚘茉されおいるすべおのテクニックの䜿甚を瀺しおいたす。 蚘事を読むずきに䜿甚するこずをお勧めしたす。



機械孊習を䜿甚しおテキストを理解しお䜿甚する



自然蚀語凊理ぱキサむティングな 新しい 結果を提䟛し、非垞に幅広い分野です。 ただし、 Insightは、他のアプリケヌションよりもはるかに䞀般的な、実甚的なアプリケヌションの次の重芁な偎面を特定したした。





むンタヌネット䞊のNLPのトピックに関する科孊出版物やトレヌニングマニュアルは倚数ありたすが、今日では、これらの問題の解決策を非垞に基本的に怜蚎しながら、NLPタスクを効果的に凊理する方法に関する本栌的な掚奚事項やヒントはほずんどありたせん。



ステップ1デヌタを収集する



サンプルデヌタ゜ヌス



機械孊習タスクはすべお、デヌタから始たりたす-それが電子メヌルアドレス、投皿、たたはツむヌトのリストであるかどうか。 テキスト情報の䞀般的な゜ヌスは次のずおりです。





゜ヌシャルメディア灜害デヌタセット



説明されおいるアプロヌチを説明するために、 CrowdFlowerから芪切に提䟛されたSocial Media in Disaster デヌタセットを䜿甚したす 。



著者は、「発火䞭」、「怜疫」、「パンデモニりム」などのさたざたな怜玢ク゚リを䜿甚しお遞択された1䞇件を超えるツむヌトをレビュヌしたした。 次に、ツむヌトが灜害むベントに関連しおいたかどうかこれらの蚀葉を䜿ったゞョヌク、映画のレビュヌ、たたは灜害に関連しないものずは察照的にに泚目したした。



無関係のトピック たずえば、映画に関連するツむヌトずは察照的に、どのツむヌトが灜害むベントに関連するかを刀断するタスクを蚭定したす。 なぜこれをしなければならないのですか 朜圚的な甚途は、サンドラヌ提督の最新の映画に泚意を払う必芁がある緊急の緊急職員ぞの排他的な通知です。 このタスクの特定の難点は、これらのクラスの䞡方に同じ怜玢条件が含たれおいるため、より埮劙な違いを䜿甚しおそれらを分離する必芁があるこずです。



次に、灜害のツむヌトを「灜害」ず呌び、それ以倖のすべおのツむヌトを「無関係 」ず呌びたす。



ラベル



デヌタにはタグが付けられおいるため、ツむヌトが属するカテゎリがわかりたす。 リチャヌド・゜ッチャヌが匷調するように、通垞、教垫なしで耇雑な教育方法を最適化しようずするよりも、モデル化するのに十分なデヌタを芋぀けおマヌクアップする方が速く、簡単で、安䟡です。





教垫なしで機械孊習タスクを定匏化するのに1か月を費やすのではなく、デヌタをマヌクアップしお分類噚をトレヌニングするのに1週間を費やすだけです。



ステップ2.デヌタを消去する



ルヌルナンバヌ1「あなたのモデルは非垞に良くなるこずができたすが、

あなたのデヌタはどれくらい良いですか "



プロのデヌタサむ゚ンティストの重芁なスキルの1぀は、次のステップであるモデルたたはデヌタの操䜜を理解するこずです。 実践が瀺すように、最初はデヌタ自䜓を確認しおからクリヌンアップする方がよいでしょう。

クリヌンなデヌタセットを䜿甚するず、モデルは重芁な属性を孊習でき、無関係なノむズを再孊習できたせん。



以䞋は、デヌタをクリアするために䜿甚されるチェックリストです詳现はコヌドに蚘茉されおいたす 。



  1. 関係のない文字たずえば、英数字以倖の文字をすべお削陀したす。

  2. テキストを個々の単語に分割しおトヌクン化したす。
  3. 無関係な単語を削陀したす-䟋えば、TwitterのメンションやURL。

  4. すべおの文字を小文字に倉換しお、「hello」、「hello」、および「hello」ずいう単語が同じ単語ず芋なされるようにしたす。

  5. スペルミスや代替スペルの単語たずえば、cool / cool / coolを組み合わせるこずを怜蚎しおください

  6. lemmatizingを怜蚎しおください。 ぀たり 、1぀の単語のさたざたな圢匏を蟞曞圢匏に枛らしたすたずえば、「machine」、「by machine」、「machines」などの代わりに「machine」


これらの手順を実行しお远加の゚ラヌを確認したら、クリヌンなタグ付きデヌタを䜿甚しおモデルのトレヌニングを開始できたす。



ステップ3.デヌタの適切なビュヌを遞択したす。



入力ずしお、機械孊習モデルは数倀を受け入れたす。 たずえば、画像を操䜜するモデルは、各カラヌチャネルの各ピクセルの匷床を衚瀺するマトリックスを取りたす。







数字の配列ずしお衚される笑顔



デヌタセットは文のリストであるため、アルゎリズムがデヌタからパタヌンを抜出するには、たずアルゎリズムがそれを理解できる方法でそれを提瀺する方法を芋぀ける必芁がありたす。



ワンホット゚ンコヌディング「単語の袋」



コンピュヌタヌでテキストを衚瀺する自然な方法は、各文字を個別に数字ずしお゚ンコヌドするこずですこのアプロヌチの䟋はASCII゚ンコヌドです。 このような単玔な衚珟を分類噚に「フィヌド」する堎合、ほずんどのデヌタセットでは䞍可胜なデヌタのみに基づいお、単語の構造をれロから研究する必芁がありたす。 したがっお、より高いレベルのアプロヌチを䜿甚する必芁がありたす。



たずえば、デヌタセット内のすべおの䞀意の単語の蟞曞を䜜成し、蟞曞内の各単語に䞀意のむンデックスを関連付けるこずができたす。 その埌、各文は蟞曞にある䞀意の単語の数ず同じ長さのリストに衚瀺でき、このリストの各むンデックスには、この単語が文に出珟する回数が栌玍されたす。 このモデルは、 Bag of Wordsず呌ばれたす。これは、文の語順を完党に無芖するマッピングであるためです。 以䞋はこのアプロヌチの実䟋です。







「単語の袋」の圢での文章の提瀺。 元の文は巊偎に瀺され、そのプレれンテヌションは右偎にありたす。 ベクトルの各むンデックスは、1぀の特定の単語を衚したす。



ベクトル衚珟を芖芚化したす。



゜ヌシャルメディア灜害蟞曞には、玄20,000語が含たれおいたす。 これは、各文が長さ20,000のベクトルに反映されるこずを意味したす。各文には蟞曞の小さなサブセットのみが含たれるため、このベクトルには䞻にれロが含たれたす。



ベクトル衚珟 埋め蟌み がタスクに関連する情報をキャプチャするかどうかたずえば、ツむヌトが灜害に関連するかどうかなどを調べるには、それらを芖芚化しお、これらのクラスがどの皋床分離されおいるかを確認する必芁がありたす。 蟞曞は通垞非垞に倧きく、20,000次元のデヌタ芖芚化は䞍可胜であるため、 䞻成分法 PCAのようなアプロヌチは、デヌタを2次元に投圱するのに圹立ちたす。







「単語の袋」のベクトル衚珟の可芖化



結果のグラフから刀断するず、2぀のクラスが本来のように分離されおいるようには芋えたせん。これは、ビュヌの機胜であるか、単に次元を瞮小する効果である可胜性がありたす。 「単語の袋」の機胜が圹立぀かどうかを調べるために、それらに基づいお分類噚をトレヌニングできたす。



ステップ4.分類



初めおタスクを開始するずきは、この問題を解決できる最も単玔な方法たたはツヌルから開始するのが䞀般的です。 デヌタ分類に関しおは、汎甚性ず解釈の容易さから、最も䞀般的な方法はロゞスティック回垰です。 モデルから最も重芁な係数をすべお簡単に抜出できるため、トレヌニングは非垞に簡単で、その結果を解釈できたす。



デヌタをトレヌニングサンプルに分割しお、モデルをトレヌニングするために䜿甚したす。テストサンプルは、これたで芋たこずのないデヌタに察しおモデルがどれだけうたく䞀般化されるかを確認したす。 トレヌニング埌、粟床は75.4になりたす。 そんなに悪くない 最も頻繁なクラス「無関係」を掚枬するず、57しか埗られたせん。



ただし、75の粟床の結果で十分な堎合でも、理解しようずせずに本番環境でモデルを䜿甚しないでください。



ステップ5.怜査



゚ラヌマトリックス



最初のステップは、モデルで発生する゚ラヌの皮類ず、今埌発生する可胜性の䜎い゚ラヌの皮類を理解するこずです。 この䟋の堎合、 停陜性の結果は無関係なツむヌトを倧灜害ずしお分類し、 停陰性の結果は倧灜害を無関係なツむヌトずしお分類したす。 すべおの朜圚的なむベントに察応するこずが優先される堎合は、停陰性の応答を枛らしたいず思いたす。 ただし、リ゜ヌスが限られおいる堎合は、䜎い停陰性率を優先しお、誀報の可胜性を枛らすこずができたす。 この情報を芖芚化する良い方法は、モデルで䜜成された予枬ず実際のラベルを比范する゚ラヌマトリックスを䜿甚するこずです。 理想的には、このマトリックスは巊䞊から右䞋隅に向かう察角線になりたすこれは、予枬が真実ず完党に䞀臎したこずを意味したす。







私たちの分類噚は、停陜性よりも停陰性の結果を比䟋的に䜜成したす。 蚀い換えれば、私たちのモデルで最もよくある間違いは、倧灜害を䞍適切ず分類するこずです。 停陜性が法執行機関の高コストを反映しおいる堎合、これは分類噚にずっお適切なオプションである可胜性がありたす。



モデルの説明ず解釈



モデルを怜蚌しおその予枬を解釈するには、意思決定に䜿甚する単語を怜蚎するこずが重芁です。 デヌタにバむアスがかかっおいる堎合、分類噚はサンプルデヌタの正確な予枬を行いたすが、モデルは実際の䞖界でそれらを十分に䞀般化できたせん。 以䞋の図は、灜害クラスず無関係なツむヌトの最も重芁な単語を瀺しおいたす。 「単語の袋」ずロゞスティック回垰を䜿甚する堎合、モデルが予枬に䜿甚する係数を単玔に抜出しおランク付けするため、単語の意味を反映したチャヌトを䜜成するこずは難しくありたせん。







蚀葉の袋蚀葉の重芁性



分類子はいく぀かのパタヌン hiroshima- "Hiroshima"、 虐殺 -"massacre"を正しく芋぀けたしたが、圌がいく぀かの意味のない甚語 "heyoo"、 "x1392"で再蚓緎したこずは明らかです。 そのため、今では「単語の袋」がさたざたな単語の巚倧な蟞曞を扱っおおり、これらの単語はすべお圌にずっお同等です。 ただし、これらの単語の䞀郚は非垞に䞀般的であり、予枬にノむズを远加するだけです。 したがっお、単語の頻床を考慮できるように文を提瀺する方法を芋぀け、デヌタからより有甚な情報を取埗できるかどうかを確認したす。



ステップ6.蟞曞の構造を怜蚎する



TF-IDF



モデルが意味のある単語に焊点を圓おるのを助けるために、「ワヌドバッグ」モデルの䞊にスコアリングするTF-IDF  甚語頻床、逆文曞頻床 を䜿甚できたす。 TF-IDFは、デヌタセット内のそれらがどれほどたれであるかに基づいお重み付けを行い、あたりにも䞀般的でノむズを远加する優先語を枛らしたす。 以䞋は、新しいビュヌを評䟡するための䞻成分法の予枬です。







TF-IDFを䜿甚したベクトル衚珟の可芖化。



2぀の色の間の明確な分離を芳察できたす。 これは、分類噚が䞡方のグルヌプを分離しやすくなるこずを瀺しおいたす。 結果がどのように改善されるかを芋おみたしょう。 新しいベクトル衚珟で別のロゞスティック回垰をトレヌニングするず、 76.2の粟床が埗られたす。



非垞にわずかな改善。 モデルがより重芁な単語を遞択し始めたのかもしれたせん。 この郚分で埗られた結果が良くなり、モデルに「チヌト」を蚱可しない堎合、このアプロヌチは改善ず芋なすこずができたす。







TF-IDF蚀葉の重芁性



モデルによっお遞択された単語は、実際にはるかに関連性がありたす。 テストセットのメトリックがわずかに増加したずいう事実にもかかわらず、顧客ずやり取りする実際のシステムでモデルを䜿甚するこずにより自信が持おるようになりたした。



ステップ7.セマンティクスの適甚



Word2vec



私たちの最新モデルは、最も意味のある蚀葉を「぀かむ」こずができたした。 ただし、本番環境で圌女をリリヌスするず、トレヌニングサンプルで芋぀からなかった単語に遭遇する可胜性が高く、トレヌニング䞭に非垞に類䌌した単語を芋たずしおも、これらのツむヌトを正確に分類するこずはできたせん。



この問題を解決するには、単語のセマンティック意味の意味を把握する必芁がありたす。぀たり、「良い」ず「肯定的な」ずいう蚀葉は「アプリコット」ず「倧陞」ずいう蚀葉よりも近いこずを理解するこずが重芁です。 Word2Vecツヌルを䜿甚しお、単語の意味を䞀臎させたす。



事前トレヌニングの結果を䜿甚する



Word2Vecは、単語の連続マッピングを芋぀けるための手法です。 Word2Vecは、膚倧な量のテキストを読んでから、どの単語が同様の文脈で珟れるかを芚えるこずで孊習したす。 十分なデヌタでトレヌニングした埌、Word2Vecは蟞曞内の各単語に察しお300次元のベクトルを生成したす。この堎合、類䌌した意味を持぀単語は互いに近くに配眮されたす。



オヌプンアクセスでレむアりトされた単語の連続ベクトル衚珟のトピックに関する出版物の著者は、以前に非垞に倧量の情報で蚓緎されたモデルにアクセスし、それをモデルで䜿甚しお、単語の意味的意味に関する知識をもたらすこずができたす。 事前にトレヌニングされたベクタヌは、この蚘事で蚀及されおいるリポゞトリから取埗できたす。



提䟛レベルの衚瀺



分類子の文の添付ファむルをすばやく取埗する方法は、文のすべおの単語のWord2Vec評䟡を平均するこずです。 これは以前の「単語の袋」ず同じアプロヌチですが、今回はセマンティックセマンティック情報を保持しながら、文の構文を倱うだけです。







Word2Vecでの文章のベクタヌ送信



䞊蚘の手法を䜿甚した埌の新しいベクトル衚珟の芖芚化を次に瀺したす。







Word2Vecのベクトル衚珟の可芖化。



, . ( ), 77,7% — ! .





, , , . , - , 300 , .



, — . , LIME , , , .



LIME



LIME Github . , , ( — ) , .



.







«».







.



, , . , LIME , , . , , , .







, . , , .



8. end-to-end



. , , . , , , . Word2Vec, GloVe CoVe . .







(end-to-end, )



( CNNs for Sentence Classification ) . , (CNN) -, , , NLP (, LSTM - Encoder/Decoder ). , . , « » « ».



( ), , , , , 79,5% . , , , , , , . , .



結論ずしお



, , :





, , — , ; , .



, , , , . ++ Highload++ , , . , , :



  • / (Allianz)

  • / (Superjob)

  • / (1-)

  • / (Datastars)



++ Highload++ Siberia , , , .




All Articles