2013年2月26日火曜日

mac のpreviewからの切り貼りで濁点が離れる

macのpreviewで表示しているPDFからコピペで文章を切り出してEmacsに貼りこむとなんだかよくわからないが、濁点が別の文字となってしまう。これはいわゆるUTF-8-MACというものらしく、ある意味で正規化した状態なのだそうだ。アプリの側がちゃんと対応していれば大丈夫らしく、例えばwordに貼りこむ文には問題にならないようだ。

しかしこれだとすごく困るのでemacsのマクロとか書いたのだけど、もっといい方法はないかと検索してみたところ Automatorを使ったかっこいい方法があった。 サービスというものを作ってそれで変換する。変換自体はiconvを呼び出しているが、アプリケーションからのデータを受け取って直接クリップボードに入れるようになっている。 これだと、コピーする代わりに、右クリックで出てくるサービスメニューに登録したサービスを指定するだけでUTF-8に変換されたデータがクリップボードに入る。便利便利。っていうか、なんでUTF-8-MACなんて余計なものを使うんだ、って話なわけだが。

2013年2月13日水曜日

github でforkしたrepositoryのupdateに追従

なんとなくgithub内で完結できるのかと思ったらできないらしい。やりかたは ここに書かれてる。

forkしたレポジトリをローカルにclone。以下PROJがプロジェクト名、ORGが元のユーザ、MEが自分とする。

git clone https://github.com/ME/PROJ
cd PROJ
元のプロジェクトをupstreamに登録
git remote add upstream https://github.com/ORG/PROJ
フェッチ
git fetch upstream
こうすると upstream/xxxx というところに内容がとれてくる。 で、これをマージする
git merge upstream/XXXX
XXXXはmaster とかtrunk? mergeに失敗したら修正してから
git add xxx
git commit
最後にpushして終わり
git push origin master
面倒。

2013年2月6日水曜日

lucene-gosen 導入

http://www.mwsoft.jp/programming/munou/lucene_gosen.htmlのとおりに。 google codeからおとす。ipadicとnaist-chasenが選べるが、よくわからんのでIPAで。 こんなふうにして、
import net.java.sen.*;
import net.java.sen.dictionary.*;
import java.io.*;

class Test {
  public static void main(String [] args) throws Exception {
 StringTagger stringTagger = SenFactory.getStringTagger(null);
 Reader reader = new InputStreamReader(System.in, "utf-8");
 PrintWriter writer = new PrintWriter(new OutputStreamWriter(System.out, "utf-8"));
 
 StreamTagger tagger = new StreamTagger(stringTagger, reader);
 while (tagger.hasNext()) {
   Token token = tagger.next();
   writer.println(token.getSurface());
 }
 writer.flush();
  }
}
コンパイル。
javac -cp ".:lucene-gosen-4.1.0-ipadic.jar" -encoding UTF8 Test.java
実行
java -cp ".:lucene-gosen-4.1.0-ipadic.jar" Test
テストです。  <- 入力文
テスト       <- 解析結果
です
。

2013年2月1日金曜日

luceneを動かしてみる

まずはここからtar ballをダウンロード で、
 tar zxvf ~/Downloads/lucene-4.1.0-src.tgz   
 cd lucene-4.1.0
ビルドにivyが必要なのでインストールされていなければ
ant ivy-bootstrap
ant
あっさりビルドできた。便利な世の中になったものだ。

とりあえず、demoをビルド

cd demo
ant
これで、lucene_home/build 以下に色々作られる。できたjarをCLASSPATHに登録する。 lucene_homeで
CLASSPATH=. ; for jar in `find . -name '*.jar'` ; do CLASSPATH=$CLASSPATH:$jar ; done 
export CLASSPATH

さて、indexingしてみる。

java org.apache.lucene.demo.IndexFiles -docs . 
これでindexというディレクトリが作られて、そこにいろんなファイルができるようだ。 で、サーチしてみる。
> java org.apache.lucene.demo.SearchFiles                                                                    [~/test/lucene-4.1.0]
Enter query: 
testing
Searching for: testing
162 total matching documents
1. ./analysis/icu/src/test/org/apache/lucene/analysis/icu/segmentation/TestCharArrayIterator.java
2. ./test-framework/src/java/org/apache/lucene/analysis/package.html
3. ./analysis/common/src/test/org/apache/lucene/analysis/util/TestCharArrayIterator.java
4. ./test-framework/src/java/org/apache/lucene/search/package.html
5. ./test-framework/src/java/org/apache/lucene/util/automaton/package.html
6. ./analysis/common/src/test/org/apache/lucene/analysis/compound/compoundDictionary.txt
7. ./analysis/common/src/test/org/apache/lucene/analysis/compound/da_compoundDictionary.txt
おお。うごいた。とりあえず。