メモです

メモです

田中コーパスの説明

田中コーパスとは何か

故田中康仁教授が作られた日英対訳コーパス(パラレルコーパス)。学生に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.

よく使う前処理

 
シャッフル

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についても触れてあるのでよかった。