2009-11-01から1ヶ月間の記事一覧

octets型定義

common lispでは、バイト配列型を(vector (unsigned-byte 8))と表す。 この型は個人的にはかなり使用頻度が高いのだが、見ての通り長くて打ちづらい。今まではその時々によって、上の型をそのまま使ったり、エイリアス型を定義して使ったりしていたのだが、…

Shift_JIS: 全角→半角変換

Shift_JISの全角文字を半角文字に変換するrubyの拡張ライブラリを作成した。 中身は変換テーブル*1を用意してマッピングを行っているだけの単純なものだが、毎回一から作るのは若干面倒なので、まとめてここにおいておく(ruby/sjis_conv-0.1.0.tar.gz)。使え…

形態素解析器(4)

形態素解析器の4。 今回は未知語処理+αを扱う。 前回までで作成した形態素解析器では、下の例のように未知語が"_"と表示されてしまうが、これをちゃんと"ocaml"と表示されるようにするのが今回の主たる目的。 ;; 未知語=単語辞書に登録されていない語は、"_…

形態素解析器(3)

形態素解析器作成の3。 前回、形態素解析のステップを大まかに二つに分けた。 入力テキストを形態素列に分割する。一般に、入力テキストは複数の形態素列に変換可能なので、その全てのパターンを列挙する それらの分割にコスト(優先順位)を付与する。コスト…

clojure

先週のShibuya.lisp TT#4への参加をきっかけ*1に読み始めた『Programming Clojure』を一通り読み終えた。 今までは、JVM上の言語ということで何となく敬遠していたが、結構いろいろ面白そうな特徴があった。 とりあえず個人に良さそうだと思った点は以下の通…

Shift-JIS追加

sbcl(1.0.28)は、文字コード(external-format)に:shift-jisを指定することができない。 > (string-to-octets "あいうえお" :external-format :shift-jis) debugger invoked on a SIMPLE-ERROR in thread #<THREAD "initial thread" RUNNING {AB6E569}>: Unknown external-format :SHIFT-JIS ;; :shift_ji</thread>…

形態素解析器(2)

形態素解析器作成の2。前回で必要なデータの準備は終わったので、今回からは解析器の実装に入る。 この実装では、形態素解析はおおまかに次の二つの段階に分けられる。 入力テキストを形態素列に分割する。一般に、入力テキストは複数の形態素列に変換可能…

LC_ALL環境変数とsortコマンド

自分の環境では、sortコマンドを実行する時にLC_ALL環境変数に'C'をセットするかしないかで、処理終了までの時間が著しく変わる。 # 約40万行のデータ > wc -l words 392126 words # 入っているのはUTF-8の日本語(IPA辞書を利用) > head words やぼったい や…

形態素解析器(1)

以前に「DoubleArrayと辞書があれば、形態素解析器は案外簡単にできるのではないか」というようなことを書いた。 試してみたところ、実際に結構簡単に(ほぼ)MeCab互換の形態素解析器ができたので、それを何回かに分けて載せていくことにする。 作るもの 未知…