見出し画像

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 以上のスコアが付いているのが対として採用できる。

この記事が気に入ったらサポートをしてみませんか?