Newsela コーパスの文アライメントツールを使う
今回は簡単に n-gram ベースの『CATS』使う方法。
[1] CATS: A Tool for Customized Alignment of Text Simplification Corpora
[2] Sentence Alignment Methods for Improving Text Simplification Systems
まずはなんとかして『Newselaコーパス(以下、単にNewsela)』を手に入れる。
リクエストしても、返事はなかなか来ないので注意。
ここでは研究室のサーバにあったやつを使います。
$ unzip newsela_article_corpus_with_scripts_2016-01-29.1.zip
$ ls
__MACOSX newsela_article_corpus_2016-01-29 newsela_article_corpus_with_scripts_2016-01-29.1.zip
$ ls newsela_article_corpus_2016-01-29/
articles articles_metadata.csv newsela_data_share-20150302.zip README.md
$ ls newsela_article_corpus_2016-01-29/articles | less
10dollarbill-woman.en.0.txt
10dollarbill-woman.en.1.txt
10dollarbill-woman.en.2.txt
10dollarbill-woman.en.3.txt
10dollarbill-woman.en.4.txt
17century-selfies.en.0.txt
17century-selfies.en.1.txt
17century-selfies.en.2.txt
17century-selfies.en.3.txt
17century-selfies.en.4.txt
17century-selfies-spanish.es.0.txt
17century-selfies-spanish.es.1.txt
17century-selfies-spanish.es.2.txt
17century-selfies-spanish.es.3.txt
......
「*.en.*」が英語の記事。「*.es.*」がスペイン語の記事。今回は英語の記事を使う。
『Newsela』は 0.txt(元記事)から数字が大きくなるにつれて段階的に平易化(記事の書き換え)が実施されている。なので、「.txt」の前についている数字が大きいほど元記事より平易化されている。
実施したいのは、この平易化前後の「.txt」ファイル間での文アライメント。
専用の自動アライメントツールを git clone 。
$ git clone https://github.com/neosyon/SimpTextAlign
Cloning into 'SimpTextAlign'...
remote: Enumerating objects: 286, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 286 (delta 0), reused 3 (delta 0), pack-reused 283
Receiving objects: 100% (286/286), 38.89 MiB | 16.33 MiB/s, done.
Resolving deltas: 100% (142/142), done.
jar ファイルになっているので、コンパイル不要。
-i オプションを使い、上で unzip していたディレクトリ内の articlesディレを指定。このとき「articles」の直後に「/」を付け忘れるとエラー出るので注意。
-o オプションで出力先ディレクトリを指定している。名前は任意だが、こっちもディレクトリ名の後に「/」付けないとカレントディレクトリに全展開されるので注意。
-l オプションで「en」英語を指定し、あとはデフォルト(下では一応、明示的に書いている)
$ mkdir aligned_files
$ java -jar SimpTextAlign/jars/AlignNewselaDataset.jar -i newsela_article_corpus_2016-01-29/articles/ -o aligned_files/ -l en -s C3G -a sentence -t closestSimStrategy
Calculating IDF...
Aligning...
10/1911
20/1911
30/1911
40/1911
50/1911
60/1911
(略)
1870/1911
1880/1911
1890/1911
1900/1911
1910/1911
Alignment done in 2.683333333333333 minutes.
$ ls aligned_files/ | less
10dollarbill-woman.en.1.txt_ALIGNED_WITH_10dollarbill-woman.en.0.txt
10dollarbill-woman.en.2.txt_ALIGNED_WITH_10dollarbill-woman.en.0.txt
10dollarbill-woman.en.2.txt_ALIGNED_WITH_10dollarbill-woman.en.1.txt
10dollarbill-woman.en.3.txt_ALIGNED_WITH_10dollarbill-woman.en.0.txt
10dollarbill-woman.en.3.txt_ALIGNED_WITH_10dollarbill-woman.en.1.txt
10dollarbill-woman.en.3.txt_ALIGNED_WITH_10dollarbill-woman.en.2.txt
10dollarbill-woman.en.4.txt_ALIGNED_WITH_10dollarbill-woman.en.0.txt
10dollarbill-woman.en.4.txt_ALIGNED_WITH_10dollarbill-woman.en.1.txt
10dollarbill-woman.en.4.txt_ALIGNED_WITH_10dollarbill-woman.en.2.txt
10dollarbill-woman.en.4.txt_ALIGNED_WITH_10dollarbill-woman.en.3.txt
17century-selfies.en.1.txt_ALIGNED_WITH_17century-selfies.en.0.txt
17century-selfies.en.2.txt_ALIGNED_WITH_17century-selfies.en.0.txt
17century-selfies.en.2.txt_ALIGNED_WITH_17century-selfies.en.1.txt
17century-selfies.en.3.txt_ALIGNED_WITH_17century-selfies.en.0.txt
17century-selfies.en.3.txt_ALIGNED_WITH_17century-selfies.en.1.txt
17century-selfies.en.3.txt_ALIGNED_WITH_17century-selfies.en.2.txt
17century-selfies.en.4.txt_ALIGNED_WITH_17century-selfies.en.0.txt
......
$ less aligned_files/10dollarbill-woman.en.4.txt_ALIGNED_WITH_10dollarbill-woman.en.0.txt
0: WASHINGTON — Pictures of ...(略)... paper mon ---(0.49985139321131344)---> 0: WASHINGTON ...(略)... abolitionist.
1: It is time for ...(略)... worker said. ---(0.15835881211518008)---> 10: A non-profit group called Wome...(略)
......
こんなふうに 平易化後の文->平易化前の文(1対多アライメント) が格納されたファイルが出来上がっている。
ちなみにPUNCを識別して文分割する機能がこっそり入っていて、日本語の句点でも文末と判断して切るので注意。
.en.4.txt->.en.0.txt だと感覚、0.4 以上のスコアが付いているのが対として採用できる。