/transformer-copy

日本語文法誤り訂正ツール

Primary LanguagePython

transformer-copy

論文

小川 耀一朗, 山本 和英. 「日本語誤り訂正における誤り傾向を考慮した擬似誤り生成」. 言語処理学会第26回年次大会 https://www.anlp.jp/proceedings/annual_meeting/2020/pdf_dir/F2-3.pdf

デモサイト

https://app.jnlp.org/gec/

gec

ディレクトリ構成

  • app
    • アプリケーションのソースコード
  • corpus_scripts
    • データセットの前処理などのスクリプト
  • data
    • 使用するデータセットをここに入れる
  • data_art
    • 擬似誤り生成したデータをここに入れる
  • dicts
    • 語彙の辞書をここに入れる
    • 実験で使用する分割単位に対応した辞書が必要になる
  • out
    • data_bin
      • train,validデータセットのバイナリファイル
    • data_bin_art
      • pseudoデータセットのバイナリファイル
    • data_raw
      • testデータセットのrawファイル
    • log
      • ログファイル
    • models
      • モデルファイル
    • results
      • generateの結果

実行手順

dataset

使用するデータセットを用意する

手順:

  • データセットをセグメント(単語分割等)する
  • train, valid, testに分割する
  • 誤り文側と正解文側でファイルを分ける
  • dataディレクトリに配置する
  • ファイル名の例:
    • corpus.train.src # 訓練データの誤り文側
    • corpus.train.tgt # 訓練データの正解文側
    • corpus.valid.src # 開発データの誤り文側
    • corpus.valid.tgt # 開発データの正解文側

alignment

align.shを実行し、アライメントファイルを作成する fast_alignmosesdecoderを事前にインストールしておき、そのパスを指定する必要がある

generate pseudo data

noise.shを実行し、擬似誤りデータセットを生成する

preprocess

preprocess.shを実行し、データセットの前処理を行う 訓練データ(train, valid)はpreprocess_train.sh、評価データはpreprocess_test.shのように分けている 前処理されたデータセットはout/data_binもしくはout/data_rawに出力される

pretrain

pretrain.shを実行し、データセット等を指定してpre-trainingを行う コマンド自体はtrain.shと同じで、オプションが異なる 学習済みモデルはout/modelsに保存される

train

train.shを実行し、データセット等を指定してtrainを行う pretrainモデルを指定してfine-tuningしたい場合は--pretrained-model $pretrained_modelをオプションに追加する 学習済みモデルはout/modelsに保存される

generate

generate.shを実行し、学習済みモデルを使って文生成を行う data_rowsは評価データのリスト、epochsはどのエポックのモデルかのリストで、for文でそれぞれを一度に実行するようにしている 評価データのM2ファイルを用意しておく必要がある。ERRANTerrant_parallelを使用してM2ファイルを作成する。 python2を実行できるようにしておく必要がある 生成データはout/resultsに保存される

参考

https://github.com/zhawe01/fairseq-gec