[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[debian-users:03765] Generate JE dictionary from gene.txt
- From: Satoru Takabayashi <ccsatoru@xxxxxxxxxxxxxxxxxx>
- Subject: [debian-users:03765] Generate JE dictionary from gene.txt
- Date: Tue, 13 Jan 1998 21:27:05 +0900
- X-ml-info: If you have a question, send a mail with the body "# help" (without quotes) to the address debian-users-ctl@debian.or.jp
- X-ml-name: debian-users
- X-mlserver: fml [fml 2.1A#28]; post only from members
- Message-id: <199801131233.VAA11423@xxxxxxxxxxxxxxxxxx>
- X-mail-count: 03765
- X-mailer: Mew version 1.70 on Emacs 19.34.1 / Mule 2.3
高林@愛知大学と申します
# 先ほど linux-users に流した内容に少し補足が付け加えられています。
少し前に gene というフリーの英和辞書が Mule で使えるということが少
し話題になりましたが、この英和辞書を無理やり和英辞書に変換するため
のいいかげんなスクリプトを作ってみました。これ以上ないというくらい
アドホックな作りなので、あまり役に立たないかもしれませんが、まった
く使えないわけでもないので紹介してみます。興味のある方はお試し下さ
い。
このスクリプトの実行には nkf v1.62, KAKASI, Perl5 が必要です。
"geneJE.pl" という名前で保存して gene.txt (オリジナル) のあるディ
レクトリで実行してください。
…と、和英辞書をでっちあげてみたものの、これを Mule で使おうとして
うまくいかなくて困っています。 Tagami-K さんの作成された gene.el
を少しいじればなんとかなりそうなのですが、 Emacs Lisp はさっぱり分
からないのでお手上げの状態です。
他力本願で申し訳ございませんが、上記の和英辞書を Mule で使えるよう
にしてくださる方はいませんでしょうか:)。 gene.el を拡張して和英辞
書もひけるようになったら便利だと思います。
この和英辞書作成スクリプトは需要があるようでしたら、もう少し真面目
に作りたいと思います。ご意見をお待ちしております。
gene.lzh は
<URL:http://www.forest.impress.co.jp/win12/dict.html#gene95>
gene.el は
<URL:http://fukuda.aist-nara.ac.jp/mnt/disk3/www/home/Mew/debian-users/msg02702.html>
KAKASI は
<URL:http://www.kusastro.kyoto-u.ac.jp/%7Ebaba/wais/>
からそれぞれ取得できます。
-- プログラムここから --
#!/usr/bin/perl
$| = 1;
print "Making EJ dictionary - gene.dic...\n";
system("nkf -eXd gene.txt |perl -e 'while(<>){chop \$_;\$tmp=<>;print \"\$_\t\$tmp\";}' >gene.dic");
print "Making JE dictionary - jgene.dic...\n";
open(EJ, "kakasi -Ea <gene.dic|") || die "Can't open gene.dic";
while(<EJ>) {
/(.*)\t(.*)/;
$word = $1;
$definition = $2;
$definition =~ s/(\/.*)/&commaquote($1)/e;
$definition =~ s/(\(.*?\))/&commaquote($1)/ge;
$definition =~ s/(\".*?\")/&commaquote($1)/ge;
$definition =~ s/(hoshi)//g;
@meanings = split(/, */, $definition);
foreach $meaning (@meanings) {
$meaning =~ s/^(\d+\. *)|(\(\d+\) *)//;
$meaning =~ s/\(the ~\)//;
$meaning =~ s/^\((.*)\)$/$1/;
$meaning =~ s/^\? *//;
$meaning =~ s/^([^\xa1-\xfe]+) ([\(\)\[\]\<\>xa1-\xfe]+)/$2 $1/g;
$meaning =~ s/^(([<\[\(]+.*?[>\]\)]+ *)+)(.*)/$3$1/;
$meaning =~ s/^(\d+\. *)|(\(\d+\) *)//;
$meaning =~ s/\x0/,/g;
$je{$meaning} .= $word . ", ";
}
}
close(EJ);
print "Writing jgene.dic...\n";
open(JE, ">jgene.dic") || die "Can't open jgene.dic";
foreach $word (sort keys (%je)) {
print JE "$word\t$je{$word}\n";
}
close(JE);
sub commaquote {
my ($str) = @_;
$str =~ s/,/\x0/g;
$str;
}
-- プログラムここまで --
--
高林 哲 Satoru Takabayashi