読者です 読者をやめる 読者になる 読者になる

PerlでJMdictを扱う

JMdictファイルは英語のみのバージョンを使った。
JMdictは大きなXMLファイルで、こんな感じでアクセスできる。

use XML::Twig;
use utf8;

# utf8
binmode(STDOUT, ':utf8');

# 解析実行
my $twig = new XML::Twig(
    twig_handlers => { entry => \&parse_entry }
);
$twig->parsefile('./JMdict_e');

# `entry'
sub parse_entry
{
    my($twig, $element) = @_;
    my $entry = $element->simplify(forcearray => 1);
    
    # シーケンス
    print "SEQ:", $entry->{ent_seq}->[0],"\n";
    
    # 漢字
    foreach my $k_ele (@{$entry->{k_ele}}) {
        foreach my $keb (@{$k_ele->{keb}}) {
            print "KEB: ", $keb, "\n";
        }
    }
    
    # 読み
    foreach my $r_ele (@{$entry->{r_ele}}) {
        foreach my $reb (@{$r_ele->{reb}}) {
            print "REB: ", $reb, "\n";
        }
    }
    
    # 意味
    foreach my $sense (@{$entry->{sense}}) {
        # 品詞
        foreach my $pos (@{$sense->{pos}}) {
            print "POS: ", $pos,"\n";
        }
        # 概要
        foreach my $gloss (@{$sense->{gloss}}) {
            if ($gloss->{'xml:lang'} eq 'en') {
                print "GLOSS: ", $gloss->{content}, "\n";
            }
        }
    }
    print "\n";
    
    $twig->purge;
}

とりあえずDBに突っ込む準備はできた。