UbuntuにUTF-8版のcabochaを簡単にインストールする方法
環境はUbuntu 9.04 Desktop-jaです.
mecabのインストール
aptにutf8版の辞書も用意されていました.
何故かjuman-dicも入るし,utf8ではないipadicも入る対象に入ってしまうが,気にしない.
動作確認
$ mecab すもももももももものうち すもも 名詞,一般,*,*,*,*,すもも,スモモ,スモモ も 助詞,係助詞,*,*,*,*,も,モ,モ もも 名詞,一般,*,*,*,*,もも,モモ,モモ も 助詞,係助詞,*,*,*,*,も,モ,モ もも 名詞,一般,*,*,*,*,もも,モモ,モモ の 助詞,連体化,*,*,*,*,の,ノ,ノ うち 名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ EOS
もちろんターミナルはUTF-8です.apt-getのみでここまで来れたのは素晴らしい.
cabochaのインストール
http://cl.naist.jp/~eric-n/ubuntu-nlp/dists/dapper/all/ が各種NLPパッケージのリポジトリ.サイトに設定方法が書いてありますが,下記に最低限のステップを.
署名情報の取得とパッケージリストの更新
$ wget http://cl.naist.jp/~eric-n/ubuntu-nlp/8ABD1965.gpg -O- | sudo apt-key add - $ sudo apt-get update
パッケージの確認(オプション作業)
$ apt-cache search cabocha cabocha-dic-utf8 - Dictionaries of Cabocha (UTF-8) cabocha-dic - Dictionaries of Cabocha (EUC-JP) libcabocha2 - Libraries of Cabocha libcabocha-dev - Header files of Cabocha cabocha - A Japanese dependency/case structure analysis system
お待ちかねのインストール
$ sudo apt-get install cabocha cabocha-dic-utf8 パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 以下の特別パッケージがインストールされます: cabocha-dic crf++-doc libcabocha2 libcrf++0 libmecab1 以下のパッケージが新たにインストールされます: cabocha cabocha-dic cabocha-dic-utf8 crf++-doc libcabocha2 libcrf++0 以下のパッケージはアップグレードされます: libmecab1 アップグレード: 1 個、新規インストール: 6 個、削除: 0 個、保留: 4 個。 61.4MB のアーカイブを取得する必要があります。 この操作後に追加で 188MB のディスク容量が消費されます。 続行しますか [Y/n]?
Yes以外の選択肢はありません.
動作確認
$ cabocha すもももももももものうち すももも-D ももも---D ももの-D うち EOS
これだとNLP処理屋としては物足りないので-f1オプションをつけてみる.
$ cabocha -f1 すもももももももものうち * 0 1D 0/1 0.886878 すもも 名詞,一般,*,*,*,*,すもも,スモモ,スモモ O も 助詞,係助詞,*,*,*,*,も,モ,モ O * 1 3D 0/1 0.000000 もも 名詞,一般,*,*,*,*,もも,モモ,モモ O も 助詞,係助詞,*,*,*,*,も,モ,モ O * 2 3D 0/1 0.000000 もも 名詞,一般,*,*,*,*,もも,モモ,モモ O の 助詞,連体化,*,*,*,*,の,ノ,ノ O * 3 -1D 0/0 0.000000 うち 名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ O EOS
オブジェクトのソケット通信
オブジェクトを送受信するソケット通信のサンプルコードが見つからなかったので,ここで晒します.
「形態素解析を高速に処理&クライアント側に形態素解析器環境不要」を実現したかったので,``ArrayList
HelloWorldMultiThreadServer.java
import java.net.ServerSocket; import java.net.Socket; import java.io.ObjectOutputStream; import java.io.ObjectInputStream; import java.util.ArrayList; public class HelloWorldMultiThreadServer { public static void main(String argv[]) { try { // サーバーソケットの生成 ServerSocket serverSocket = new ServerSocket(5555); // メインループ while(true) { try { System.out.println("クライアントからの接続をポート5555で待ちます"); Socket s = serverSocket.accept(); ArrayList<String> data = new ArrayList<String>(); // 受信 ObjectInputStream ois = new ObjectInputStream(s.getInputStream()); data = (ArrayList<String>)(ois.readObject()); // データ加工(ここでは頭に0を付与 for(int i=0; i<data.size(); i++){ data.set(i, "0" + data.get(i)); } // 返信 ObjectOutputStream oos = new ObjectOutputStream(s.getOutputStream()); oos.writeObject(data); // ソケット削除 s.close(); } catch (Exception ex) { ex.printStackTrace(); } } } catch (Exception e) { e.printStackTrace(); } } }
HelloWorldSocketClient.java
import java.net.ServerSocket; import java.net.Socket; import java.io.ObjectOutputStream; import java.io.ObjectInputStream; import java.util.ArrayList; public class HelloWorldSocketClient { public static void main(String[] args){ ArrayList<String> data = new ArrayList<String>(); data.add("サンプルテキスト1"); data.add("サンプルテキスト2"); try{ // ソケットを生成 Socket socket = new Socket("localhost", 5555); // オブジェクト出力ストリーム ObjectOutputStream oos = new ObjectOutputStream( socket.getOutputStream() ); // 書き出し oos.writeObject(data); // オブジェクト入力ストリーム ObjectInputStream ois = new ObjectInputStream( socket.getInputStream() ); data = (ArrayList<String>)( ois.readObject() ); // 出力 for(String line : data){ System.out.println(line); } // ソケットを削除 socket.close(); } catch(Exception e){ e.printStackTrace(); } } }
Windows上でJavaをUTF8で開発
原則UTF-8でデータも保存するし,コーディングもするのですが,先日ちょっと躓いたのでメモ.
Windows環境ではJavaは標準でSHIFT-JISで読み書きしてくれます.
コードもSHIFT-JISで書かれていることを期待しているので,UTF-8で書いた時のコンパイルはこんな感じ.
$ javac -encoding utf8 Sample.java
eclipseで開発・テスト実行していた時は問題なかったんですが,jar化してコマンドプロンプトから実行したら文字化け.
どうもコンパイル時にUTF-8を指定していても,やはり読み書きはSHIFT-JISらしい.
eclipseの起動時の引数を参考に解決できました.
$ java -Dfile.encoding=UTF-8 -jar Sample.jar
で文字化けせずに動きます.
いや,まぁ……テキスト読み込み処理でUTF-8を指定してあげればいいんですけど.
ZoteroでGoogle Scholarを使う方法(エラー解決)
Firefox PortableにZoteroを入れました.
問題発生
で.
Google Scholarの検索結果から一括して登録できると知って喜び勇んでアクセスしたのですが.
エラーが発生して取り込めない.
解決策
Scholar設定から,「表示言語の設定」の「Google のメニューやテキストの言語」を英語にしてください.
日本語だとエラーがでますが,英語だと大丈夫でした(日本語の検索結果もOK!).
SiMemos 0.9β公開しました
SiNotesをインスパイアして作ったSiMemosを公開しました.
仕様はオリジナルでも何でもないので,BSDライセンスあたりでコードを公開しようと思ったのですが,自分のプログラミングスキルに不安と恥らいがあるのでまだ公開しません.
せめてJavadocを付与したら公開します.
開発の動機は,SiNotesのデータディレクトリがレジストリに登録されて複数使い分けることができなかったこと(+開発一時凍結&日本語一部非対応)と,Java 1.6.10の新しいルック&フィールを使いたかったため.JavaのSwing勉強兼Linux上でも動くアプリにしたかった,と言うのもありますが.
こちらからダウンロードできますので是非.
http://syo.jpn.org/20081121SiMemos_0_9.html
Nimbusルック&フィール
NetBeansのTomcatのmanager roleのパスワード
先日リリースされたjdk 1.6.10にアップデートした際,NetBeansも再インストールしてみた.
が,NetBeansにバンドルされているTomcatが起動できない.
Manager RoleのIDとパスワードを教えろ,とのこと.
インストール先のconf/tomcat-users.xmlを見ると,全部コメントアウトされている.
それを修正して再起動……ダメ.
途方にくれて,自分でTomcat入れてそっちに接続するかぁ……と思った矢先に有益なページを発見.
/jakarta-tomcat-5.5.9_base/conf/tomcat-users.xml
にあるとのこと.
私のWindows XP環境では以下にありました.IDが"ide"で設定されています.これをNetBeans上のサーバ設定から設定すればOK.
C:/Documents and Settings/
/.netbeans/6.1/apache-tomcat-6.0.16_base/conf
何気に日本語では情報が見つからなかったので書いてみました.一助となれば幸いです.
Google Docsが使えないGoogle Chrome
私が遭遇した不具合を箇条書き.
コメントを挿入してタイプしてもコメント外になる
Docでの現象.
Ctrl+Mでコメントを挿入し,そのままコメント内容をタイプしようとすると,コメントエリアではなく地のエリアに入力されてしまう.
保存されたりされなかったり
Presentationでの現象.
スライド一覧のタイトル部分が更新されていなかったら,保存できていないと見ていいです.開きなおしたら,全部まっ白でした.
スライドショーで確認できるので,スライドショーで表示されなかったら,保存されていないと見ていいでしょう.泣く泣くFirefox3で打ち直しました.
Docでも保存されていなかったかもしれません.怖くて開いてませんが.