2011 |
02,02 |
Text::MeCabが謎の文字化けして、まぁ一応直ったのでメモ。
原因はわからずじまい。
ある日(というか今日)何気にText::MeCabを動かすと、あれれ・・
謎の文字化け発症・・。
単語と単語の切れ目がゴミと化しています。
前はフツーに動いていたのにぃ!
だからスクリプトの文字コード周りではないのかも。
これはターミナル上でのMySQLで、日本語を入力→削除で出てくるゴミに似ている気がする。
とりあえずcpanでText::MeCabをアップグレードするも直らず。
ふと調べると、mecab本体が2個所にある・・。
一方が正常で一方が文字化ける。
Text::MeCabインストール時に指定するパスは化けるほう。
ということでインストールしなおしてmecabのパスを正常な方に直すと・・・
うひょーー!
見事なおりました!!
しかし化ける方はなんなんだ、いつからおるんか、いつ正常なやつと入れ替わったのかはわからず。
原因はわからずじまい。
ある日(というか今日)何気にText::MeCabを動かすと、あれれ・・
彼
��
�態
�
��
謎の文字化け発症・・。
単語と単語の切れ目がゴミと化しています。
前はフツーに動いていたのにぃ!
だからスクリプトの文字コード周りではないのかも。
これはターミナル上でのMySQLで、日本語を入力→削除で出てくるゴミに似ている気がする。
とりあえずcpanでText::MeCabをアップグレードするも直らず。
ふと調べると、mecab本体が2個所にある・・。
一方が正常で一方が文字化ける。
Text::MeCabインストール時に指定するパスは化けるほう。
ということでインストールしなおしてmecabのパスを正常な方に直すと・・・
彼
は
変態
です
うひょーー!
見事なおりました!!
しかし化ける方はなんなんだ、いつからおるんか、いつ正常なやつと入れ替わったのかはわからず。
PR
2011 |
01,28 |
ずっと避けてたデュアルディスプレイにしてみました。
NVIDIA純正ドライバ、インストール手順
こちらのサイトを参考にしました。
やってみると意外と簡単。
前挫折したときのアレはなんだったんだろう・・
基本的な流れは
ドライバのダウンロード → CUIでインストール → GUIで「nvidia-settings」で2画面目の設定
です。
詳しくは上のサイトを見ましょう。
※CUIでサイトを参考にしながらできないので上のサイトをプリントアウトしてからが無難かも・・
NVIDIA純正ドライバ、インストール手順
こちらのサイトを参考にしました。
やってみると意外と簡単。
前挫折したときのアレはなんだったんだろう・・
基本的な流れは
ドライバのダウンロード → CUIでインストール → GUIで「nvidia-settings」で2画面目の設定
です。
詳しくは上のサイトを見ましょう。
※CUIでサイトを参考にしながらできないので上のサイトをプリントアウトしてからが無難かも・・
2011 |
01,27 |
firefox上でAdobe Readerが開けるようにします。OSはVine5.1。
まずはAdobe Readerをインストール。
こちら(http://get.adobe.com/jp/reader/otherversions/)からrpmをダウンロードして入れました。
これでインストール終了。pdfをAdobe Readerで開けるようになりました。
つぎにプラグインをインストール。といっても、ダウンロードしたファイル内の"nppdf.so"というファイルをプラグインディレクトリにコピーするだけです。こちらを参考にしました。
"nppdf.so"はrpmを解凍すると、"Reader9/Browser/intellinux/"にありました。また、僕の場合mozillaのプラグインディレクトリは"/usr/lib/mozilla/plugins/"です。プラグインディレクトリになぜか既に"npdf.so"があったので(汗)一応古いファイルをコピーして保存したあとに新しいファイルをコピーしました。
これで無事firefox上でpdfファイルが開けました。あ、でも1回目開いた時firefoxが強制終了しました(汗)
以上です。
[追記]
試しにnppdf.soを削除してみたら、普通にfirefox上でpdfを開けました・・。
やっぱりnppdf.soがないとだめでした。
まずはAdobe Readerをインストール。
こちら(http://get.adobe.com/jp/reader/otherversions/)からrpmをダウンロードして入れました。
$ su
パスワード:
# rpm -ivh AdbeRdr9.4-1_i486linux_jpn.rpm
準備中... ########################################### [100%]
1:AdobeReader_jpn ########################################### [100%]
これでインストール終了。pdfをAdobe Readerで開けるようになりました。
つぎにプラグインをインストール。といっても、ダウンロードしたファイル内の"nppdf.so"というファイルをプラグインディレクトリにコピーするだけです。こちらを参考にしました。
"nppdf.so"はrpmを解凍すると、"Reader9/Browser/intellinux/"にありました。また、僕の場合mozillaのプラグインディレクトリは"/usr/lib/mozilla/plugins/"です。プラグインディレクトリになぜか既に"npdf.so"があったので(汗)一応古いファイルをコピーして保存したあとに新しいファイルをコピーしました。
[root@localhost Adobe]# cp /usr/lib/mozilla/plugins/nppdf.so /usr/lib/mozilla/plugins/cp_nppdf.so
[root@localhost Adobe]# cp Reader9/Browser/intellinux/nppdf.so /usr/lib/mozilla/plugins/
cp: `/usr/lib/mozilla/plugins/nppdf.so' を上書きしてもよろしいですか(yes/no)? yes
[root@localhost Adobe]#
これで無事firefox上でpdfファイルが開けました。あ、でも1回目開いた時firefoxが強制終了しました(汗)
以上です。
[追記]
やっぱりnppdf.soがないとだめでした。
2011 |
01,15 |
perlでText::MeCabを使っていて、「なんか変だなー。みょ〜〜に、変だな〜・・」と稲川淳二ばりに思っていたら、作成したはずのmecabのユーザ辞書がText::MeCabに適応されていませんでした。人生オワタ、と嘆いていると、ザッツさんがCPANを見ればといってくれたので、見てみると、あーなるほど普通に書いてある。ということで、Text::MeCabに自分で作成したユーザ辞書を適応させる方法です(CPAN見れば書くまでもありませんが...)。
実行結果
できました。まあ、ちゃんとCPANなりなんなりを読めと言うことですね。
use Text::MeCab;
use utf8;
binmode(STDOUT, ":raw :utf8");
binmode(STDIN, ":raw :utf8");
use Encode;
my $userdic ='../mecab_dic/wikipedia.dic, ../mecab_dic/hatena_keyword.dic'; # <- ユーザ辞書パス(複数OK)
my $m = Text::MeCab->new({ # <- ここで辞書のパスを記載
userdic => $userdic,
});
my $str = "千と千尋の神隠し";
my $n = $m->parse($str);
do{
printf("%s\t%s\t%s\n",
decode('utf8' ,$n->surface), # 表層
decode('utf8' ,$n->feature), # 現在の品詞
$n->cost, # その形態素までのコスト
);
}while ($n = $n->next)
実行結果
千と千尋の神隠し 名詞,固有名詞,*,*,*,*,千と千尋の神隠し,*,*,wikipedia_word, -4034
BOS/EOS,*,*,*,*,*,*,*,* -4468
Use of uninitialized value in printf at /home/akito/workspace/長岡さん/source/OLD_source/test_mecab.pl line 14.
できました。まあ、ちゃんとCPANなりなんなりを読めと言うことですね。
2011 |
01,13 |
mecabにwikipediaのタイトルの単語を追加します。
ググると、既に様々な人がされているので、参考にさせて頂きました。また、本家のサイトで詳しく説明されています。
csvファイルの作成にperlを使いました。
以下が作業の流れです。
wikipediaのタイトルを辞書に追加すると
これが
こうなってくれます。つまり、wikipediaに登録されている項目をmecabが判別してくれるのですね。
では本題。
1) まず、wikipediaのタイトルリスト(jawiki-latest-all-titles-in-ns0.gz)をこちら(http://download.wikimedia.org/jawiki/latest/)からダウンロード。適当なディレクトリ(home/foo/bar)に解凍します。
2) 次に、ダウンロードしたファイルから辞書へ変換するためのCSVファイルを作成します。ファイルの中身を見るとこのようになっていました。
これをこのようなCSV形式に整形し、ファイルに保存します
「#いらない語をとばす」のところで自分がいらないなと思った単語をとばしましょう。僕は.(ドット)から始まる後や(曖昧さの回避)の単語、数字のみの単語などを省きました。また、CSVファイルに書き込む際に3文字以下の単語は省きました。(lengthでuse utf8をしないと日本語などのユニコード文字の長さがちゃんとはかれないようです。)
これでCSVファイルができあがリました。
3)CSVファイルを辞書ファイル(.dic)へ変換します。CSVファイルのあるディレクトリで、以下のコマンドを入力。
できました。
最後に/usr/local/etc/mecabrcに以下を追加。
これで終了です。この調子ではてなキーワードもいれてみようと思います。
--2011-01-14 追記--
はてなキーワードリストをこちら(http://d.hatena.ne.jp/hatenadiary/20060922/1158908401)からダウンロードして、辞書に登録しました。
はてなキーワードにはふりがながあるものもあるので、スクリプトを少し改良しました。
変換後の中身
しかし、何と言うか、はてなキーワードはwikipediaと比べてなんだか世俗的、というかフォークソノミーちっく(死語!?)ですね。それぞれの単語追加の際のポリシーみたいなものがあるのでしょうかね。
ググると、既に様々な人がされているので、参考にさせて頂きました。また、本家のサイトで詳しく説明されています。
csvファイルの作成にperlを使いました。
以下が作業の流れです。
1)wikipediaのデータをダウンロード
2)ダウンロードしたデータからユーザ辞書のCSVファイルを作成
3)CSVファイルを辞書ファイル(.dic)へ変換
wikipediaのタイトルを辞書に追加すると
$ mecab
千と千尋の神隠し
千 名詞,数,*,*,*,*,千,セン,セン
と 助詞,格助詞,引用,*,*,*,と,ト,ト
千尋 名詞,一般,*,*,*,*,千尋,チヒロ,チヒロ
の 助詞,連体化,*,*,*,*,の,ノ,ノ
神隠し 名詞,一般,*,*,*,*,神隠し,カミガクシ,カミガクシ
EOS
これが
$ mecab
千と千尋の神隠し
千と千尋の神隠し 名詞,固有名詞,*,*,*,*,千と千尋の神隠し,*,*,wikipedia_word,
EOS
こうなってくれます。つまり、wikipediaに登録されている項目をmecabが判別してくれるのですね。
では本題。
1) まず、wikipediaのタイトルリスト(jawiki-latest-all-titles-in-ns0.gz)をこちら(http://download.wikimedia.org/jawiki/latest/)からダウンロード。適当なディレクトリ(home/foo/bar)に解凍します。
2) 次に、ダウンロードしたファイルから辞書へ変換するためのCSVファイルを作成します。ファイルの中身を見るとこのようになっていました。
千ちゃんの幸せラジオドーム
千とせ
千と千尋
千と千尋の神隠し
千と千尋の神隠し_サウンドトラック
千なり
千のナイフ
これをこのようなCSV形式に整形し、ファイルに保存します
工藤,1223,1223,6058,名詞,固有名詞,人名,名,*,*,くどう,クドウ,クドウ詳しくは公式サイトにのっていますのでそちらを。なお、自分お好きな情報をCSVが許す範囲で 追加できるとのことなので、先人に習って、最後にwikipedia_wordを追加します。 CSVへの変換はこちらのサイトのperlスクリプトを参考にさせて頂きました(少し改変しました。)。
#!/usr/bin/perl
use strict;
use warnings;
use utf8;
binmode(STDOUT, ":utf8");
use encoding 'utf8';
my $file1 = "jawiki-latest-all-titles-in-ns0";
my $file2 = "wikipedia.csv";
open(IN, "$file1");
open(OUT, ">$file2");
binmode OUT, ":utf8"; ## <- こっちが正しい
for(<IN>) {
chomp($_);
print $_."\n";
## いらない単語をとばす
next if $_ =~ /^\./;
next if $_ =~ /(曖昧さの回避)/;
next if $_ =~ /^[0-9]{1,100}$/;
next if $_ =~ /[0-9]{4}./;
if (length($_) > 3) {
print OUT "$_,0,0,".max(-36000,-400 * (length^1.5)).",名詞,固有名詞,*,*,*,*,$_,*,*,wikipedia_word,\n";
}
}
sub max {
my $comp = shift @_;
my $val = shift @_;
my $max = $comp;
if ( $comp <= $val ) {
$max = $val;
}
return int($max);
}
「#いらない語をとばす」のところで自分がいらないなと思った単語をとばしましょう。僕は.(ドット)から始まる後や(曖昧さの回避)の単語、数字のみの単語などを省きました。また、CSVファイルに書き込む際に3文字以下の単語は省きました。(lengthでuse utf8をしないと日本語などのユニコード文字の長さがちゃんとはかれないようです。)
これでCSVファイルができあがリました。
3)CSVファイルを辞書ファイル(.dic)へ変換します。CSVファイルのあるディレクトリで、以下のコマンドを入力。
$ /usr/local/libexec/mecab/mecab-dict-index -d /usr/local/lib/mecab/dic/ipadic \
> -u wikipedia.dic -f utf8 -t utf8 wikipedia.csv
reading wikipedia.csv ... 970539
emitting double-array: 100% |###########################################|
done!
できました。
最後に/usr/local/etc/mecabrcに以下を追加。
userdic = /home/foo/bar/foo.dic
これで終了です。この調子ではてなキーワードもいれてみようと思います。
--2011-01-14 追記--
はてなキーワードリストをこちら(http://d.hatena.ne.jp/hatenadiary/20060922/1158908401)からダウンロードして、辞書に登録しました。
はてなキーワードにはふりがながあるものもあるので、スクリプトを少し改良しました。
#!/usr/bin/perl
use strict;
use warnings;
use utf8;
use encoding 'utf8';
#my ($file1,$file2) = @ARGV;
my $in = "hatena.csv";
my $ou = "hatena_keyword2.csv";
open(IN, "$in");
open(OUT, ">$ou");
binmode OUT, ":utf8";
for(<IN>) {
chomp($_);
######## for hatena <- ここを追加
$_ =~ s/(.*?)\t(.*?)/$2/;
my $yomi = $1;
$yomi = '*' if $yomi eq '';
print $_."\n";
next if $_ =~ /^\./;
next if $_ =~ /(曖昧さの回避)/;
next if $_ =~ /^[0-9]{1,100}$/;
next if $_ =~ /[0-9]{4}./;
if (length($_) > 1) {
# print OUT "$_,0,0,".max(-36000,-400 * (length^1.5)).",名詞,固有名詞,*,*,*,*,$_,*,*,wikipedia_word,\n";
print OUT "$_,0,0,".max(-36000,-400 * (length^1.5)).",名詞,固有名詞,key_word,key_word,*,*,$yomi,*,*,hatena_word,\n";
}
}
sub max {
my $comp = shift @_;
my $val = shift @_;
my $max = $comp;
if ( $comp <= $val ) {
$max = $val;
}
return int($max);
}
変換後の中身
千と千尋の神隠し,0,0,-3600,名詞,固有名詞,key_word,key_word,*,*,せんとちひろのかみかくし,*,*,hatena_word,
しかし、何と言うか、はてなキーワードはwikipediaと比べてなんだか世俗的、というかフォークソノミーちっく(死語!?)ですね。それぞれの単語追加の際のポリシーみたいなものがあるのでしょうかね。
プロフィール
HN:
fukushimu
性別:
男性
自己紹介:
熊本の某大学で情報処理の勉強をしてます。
カレンダー
カテゴリー
ブログ内検索
つぶやきパーツテスト
カレンダー
最新記事
最新コメント
最古記事
最新TB
P R
カウンター
フリーエリア