2009-11-01から1ヶ月間の記事一覧
common lispでは、バイト配列型を(vector (unsigned-byte 8))と表す。 この型は個人的にはかなり使用頻度が高いのだが、見ての通り長くて打ちづらい。今まではその時々によって、上の型をそのまま使ったり、エイリアス型を定義して使ったりしていたのだが、…
Shift_JISの全角文字を半角文字に変換するrubyの拡張ライブラリを作成した。 中身は変換テーブル*1を用意してマッピングを行っているだけの単純なものだが、毎回一から作るのは若干面倒なので、まとめてここにおいておく(ruby/sjis_conv-0.1.0.tar.gz)。使え…
形態素解析器の4。 今回は未知語処理+αを扱う。 前回までで作成した形態素解析器では、下の例のように未知語が"_"と表示されてしまうが、これをちゃんと"ocaml"と表示されるようにするのが今回の主たる目的。 ;; 未知語=単語辞書に登録されていない語は、"_…
形態素解析器作成の3。 前回、形態素解析のステップを大まかに二つに分けた。 入力テキストを形態素列に分割する。一般に、入力テキストは複数の形態素列に変換可能なので、その全てのパターンを列挙する それらの分割にコスト(優先順位)を付与する。コスト…
先週のShibuya.lisp TT#4への参加をきっかけ*1に読み始めた『Programming Clojure』を一通り読み終えた。 今までは、JVM上の言語ということで何となく敬遠していたが、結構いろいろ面白そうな特徴があった。 とりあえず個人に良さそうだと思った点は以下の通…
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。前回で必要なデータの準備は終わったので、今回からは解析器の実装に入る。 この実装では、形態素解析はおおまかに次の二つの段階に分けられる。 入力テキストを形態素列に分割する。一般に、入力テキストは複数の形態素列に変換可能…
自分の環境では、sortコマンドを実行する時にLC_ALL環境変数に'C'をセットするかしないかで、処理終了までの時間が著しく変わる。 # 約40万行のデータ > wc -l words 392126 words # 入っているのはUTF-8の日本語(IPA辞書を利用) > head words やぼったい や…
以前に「DoubleArrayと辞書があれば、形態素解析器は案外簡単にできるのではないか」というようなことを書いた。 試してみたところ、実際に結構簡単に(ほぼ)MeCab互換の形態素解析器ができたので、それを何回かに分けて載せていくことにする。 作るもの 未知…