
Ubuntu日本語フォーラム

ログインしていません。
ubuntu 8.04を使っています。
http://d.hatena.ne.jp/nshttsk/20070201/1170352330 によると、/usr/share/anthy/dic/ にユーザー辞書を追加し、/etc/anthy/diclist にそのユーザー辞書を登録し、update-anthy-dics を実行するならユーザー辞書として使えるようなことを書いてありますが、実際にやってみても、変換候補の中に登録したものが出てきません。Anthyのユーザー辞書の登録の仕方を教えていただけますか。
オフライン
こんにちは、Akira Imakuraさん
きっと、他のIMEの辞書から、登録済みの単語を反映させたいのだと思います。
その方法については私にはわからないのですが、Anthyの辞書に登録可能な品詞が少ないので
そのまま反映させることは難しいと思います。品詞の変更が必要ですからね。
私は、他のIMEの辞書から単語一覧をテキストデータで出力し、画面右下の辞書アイコンをクリック
して、テキストデータを参照しながら、一つひとつ登録しています。^^;
私は、Anthyには登録可能な品詞が増え、辞書ツールの充実が図れることを心から望んでいる一人
です。
オフライン
sudo gedit /usr/share/anthy/dic/imakura.t でimakura.t と名づけた文書を開き、けいまかくはんとう #T35 桂麻各半湯 と書き、保存しました。次にsudo gedit /etc/anthy/diclist でdiclist を開き、imakura.t を追加し保存しました。次に端末にsudo update-anthy-dics と打ち込み実行しました。
http://d.hatena.ne.jp/nshttsk/20070201/1170352330 を読んだ私の理解では、上記の操作で、imakura.t がユーザー辞書として使えると思うのですが、けいまかくはんとう で 桂麻各半湯 への変換ができません。まったく機能していません。どこがいけないのでしょうか。
オフライン
同じく詳細は判りませんが、他の辞書ファイルを除いてみたところEUC-JPで記述されているようです。
コーディングをEUC-JPにして、作業しなおすと辞書として使えるようになったりしないでしょうか。
オフライン
次のコードでEUCのe_imakura.t をつくり、/etc/anthy/diclist に追加しました。
sudo cp /usr/share/anthy/dic/imakura.t ./imakura.t
nkf -E imakura.t > e_imakura.t
sudo cp e_imakura.t /usr/share/anthy/dic
sudo update-anthy-dics を実行しても、やはり使えません。
オフライン
nkf -E
は入力側のコーディングを指定するもののような気がします。
nkf -e
ではどうでしょう。
オフライン
hmatsueさんお世話になります。
nkf -e でもしたのですが、やはりユーザー辞書は使えませんでした。
オフライン
Anthy辞書追加の謎 -Ubuntuのある日々で書かれていることと似ているなぁと思ったのですが、短い単語なら変換できるということはないですか?
オフライン
私の場合、まったく使えません。皆さんはユーザー辞書の登録はどうしていますか。私が前に書いたような方法で登録できているのですか。それとも別の方法があるのですか。ユーザー辞書の一括登録ができず、ひとつずつ登録しなければならないなら、IMEとして致命的な欠陥です。Atokでは当然のことですが、Atok辞書ユーティリティから一括処理でユーザー辞書の一括登録ができます。
オフライン
Akira Imakura による投稿:
皆さんはユーザー辞書の登録はどうしていますか。私が前に書いたような方法で登録できているのですか。
10.04環境で試して見ましたが、
http://d.hatena.ne.jp/nshttsk/20070201/1170352330
で紹介されている手順でできました。
nkf -g
などで、ファイルが正しく作成されているか確認してみてはいかがでしょう。
Akira Imakura による投稿:
ユーザー辞書の一括登録ができず、ひとつずつ登録しなければならないなら、IMEとして致命的な欠陥です。
これは人それぞれの考え方次第なので、なんとも言えないと思いますが。
ソースは公開されているので不足している機能があると考えるならば、不足部分の機能を補うプログラムを書いて、開発元にPatchを送って取り込んでもらうというのも一案です。
オフライン
その後登録したものがかなり変換できるようになりました。ユーザー辞書として登録されていることを確認しました。
次のことに気づきました。
1) 文字コードはUTF8では駄目です。EUCにしておく必要があります。hmatsueさんの指摘は正鵠を射ています。感謝します。
2) ユーザー辞書に新しい単語を登録した時は、そのユーザー辞書ファイルを保存し、sudo update-anthy-dics を実行するだけでは、使えるようになりません。さらに再起動する必要があります。
3) どうしても登録できないものがあります。私は最初 けいまかくはんとう #T35 桂麻各半湯 一語のみをユーザー辞書に登録して試してみて、変換できなかったからユーザー辞書が登録されていないと判断したのですが、他の単語では登録できます。いまだに桂麻各半湯の変換はできません。けい #T35 桂麻各半湯 と登録すると、けい で変換できます。
4) 登録した単語を始めて変換する時は変換候補の最後に出てきます。辛抱強く最後までいかないと、登録したものが出てきません。2回目以後は変換候補の最初に出てきます。
みなさんの環境では、けいまかくはんとう #T35 桂麻各半湯 は登録できて、変換できるようになりますか。登録できない単語があるというのは、困りものですが。
オフライン
私の環境(10.04)でGUIで登録したところ、きちんと変換できました。
最初の変換時は「[桂馬}各半島」と変換されました([ ]は分節)が、文節を最後まで指定すると、
きちんと変換されます。文節位置が学習され、それ以降もきちんと変換されます。
オフライン
私は昨日ユーザー辞書に登録しても1回めの変換の時は、候補の最後に出てくると書きましたが、けい #T35*500 桂麻各半湯 のように*500 をつけて登録すると、1回めから変換候補の始めのほうに出てくることがわかりました。
Atokを使っていた者にとってAtokに登録したユーザー辞書をAnthyに移すことができなければ大きな痛手です。
http://smdn.invisiblefulmoon.net/programming/tips/atokdictoanthy/ にあるコードを参照して自動的にAnthyのユーザー辞書とするコードをつくりました。ただし単漢字や名詞だけです。
Atok辞書ユーティリティの一覧出力から登録した単語を出力し、atok_user_dic.txt というファイル名にします。Windowsdからとってくることを前提にしているので、文字コードはShift-Jisを前提としていますが、UTF8でも問題ありません。
atok_user_dic.txt をホームディレクトリにコピーします。
次にテキストエディタに次のコードをコピーし、diclistwrite.pl というファイル名でホームディレクトリに保存します。これは/etc/anthy/diclist にユーザー辞書名を登録するためだけのものですが、手動でしても手間はたいしてかかりません。
#!/usr/bin/perl
use strict;
use warnings;
my $line;
my @file;
my @file2;
open(FILE,'>>/etc/anthy/diclist') or die "$!";
print FILE "atok_ude.t\n";
close(FILE);
次にテキストエディタに次のコードをコピーし、atokhenkan.pl というファイル名でホームディレクトリに保存します。これはAtok式のユーザー辞書をAnthy式のユーザー辞書に変えるものです。
#!/usr/bin/perl
use strict;
use warnings;
my $line;
my $line2;
my @file;
my @file2;
my $yomi;
my $tango;
my $hinshi;
my $hinshi2;
open(FILE,'atok_user_dicw.txt') or die "$!";
@file=<FILE>;
close(FILE);
foreach $line(@file){
if($line=~/([^\t]+)\t([^\t]+)\t([^\t]+)(\*|\$)$/){
$yomi=$1;
$tango=$2;
$hinshi=$3;
if($hinshi eq "独立語" or $hinshi eq "単漢字"){
$hinshi2="KJ*500";
}
elsif($hinshi eq "名詞サ変" or $hinshi eq "名詞ザ変"){
$hinshi2="T30*500";
}
elsif($hinshi eq "固有人名"){
$hinshi2="JNM*500";
}
elsif($hinshi eq "名詞" or $hinshi =~/固有.*/){
$hinshi2="T35*500";
}
elsif($hinshi eq "感動詞"){
$hinshi2="CK*500";
}
$line2="$yomi "."#$hinshi2 "."$tango\n";
push(@file2,$line2);
}
}
open(NEWFILE,'>atok_udw.t') or die "$!";
print NEWFILE @file2;
close(NEWFILE);
次にテキストエディタに次のコードをコピーし、atok_dic_install.bash というファイル名でホームディレクトリに保存します。
#!/bin/bash
sudo perl diclistwrite.pl
nkf -w atok_user_dic.txt > atok_user_dicw.txt
perl atokhenkan.pl
nkf -e atok_udw.t > atok_ude.t
sudo cp atok_ude.t /usr/share/anthy/dic
sudo update-anthy-dics
echo "終了しました。"
echo "再起動して下さい。"
次に端末を開き、sudo atok_dic_install.bash と打ち込み、Enterキーを押します。
"再起動して下さい。" の表示が出れば再起動します。
上記の方法で、私の環境 ubuntu 8.04 では自動登録できることを確認しました。
オフライン