テキストモデレーション:データサイエンティストエチケットレッスン

こんにちは、Habr!



この記事から、ロシア農業銀行の金融技術開発センターで解決する課題であるデータサイエンスに関する一連の記事の公開を開始します。



昨年、Rosselkhozbankは、農産業団地内の企業向けのエコシステムの作成と開発を発表しました。エコシステムの基本的なサイトの1つであるOurFarmingについて、いくつかの便利なタスクを実行することにしました。これについては、以下で説明します。







Svoe Farmezstvoサイトは、ロシア全土の最大のサプライヤーからの農業生産者向けの商品の市場です。このサイトには、植物保護製品、肥料、種子、農業機械など、農家にとって最優先のカテゴリーの商品が含まれています。何千ものサプライヤーが、販売を目的として自社製品に関する情報をアップロードしています。そしてもちろん、ダウンロードするコンテンツの品質をチェックするプロセスを実装する必要があります。この点で、テキストおよびグラフィック情報を事前にモデレートするための独自のツールを作成することにしました。



彼らは何をしていたのですか?



この記事では、当行のタスクのために特別に作成されたMIPTラボと協力して、テキストコンテンツを高精度で事前モデレートできるツールを開発した方法について説明します。



私たちの目標は非常に単純に聞こえました。作成したツールは、テキストをサイトへの配置に受け入れられるもの(クラス0)または受け入れられないもの(クラス1)として自動的に分類する必要があります。テキストがどのクラスに属しているかをアルゴリズムが明確に理解できない場合は、手動でモデレートするためにテキスト(テキスト)を送信します。



私たちにはテキスト処理のタスクがあります。つまり、呪い、侮辱、法律で禁止されているさまざまなコンテンツ、および単にサイトへの配置が許可されないテキストなど、あらゆる意味で「有毒」なテキストをフィルタリングする必要があります。



私たちが開発したアルゴリズムは、入力として一連のテキストを受け取り、0から1までの数値(テキストが「有毒」である程度または確率)を生成することを期待しています。この数値が1に近いほど、コメントの毒性が高くなります。



有毒なテキストを検出する問題はまったく新しいものではなく、英語圏で非常に人気があることに注意してください。数年前、KaggleのToxic Comment ClassificationChallengeで同様の問題が解決されました。ロシア語の場合も同様の方法で解を得る必要がありますが、ロシア語は英語よりも構造的に複雑であるため、モデルの品質が低くなる可能性があります。パブリックドメインには、



マークアップされたロシア語のデータセットが1つだけあります本文中の毒性を検索します。また、侮辱(毒性の特殊なケース)を検索するためのデータセットを見つけることができました。さらに、農業ポータルから広告の例を収集し、それらを許容可能(クラス-0)としてマークしました。



私たちが設定したタスクは、与えられた農業テーマの点で非常にユニークであることが判明しました。その特異性は、日常生活では侮辱であるという言い回しは、農業に関しては必ずしもそうではないという事実にあります。ありふれた例から次のことが引用できます。「鼻を刺さないでください」-テキストは明らかに受け入れられませんが、「豚の鼻」のあるテキストはサイトに配置できます(コンテキストによって異なります)。同じことが家畜や植物の特定の亜種にも当てはまります。



このようなテキスト分類の問題を解決することについて話すと、実際、最も単純なモデル(線形)でもすでに良い結果が得られますしかし、いつものように、より高い品質を達成するために、ニューラルネットワークを使用します。このような問題を解決するための(この記事の執筆時点で)最も人気のあるアーキテクチャはBERTです。上記のKaggleコンテストの時点では、このアーキテクチャは存在しなかったため、他のアーキテクチャが使用されていました。しかし、後でこのタスクはBERTの助けを借りて正常に解決されました。



どうやってやったの?



最も興味深い部分、つまり問題の解決に移りましょう。ツールの「アーキテクチャ」について少し考えた後、辞書検索(わいせつな語彙のフィルターとして)、ロジスティック回帰(基本的なソリューションとして)、BERT(より高度なソリューションとして)の3つのモデルを使用することにしました。



