コーパスと実用のサイクル (2)

昨日のエントリ(コーパスと実用のサイクル - アスペ日記)の続き。 「コーパスを使って漢字かな・かな漢字変換を作り、その間違いをコーパスに反映する」というのを具体的にどうするか。自分としては、せっかく現代日本語書き言葉均衡コーパス (BCCWJ)がで…

コーパスと実用のサイクル

他人にはどうでもいいことだが、ぼくは毎日 1時間、自分のための時間(娯楽以外なので、読書と語学は除く)を設けている。数学の勉強・プログラミング・ブログエントリ作成等に主に使っている。 生きる上でワークライフバランスが重要なように、考える・やる…

良い IME に必要なもの 3つ

日本語のかな漢字変換に必要なもののうち、主要なものを 3つ挙げてみる(細かく言えば、必要なものはもっとずっといっぱいある)。 1. N-gram 言語モデル 直接つながる前後の文脈によって曖昧性を解消する。これが基本。「おもってはいる」が「思って-入る」…

ワイン問題詳しく

http://d.hatena.ne.jp/nokuno/20110802/1312236781で紹介されている@http://twitter.com/neubig さんの問題について、id:nokuno さんの解説に加え、具体的な答えを書いてみる。 問題を改めて引用。 貴重なワインの瓶27本を持っていて、その内1本は毒で汚染…

可変次数 N-gram デコードのアルゴリズム

前に書いた N-gram 漢字-かな変換 - アスペ日記 のアルゴリズムについて。 かなり縦に長いエントリになると思う。途中までは一般的な日本語自然言語処理にかかわること。 例として、「かれがくるまでまつ」というひらがなの文をデコードして、対応する漢字か…

雑感3

この数日間は、イベント等があって趣味のプログラミングはしていない。 前々回、 前回 とネガティブな日記を書いた。考えを論文にして、アルゴリズムに関するものであっても実験で性能を出して国際学会で採択されるなどしないと、アルゴリズムの内容も読んで…

雑感2

今日も引き続き、ソウルジェムの穢れをまき散らすような日記を書いてみる。 なぜ論文を書きたくないか。 それは、「そりゃこれは書かないとだめだよね」と納得できる以上のことを書かないといけないからだ。 まず、先行研究。 修士のころ、論文を書いていて…

雑感

N-gram かな漢字変換 をアップデート。 内部の Unicode 化、未知の文字への対応。 これまでは未知の文字があると結果を返さなかったので、特に漢字かな変換では致命的だったが、今回の変更で大丈夫になったかもしれない。 まだ漢字かなでは試してないけど。 …

N-gram かな漢字変換(3)

リポジトリを更新した。N-gram ID から スコアを取得するのに cdb を使っていたのをメモリマップトファイルに変えた。 さらにスコアは 1バイトで持つようにした。 400MB ぐらいだったサイズが 20MB ぐらいになって、速度もだいぶ向上した。合計すると、辞書…

N-gram かな漢字変換:続き

昨日(記事を)書いた N-gram かな漢字(&漢字かな)変換について。 プログラムを書いたのはこの一週間ぐらい。 先週は仕事が終わってからマクドナルドで書いて、連休中は家でも書いていた。N-gram の N は、最初は 3 で十分かと思って、それで試した。 "Tr…

N-gram 漢字-かな変換

@gologo13さんの言語モデル配布ページのデータを利用して簡単な漢字->かな/かな->漢字変換ができないかなーと思って作ってみた。言語モデルの作成には SRILMを使用。配布中のデータを SRILM で扱うには多少加工しないといけないので、その変換スクリプトも作…

.gdbinit を公開してみる

タイトルのまま。自分はずっと Windows で開発してきたので、C++ は Visual Studio(VS) でやっていた。 VS のいいところは、デバッグ機能。 条件付きブレークポイントやメモリ変更時のブレークといったことをしても爆速で動いてくれてきちんと止まってくれる…

Bloom filter の気持ち

Bloom filter について書いてみる。 実装例についてはBloom filterのシンプルな実装 - 西尾泰和のはてなダイアリー等があるので、ここでは「気持ち」中心に。 前提:ハッシュ関数と key-value store の知識 注意:途中、説明のために実際の Bloom filter とは…

手抜き日中判別(繁体字)

前回の続き。 繁体字の場合。 use strict; use utf8; use Encode; my $enc_cp950 = find_encoding('cp950'); my $enc_cp932 = find_encoding('cp932'); my $level2_eucjp; $level2_eucjp .= chr(0xd0 + ($_ / 94)) . chr(0xa1 + ($_ % 94)) for 0..3389; # 3…

