Google Researchが公開しているBERTの日本語を含んだ多言語モデルにて、日本語で記述されたテキストの二値分類を評価してみた結果と、それを再現するスクリプト群を公開しています。
0-setup.ipynbを実行すると、ライブドアニュースコーパスを取得し、GLUE BenchmarkのThe Corpus of Linguistic Acceptability (CoLA)と同じ構造のtsvファイルを生成します。 コーパスは9カテゴリのニュースから構成されていますが、そのうち「ITライフハック」と「家電チャンネル」の記事のタイトル(本文ファイルの3行目)のみを用います。記事数は全部で1734本となります。
前述の処理を実行した状態で0.1-setup.ipynbを実行すると、サブディレクトリswpが作成され、そこに「Sports Watch」と「Peachy」の記事タイトルを集めたデータセットが用意されます。
青空文庫から、芥川龍之介と宮沢賢治の著作を収集し、ある程度の長さの本文を下処理した結果をaozoraディレクトリ以下に用意してあります。 元となったデータへのURL一覧と、データの下処理を行うスクリプトも参考用として用意してあります。
run_cola.shを実行することで、ライブドアニュースコーパスデータ全体の8割を訓練データとしてCoLAタスクを訓練として実行し、1割の評価データにてモデルのaccuracyを評価します。 このスクリプトは以下のオプションを指定できます。
- -e ###: 訓練エポック数
- -p /path/to/python: 呼び出すpythonのパス
1-classifier-eval.ipynbにて、実際にepoch数10, 30, 3で実行した結果を残しています。
前述で説明したスクリプトに以下のオプションを追加することで、swp以下にあるデータを用いた訓練と評価を行うことができます。
- -s : ./swp 以下のtsvを参照し、結果も ./swp 以下に保存する
これを用いて訓練、評価した結果を1.1-classifier-eval.ipynbに残しています。
run_cola.shに-nを指定すると、事前学習モデルを読み込まないで訓練、評価を行います。結果は以下に残しています。
sklearnのTfidfVectorizerとMultinominalNBを使った分類器での評価結果を比較用に追加してあります。BERTのトークナイザを用いています。