見出し画像

NeuralClassifier の使い方メモ

NeuralClassifier: An Open-source Neural Hierarchical Multi-label Text Classification Toolkit はTencentが公開しているマルチラベルな文書分類問題用のpythonライブラリである。

詳しくは

https://github.com/Tencent/NeuralNLP-NeuralClassifier

を参照すること。

環境設定

pytorch に依存しているライブラリなので、あらかじめ以下のコマンドでinstallしておく。

pip install torch

また、作業用のディレクトリにレポジトリをcloneする。今回はzipをダウンロードして用いた。

実行方法

コマンドラインから.pyファイルをそれぞれ実行することで、学習、評価、予測を行う。

python train.py conf/train.json

conf/train.json に実行時の設定が記述されている。必要に応じて変更する。

python eval.py conf/train.json

で学習済みのモデルを評価できる。

各ラベルに対してprecision、 recall 、f value をまとめたものと混合行列を、それぞれ.txt形式で出力する。

conf/train.json の設定

各種モデルのハイパーパラメータや学習、評価時に利用されるモデルの選択について記述されている。

主に必要なのは、cpuかgpuの指定、入力データの情報、学習と評価に用いるモデルの選択に関しての記述になる。

入力データは指定の形式を守って作成し、パスを指定する。

モデルの指定は学習用のモデルの指定と評価用のモデルの指定が独立して別に存在するので、注意すること。

入力データの形式

JSON example:

{
   "doc_label": ["Computer--MachineLearning--DeepLearning", "Neuro--ComputationalNeuro"],
   "doc_token": ["I", "love", "deep", "learning"],
   "doc_keyword": ["deep learning"],
   "doc_topic": ["AI", "Machine learning"]
}
{
   "doc_label": ["Computer--MachineLearning--DeepLearning"],
   "doc_token": ["I", "love", "deep", "learning"],
   "doc_keyword": ["deep learning"],
   "doc_topic": ["AI", "Machine learning"]
}

この形式で作成すること。

厳密にはjsonの形式を守ってはいないので、pythonでデータを作成する際にはdictデータをjsonで出力する方法は取れない。諦めて、ファイルに一行ずつ書き込むのがよい。

またこの例ではマルチラベルの例を示しているが、シングルラベルの場合にも要素数が1のリスト形式とすることに注意する。


私にカフェオレを飲ませるためにサポートしてみませんか?