手抜き日中判別

Twitter 上で、 id:showyou さんがログデータの日中言語判別をしたいという話をしていたので、それについて。まず前提として、文字だけ見ても日本語と簡体字中国語(繁体字はもっと面倒だけど、ここではいったん棚上げ)を 100%判別することはできない。 と…

極大部分文字列

Twitter で「極大部分文字列を求めるいいライブラリないかなー」とつぶやいていたら id:tkng さんに esaxx という岡野原さんのライブラリを教えてもらった。esaxx というライブラリ名なのに説明が"stxx is ..."で始まったり、説明がところどころおかしい*1の…

予備審査

予備審査が終わった。テーマは相変わらず「可変長オーダー Linear-Chain CRF の効率的な計算法」。今回も、一応PDFとスライド、新バージョンのデモをアップロードしておく。PDFスライドデモ(FireFox 専用)アルゴリズムはかなりすっきりした。次は、これを C/…

可変長オーダーCRF

修士論文のテーマである「可変長オーダー Linear-Chain CRF」(以下「可変長CRF」)についてのメモ。まず、自分の考える「可変長CRF」の定義。その前に、Linear-Chain CRF(以下 CRF)について。一般的な CRF では、あらかじめ Markov オーダーを決める。1次…

タガー2

前回(タガー - アスペ日記)の続き。前回の考え方(変形 n-gram)では、学習データに出現する文脈については遠くのラベル情報が利用できるという意味では利点があるのだが、素性情報の利用が難しいという欠点があった。そのため、それを補うことを考える。…

ブラウザ監視

昨日(7/29)、研究室にいる時間の 9割ぐらいをネット閲覧で過ごしてしまった。これはよくない。ということで、対策を考える。例によって、意志を強くするという方向以外で。ネットの見過ぎに関しては、以前「http://d.hatena.ne.jp/lionfan/20080523」に感…

Image::Magick と WSH のメモ

16x16 ドットの画像ファイル(複数)から自動で外字登録(Windows)するというありふれたタスクの中で、いくつか問題点にぶつかったのでメモ。まず、外字は 64x64ドットなので、4倍に拡大する必要がある。Perl でやることにする。そのため、PerlMagick をイン…

一様乱数のソート

「区間[0,M)なるN個の一様乱数を昇順に配列に格納したい.M は十分に大きい.領域計算量O(N),時間計算量O(N)でこれを行う方法を考えよ.」という問題について、バケットソートを使って Python で書いてみた。比較回数(適当だから間違ってるかも)は、1000…

FSNLP7章のEMが怪しい件

FSNLP(Foundations of Statistical Natural Language Processing)は自然言語処理業界の中では知らない人はないというほど有名な本(英語)。出版年度は古く、内容もかなり時代遅れになってきつつあるのだが、自然言語処理の広い範囲を網羅した本ということで…

タガー

今考えていること。タスクは「品詞タグ付け」(英語等、分かち書きのされる言語の場合)または「形態素解析」(中国語・日本語等の場合)(以下、「形態素解析」で統一)。これらのタスク自体時代遅れという意見もあるだろうけど、工学としての自然言語処理…

早寝

ぼくはこれまで、何度も早寝の習慣をつけようと試みてきたが、成功したためしがない。 それで、昨日の夜はこの状況を打破すべく、そのための方法を考えてみた。思いついたのは、"Twitter で、毎日自動的に「『これから寝る』と書きこむ宣言」をする" という…

好きな場所で Visual Studio コマンドプロンプトを開く

タイトル通り。 環境は Visual Studio 2008 Professional。元々スタートメニューにある Microsoft Visual Studio 2008→Visual Studio Tools→Visual Studio 2008 コマンド プロンプト これを右クリックして場所を調べる。 その場所にある "vcvarsall.bat" を…

protoize.pl

最近、事情があって古い C のソースを利用することがあったのだが、関数定義が K&R 式(宣言部は #ifdef で分岐)。 定義に関しては、今の C コンパイラでも K&R 式で通るから K&R 式で統一するというやり方だろう。 しかし、これでは C++ コンパイラは通ら…

作成

とりあえず作ってみた。 mixi のほうで毎日書いている日記の中から日常の些事を除いた部分をこちらにも貼ることを考え中。 あまり更新されなさそうな予感。