euphonictechnologies’s diary

Haskell超初心者の日記です。OCamlが好きです。

follow us in feedly

Haskellでスペル修正プログラムシリーズ

Haskellで作ったものすごく簡単なスペル修正プログラムを評価してみる - その4:修正用コーパスを読み込んで精度を確認する - Haskellの数値型と型クラスについて考える

前回はfor-eachで修正用コーパスの単語をひとつひとつテストすることができるようになった。 次は修正用コーパス全体に対して修正率を算出して表示できるようにする。 assertLT/assertGTをつくる HUnitにはどうも「aがbより小さい」みたいなAssertionがない…

Haskellで作ったものすごく簡単なスペル修正プログラムを評価してみる - その3:まずはスペル修正をforMを使ってひとつひとつ確認にしてみる

前回は単語修正用のコーパスファイルを読み込んで、それをタプルのリストにするところまでできた。今回はそれを使って、スペル修正を評価することを試みる。 コーパス内のファイルをfor-eachでひとつひとつテストする:forMを使う、解剖してみる for-eachした…

Haskellで作ったものすごく簡単なスペル修正プログラムを評価してみる - その2:修正単語コーパスのロードとパージング

前回はユニットテストの下ごしらえをして評価を実装する手前までやってみた。前回まででIntelliJ上でボタンクリックでユニットテストが走る。この上に実際に評価をするためのコードを書き足していこう。 スペル修正プログラムはどう書くかによると[OTA] Birk…

Haskellで作ったものすごく簡単なスペル修正プログラムを評価してみる - その1:IntelliJ上でHUnitを使ってスペル修正の評価テストを書く準備

前回はひとまずスペル修正プログラムが完成して、コマンドラインから修正したい単語の引数を与えるとその修正した単語と修正候補のトップ5が表示されるようにしてみた。 今回はスペル修正プログラムはどう書くかに従って、このスペル修正プログラムの評価が…

Haskellでものすごく簡単なスペル修正プログラムを作ってみる - その3:スペル修正プログラムを仕上げる

前回は修正候補を列挙する関数を定義した。スペル修正プログラムはどう書くかをなぞりながらいろいろ関数を定義してきたが、今回はそれらを使って最後残っている関数correctを定義していきたい。 スペル修正プログラムはどう書くかによればcorrectはエラーモ…

Haskellでものすごく簡単なスペル修正プログラムを作ってみる - その2:編集距離を使って単語候補を列挙する::リスト内包表記を使う

前回はURLをフェッチするモジュールを外部化してMainモジュールはいまスペル修正ロジックだけを含むようになっていて大変見通しがいい。なので、コーディングを進めて今回はスペル修正に必要な候補を列挙する関数を書いていきたい。 編集距離から候補単語の…

Haskellでものすごく簡単なスペル修正プログラムを作ってみる - その1.6:URLをフェッチして内容をキャッシュするモジュールをつくる

前回は文字列をText型で取り扱うように全体を書き換えてすこし見通しが良くなった。 次は、URLをフェッチする部分を外部モジュールに抜き出して、さらにローカルキャッシュ機能を付け加えていこう。 まずfetchUrlを外に追い出す リファクタリングだ! fetchU…

Haskellでものすごく簡単なスペル修正プログラムを作ってみる - その1.5:文字列処理をTextモジュールを使うようにする

前回は、スペル修正プログラムに必要なword関数(外部のテキストファイルを読み込んで単語列を作り出す)とtrain関数(その単語列から単語->出現回数なるマップを作り出す)を定義した。 ここから一気に後半の部分を完成させたいところだけど、すこしコードを綺…

Haskellでものすごく簡単なスペル修正プログラムを作ってみる - その1:URLをフェッチして修正単語コーパスを作る

Peter Norvigのスペル修正プログラムはどう書くか(リンク先は青木氏による日本語訳)を見てみると画面一枚に収まるような短いPythonコードでスペルチェッカがかけることがわかる。スペルチェッカみたいなちょっと高度なことをしているプログラムが書けると、…