一般的なスキーム







ソリューションの一般的なスキームは次のようになります。「ブラックボックス」内で、テキストは最初に、卑猥な単語(説明的な表現)の辞書に基づく素朴な分類子に入ります。ここでは、「悪い」単語を含むテキストはすぐに切り取られます(毒性は常に1つです( 1)第1段階を通過したテキストは、より複雑なニューラルネットワークモデルに分類され、毒性の程度が示されます。ニューラルネットワークモデルに障害が発生した場合は、より単純なものに置き換えられます。つまり、ロジスティック回帰です。つまり、いずれの場合も、単純ではない結果が得られます。 。



次に、各コンポーネントについて詳しく見ていきましょう。



ナイーブ分類子



ここではすべてが非常に単純です。卑猥な語彙の辞書によると、テキストにこれまたはその「悪い」単語が含まれているかどうかを理解するのは非常に簡単です。



つまり、この段階では、MLモデル自体がなくても、「悪い」単語を含むテキストをすぐに取り除くことができます。しかし、そのような辞書の単語がテキストで使用されていないが、それにもかかわらず、テキストがポータルへの投稿に受け入れられない場合はどうなりますか?ロジスティック回帰とBERT'aを使用してこの問題を解決してみましょう。



ロジスティック回帰



最も単純なモデルは、利用可能なデータに基づいて値を予測します。このモデルのテキストベクトルは、nltkのTF-IDFとTweetTokenizerを使用して取得されます。知られているように、そのようなモデルは、ロジスティック関数を使用してテキスト毒性の確率を推定することを可能にします。私たちのアーキテクチャでは、ロジスティック回帰はニューラルネットワークを「保証」します。



素晴らしくてひどいBERT



DeepPavlovから 事前にトレーニングされたRuBertモデルを使用し、マークアップされたテキストでさらにトレーニングしました。詳細に立ち入ることなく、予測プロセスは次のとおりです。





私たちは構築し、構築し、そして最終的に構築しました!



お気に入りの指標である精度、ROC-AUC、F1メジャーを使用して品質を評価しました。延期されたサンプルの最終的な品質メトリックは次のとおりです。



アルゴリズム/メトリック

ナイーブ

BERT

LR

ナイーブ→BERT

ナイーブ→LR

正確さ

0.854

0.901

0.865

0.909

0.879

ROC-AUC

0.782

0.960

0.921

0.963

0.939

F1-メジャー

0.722

0.840

0.800

0.855

0.824



動作速度:提示されたものの中で最も遅いアルゴリズムとしてBERT処理の場合、GPU(GeForce 1080Ti)で毎分約2800テキスト。



予想どおり、BERTを使用したメトリックは、それほどではありませんが、わずかに良くなりました。



どのような結論を導き出しましたか



結論として、私はいくつかの重要な側面に注意したいと思います。それなしでは、私たちの意見では、そのようなソリューションを産業モードで立ち上げることは不可能です。



  1. テキストのマークアップに関するタスクの詳細を常に考慮する必要があります。
  2. モデルがその決定を「疑う」場合に備えて、テキストの手動モデレーションを提供する必要があります。不適切なコンテンツが製品に含まれることを望まないでしょう。
  3. 追加のトレーニングのために、前の段落から手書きのテキストを送信する必要もあります。したがって、モデルを小さなステップで改善し、時間の経過とともに手動モデレート中の作業量を減らすことができます。
  4. 問題を解決するには、統合されたアプローチを使用することをお勧めします。辞書の最も単純な「モデル」でさえ、すでに良い結果をもたらす場合があります。
  5. タスクに基づいて最適なモデルを選択してください。私たちの場合、ロジスティック回帰よりもコンテキストによく反応するため、BERTを選択しました。


清聴ありがとうございました!



次の記事では、エコシステムの同じプラットフォームであるファーミングでの画像の事前モデレーションの経験を共有します。



All Articles