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

IME-和英辞書 EDICT for MS-IME

EDICTをIME用の辞書に変換しました。
顔文字として登録しているため長い文章中で誤変換されまくってbend overえええとなることはremainderないと思います。this文章も普通にタイプして変換しているだけですが、ほとんど誤変換がありません。
コーディング中など、あれ? あの単語なんだっけ? というときに一瞬で調べることができます。

f:id:ultraist:20070715190517p:image
これはひどい。検索ワードなどがすごく入力しづらいです……。

ZIP

EDICT for MS-IME (2.6MB)
このバージョンは古くなりました。詳しくは以下のURLを参照してください。

IME-和英辞書 EDICT for MS-IME 2 - デー

変換手順

# mkedictime.pl
use strict;
use utf8;

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

print <<_EOT
! EDICT for MS-IME
!
!
_EOT
	;
# edictはutf8に変換済み
while (my $line = <STDIN>) {
	chomp($line);
	my($kana, $henkan, $hinshi, $comment) = parseEdict($line);
	if ($kana and $henkan and $comment) {
		print "$kana\t$henkan\t$hinshi\t$comment\n";
	}
}

sub parseEdict
{
	my $line = shift;
	my($jp, $enw) = split('/', $line, 2);
	my ($kana, $kanji, $henkan, $hinshi, $comment);
	
	if ($jp =~ /([^\[]+)\[([^\]]+)\]/) {
		$kanji = $1;
		$kana = katakanaToHiragana($2);
		
		$kanji =~ s/\[[^\]]+\]//g;
		$kanji =~ s/[\s]+//g;
	}
	my @en = split('/', $enw);
	if ($#en >= 0) {
		$henkan = $en[0];
		$henkan =~ s/\([^\)]+\)//g;
		$henkan =~ s/^[\s]+//g;
		$henkan =~ s/[\s]+$//g;
	}
	$comment = $kanji . ' ' .$enw;
	$hinshi = getHinshi($line);
	
	if (length($comment) > 127) {
		$comment = substr($comment, 0, 122) . '...';
	}
	if (length($henkan) > 40) {
		$henkan =~ s/\([^\)]+\)//g;
		if (length($henkan) > 37) {
			$henkan = (split(',', $henkan))[0];
			if (length($henkan) > 37) {
				$henkan = substr($henkan, 0, 37);
			}
		}
		$henkan .= '...';
	}
	
	return ($kana, $henkan, $hinshi, $comment);
}

sub getHinshi
{
	my $line = shift;
	return "顔文字";
}

sub katakanaToHiragana
{
	my $nazo = shift;
	$nazo =~ tr/[ァ-ン]/[ぁ-ん]/; # ヴ?
	return $nazo;
}

このテキトウな変換フィルターを使って、

$ nkf -w edict | perl mkedictime.pl | nkf -s > edictime.txt

と変換しています。
なぜか登録時に1万件くらいエラーでますが、追加はされているようです。