概要
機械学習で使える日英対訳コーパスのひとつ、田中コーパスを使いやすくする前処理用のコードを書いた。
田中コーパス
「日本人の大学生が授業の一貫として集めた対訳文(多少のノイズあり)」(「日本語対訳データ」)。研究用・商用ともに無料で利用できる。
日本語文、英文とも短くまとまっていて、機械的処理には向いていそうである。日本語文は自然。英訳は少し教科書的で硬い感じはある。
田中コーパスはここからダウンロード可能。
中身を見るとこんな感じ。
A: ムーリエルは20歳になりました。 Muiriel is 20 now.#ID=1282_4707
B: は 二十歳(はたち){20歳} になる[01]{になりました}
A: すぐに戻ります。 I will be back soon.#ID=1284_4709
B: 直ぐに{すぐに} 戻る{戻ります}
A: すぐに諦めて昼寝をするかも知れない。 I may give up soon and just nap instead.#ID=1300_4727
B: 直ぐに{すぐに} 諦める{諦めて} 昼寝 を 為る(する){する} かも知れない
A: 愛してる。 I love you.#ID=1434_4851
B: 愛する{愛してる}
A: ログアウトするんじゃなかったよ。 I shouldn't have logged off.#ID=1442_4858
B: ログアウト~ 為る(する){する} ん[03] だ{じゃなかった} よ[01]
1対の対訳が A:
と B:
という2つ行に分かれて説明されている。対訳情報は A の行に置かれている。
対訳のみに関心がある場合、次のような形式に変換したいところだ。
ムーリエルは20歳になりました。 Muiriel is 20 now.
すぐに戻ります。 I will be back soon.
すぐに諦めて昼寝をするかも知れない。 I may give up soon and just nap instead.
愛してる。 I love you.
ログアウトするんじゃなかったよ。 I shouldn't have logged off.
日本語文と英語文はタブで区切られている。
この変換を可能にするコードを Python 3 で書いた。
変換用コード(Python 3)
convert.py
import re
while True:
try:
line = input()
if re.match(r'A: ', line):
line = re.sub(r'\AA: ', '', line)
line = re.sub(r'#ID=.*\Z', '', line)
print(line)
except EOFError:
break
使い方
- 田中コーパスのページで、「complete version (UTF-8)」のリンクを探して、対訳データをダウンロード(examples.utf.gz)。
-
gunzip examples.utf.gz
を実行して解凍し、examples.utf
ファイルを得る。 -
python convert.py < examples.utf > tanaka_corpus.txt
を実行。tanaka_corpus.txt
に前処理済みのデータが入っている。