田中コーパスとは何か
故田中康仁教授が作られた日英対訳コーパス(パラレルコーパス)。学生に1人あたり300個の文章を翻訳するように言って数年かけて収集したもの。その後、重複の削除などを経て15万文程度までに縮小した。
特長
・146,784文が日本語と英語の両方で書かれている。
・翻訳者が1人ではない。
・短いセンテンスが大半。英文の長さは平均7.72語。最長で45語。
・40%が会話文。
・日本人の大学生が翻訳したため、たまに誤訳が混ざっている。
・コーパスには以下のような文章も含まれるので処理の際は注意。
彼のメールアドレスは hirosey@genet.co.jp です。
ヒントの ***** の数と語の中の字数とは関係がありません。
回答にはアンカーを必ずつけて下さい。半角で ">>"+数字(例: >>1)です。
アートファイル(.art)の使用法がわかりません。
魔力(Magic):魔法を使うために必要な能力値。 魔法を使うと減少するが、時間で回復する。
私どものウェブサイトhttp://www.example.comは、あなたに必要な情報を全てお伝えします。
入手方法
Tanaka Corpus - EDRDG WikiのDownloadsのcomplete version (UTF-8)をダウンロードして、解凍。
example.uftをexample.txtとかにファイル名を変更してエディタで開く。
なお、メモ帳で開こうとすると開けないと思う。テキストエディタのAtomだと開けることは確認した。
入手方法2
odashiさんが独自に田中コーパスから5万文を抽出したもの。
GitHub - odashi/small_parallel_enja: 50k English-Japanese Parallel Corpus for Machine Translation Benchmark.
日英の機械翻訳に簡単に使えるコーパスがなくて困ってる人、とりあえず以前作ったsmall_parallel_enjaが使えますよ。単語分割済みで普通のencoder-decoderなら1GPU20分くらいで学習が終わって、BLEUも変な値にならないので、手法を書く→試す、のループが高速に回せます。https://t.co/JcDkPrOv7q
— 機械翻訳まるでわからん (@odashi_t) 2018年7月11日
@gae1202 こんにちは。件のデータはニューラルネット翻訳用にかなり整形しています。具体的にはKyTeaとStanford Tokenizerで単語分割後、単語数が一定以上の例、対訳間で単語数が極端に異なる例、コーパス中に一定回未満しか出現しない単語を含む例を除外しています。
— 機械翻訳まるでわからん (@odashi_t) 2016年1月8日
よく使う前処理
シャッフル
perl -MList::Util=shuffle -e 'print shuffle(<>)' < tanaka_corpus.txt > tanaka_corpus_s.txt
※15万行のファイルをshufでシャッフルしようとするとターミナルの動作が停止する。
各行を日本語ファイル(.ja)と英語ファイル(.en)に分割するとき
cut -f1 処理前のファイル名.txt| sed 's/^A: //' > tanaka.ja cut -f2 処理前のファイル名.txt| sed 's/#.*$//' > tanaka.en
バリデーション用(1500行)とテスト用(1500行)に分割して残りを学習用にするとき
sed -n -e '1,1500p' tanaka.en > dev.en sed -n -e '1,1500p' tanaka.ja > dev.ja sed -n -e '1501,3000p' tanaka.en > test.en sed -n -e '1501,3000p' tanaka.ja > test.ja sed -e '1,3000d' tanaka.ja > train.ja sed -e '1,3000d' tanaka.en > train.en
注:分かち書きしてないのでOpenNMTとかにそのまま投入しないこと
おまけ
#わかちがき mecab -Owakati 入力ファイル > 出力ファイル #田中コーパス全体の単語の出現頻度 mecab テキストファイル名.txt | cut -f 1 | sort | uniq -c | sort -r -n #先頭1の行 grep '^1 ' 入力ファイル > 出力ファイル #行頭空白削除 sed -e 's/^[ ]*//g' 入力ファイル > 出力ファイル
自然言語分野の機械学習の勉強におすすめの本
機械学習の本は普通にややこしい数式がガーッと書いてあるだけのやつが多いが、これは割と説明も豊富でよかった。当然、1ページを読むのにすごい時間がかかるが、頑張って読めば基本的な事項が身に付いた。TransformerやAttentionについても触れてあるのでよかった。
参考資料
・ファイルの行をランダムで抽出するワンライナー
ファイルの行をランダムで抽出するワンライナー - Qiita
・Mosesの使い方
田中コーパスの前処理が掲載されている
Mosesの使い方 - Qiita
http://ldl.ic.kanagawa-it.ac.jp/ioroi/programer/wordcount/wordcount.html