2017-10-16追記 スクリプトをPhthonに直した上、後工程を含めて別の記事
青空文庫テキストから名詞のリストを作成するに統合しましたので、こちらを参照されて下さい。
テキストマイニングのテストをしようと思って、なかなか手頃なサンプルテキストがなく、入手に一手間必要だったので、その手順のメモ。
いい品質のプレーンテキストは、なかなかネットでも入手できないものです。
いろいろ調べて青空文庫にたどり着いたのですが、問題はテキスト型で提供されているデータにはルビの情報も含まれていた点。
たいしたことではないのですが、下記のようなPerlのスクリプトでルビのないきれいなデータを入手できるようになりました。
パターンマッチでルビなど余分な部分を落としているだけなので、もちろん他の言語でも簡単に実装できると思います。
(2017-10-15 追記)
最初のバージョンは、
- 入力ファイル名、出力ファイル名が決め打ち
- 青空文庫でダウンロードしたテキストはJSISなのに、Unicodeを前提にしていた
- 頭の部分に本文と関係ない情報が含まれていた
など、修正すべき点がいくつかあったので、これに対応しました。
最新版は、ソースをコピペして "del-rubi.pl" をして保存した後、
$ chmod 755 del-rubi.pl
$ ./del-rubi.pl kokoro.txt kokoro-refine.txt
のように、第一引数入力ファイル名、第二引数出力ファイル名を指定して利用できます。
#!/usr/bin/perl
use utf8;
use Encode qw/encode decode/;
my $org_file = $ARGV[0] || 'org.txt';
my $new_file = $ARGV[1] || 'new.txt';
my $new = '';
my $header_count = 0;
if (open(FH, $org_file)) {
while ($data = <FH>) {
$data = decode('SJIS', $data);
$data =~ s/《[^》]+》//g;
$data =~ s/|//g;
$data =~ s/[.+?]//g;
$data =~ s/(\r|\n)//g;
$data = encode('UTF-8', $data);
if ( $header_count >= 2 ) {
$new .= $data . "\n";
}
if ($data =~ /----------/) {
$header_count = $header_count + 1;
}
}
close(FH);
}
if (open(FH, '>' . $new_file)) {
print FH $new;
close(FH);
}
exit;
ちなみに、私は夏目漱石の「こころ」のテキストを落としてみました。