kenkovlog

けんこふたんっオフィシャユブヨグッ
アンッ!アンッ!アンッ!アンッ!

本日のコフライブッ!

これは こふ語 Advent Calendar 2014 2日目 の記事ですっ

昨日は @mohemohe さんによる こふ語とl10n でしたっ ToastStream は yabai(kakujituni)

眼科にて

眼科のヒト「はーい、眼圧測りますから座ってください。」
けんこふ「アッ…ハイッ…」
眼科のヒト「はーい、そのままにしていてくださいね。」
機械「プシュッ!」
けんこふ「アンッ!」
眼科のヒト「眼を瞑ったら測れないので開けててくださいねー。もう一度いきます。」
機械「プシュッ!プシュッ!プシュッ!プシュッ!」
けんこふ「アンッ!アンッ!アンッ!アンッ!」

コンバッターたちっ

上の会話はこふ語の標準的な使い方の例でしたっみなさんはこふ語使っていますかっ?

はじめはどうやって使ったらいいか分からないかもしれませんねっそういうときは @mohemohe さんによる

@nyaocat さんによる

を使うことでっ文をこふ語に変換することができますっ

コフライブッ!

こふ語には こふ語コッパス というコッパスがありますっ

せっかく作ったんだからこのこふ語コッパスを使ってこふ語変換器を作りたいなぁと思い作ったのが コフライブッ! こと https://github.com/kenkov/kovlive ですっ

なにはともあれっコフライブしてみましょうっ

Python3 が必要なのでっはいっていないヒトははじめに Python 3 (最新は Python 3.4.2) をインスヨッルしましょうっ

そうしたらまずコフライブを clone しますっ

$ git clone https://github.com/kenkov/kovlive && cd kovlive

初めてのコフライブなのでっまずは付属するテスヨ用のテキスヨファイル test.txt

この文章は、こふ語変換プログラムであるコフライブ!用のテストテキストです。
カタカナのテストのためにわざとカタカナが多めになっています。
コフライブはプログラミング言語Pythonで実装されており、IBM モデルを利用して
フレーズエキストラクトしてこふ語モデルを作成し、
かな漢字変換のしくみで入力された文をこふ語に変換します。

で試してみるとよいでしょうっ次のようにコフライブしますっ

$ python kovlive.py test.txt
この文章はっこふ語変換プヨグヤムであるコフライブっ!用のテスヨテキスヨですっ
カタカナのテスヨのためにわざとカタカナが多めになっていますっ
コフライブはプヨグヤミンッ言語Pythonで実装されておりっIBM モデルを利用してっ
フレッズエキストゥヤクヨしてこふ語モデルを作成しっ
かな漢字変換のしくみで入力された文をこふ語に変換しますっ

きちんとこふ語に変換されましたねっ

次に標準入力からコフライブしてみましょうっ

$ echo 今日のお昼は、ステーキを食べたい。 | python kovlive.py
今日のお昼はっステッキを食べたいっ

このような形でこふ語に変換することができますっ ブヨグをかいてコフライブしてこふ語で公開するといったことが可能になるわけですねっ

こふ語モデル

こふ語は「っ」とカタカナの使い方に特徴がありますっとりわけカタカナの使い方は 刻々と変化していくためっ最新のコッパスからカタカナの使い方をある程度自動で学習できると 便利ですっ

そこでコフライブではっカタカナの使い方をこふ語コッパスから こふ語モデル という形で学習しっ かな漢字変換 のしくみで与えられた文を最適なこふ語に変換しますっ

こふ語モデルは対応するフレッズを抽出することで作られますっ 対応するフレッズはっ対応する語のペアから抽出されますっ この語のペアはこふ語コッパスで与えられっコフライブには model/keyword.txt として付属していますっこのファイルの中には

アン!,アンッ!
ポーズ,ポッズ
プロトコル,プヨトコル

という形で語のペアが記述されていますっこのペアから

       ア ン ッ !
ア    |x| | | |
ン    | |x| | | アン <-> アン
!    | | |x|x| ! <-> ッ!

       ホ ゚ ッ ス ゙
ポ    |x|x| | | |
ー    | |x|x| | | ポー <-> ポッ
ズ    | | | |x|x| ズ <-> ズ

       フ ゚ ヨ ト コ ル
プ    |x|x| | | | | プ <-> プ
ロ    | | |x| | | |
ト    | | |x|x| | | ロト <-> ヨト
コ    | | | | |x| |
ル    | | | | | |x|

というようにっ語の中のどのフレッズが対応しているかを学習しますっ

注釈

どの単語がどの単語と対応しているかという関係を発見する 方法を 単語アライメント といいます。コフライブでは 単語アライメントとして IBM モデル 2 をつかっています。

もしこの辺りのことを調べたいと思った場合には、 自然言語処理シリーズ 機械翻訳 がおすすめです。

コフライブ失敗っ!

コフライブで失敗することもよくありますっ例えば

$ echo いつかドイツのトリを見てみたい | python kovlive.py
いつかヨイツのヨリを見てみたいっ

となってしまいますっ

こふ語ではカタカナ先頭の「ト」は「ヨ」に変換しませんがっ上の例では変換されていますねっ

コフライバーたるものここでめげてはいけませんっ

この問題を解決する簡単な方法はっ model/keyword.txt に「ドイツ」と「トリ」を 追加することですっ次のように追加してみましょうっ

ドイツ,ドイツ
トリ,トリ

追加したらモデルを再学習すればきちんとこふ語変換できるようになりますっ 以下ではモデルの再学習の方法を紹介しますっ

注釈

先頭の「ト」問題のために毎回単語を登録するなんてっ!と思われた方 も多数おられるでしょうっ

解決策はいろいろありますがっ例えば単語区切りにタグをつけて学習させる 方法があげられますっこれは現在実験中ですっ

ところでっコフライブに失敗したとき model/keyword.txt に対応する語を追加する のはおすすめの方法ですっなぜなら追加した語のペアそれ自身以外にもっ追加したペアに含まれる 他のフレッズも学習されっ全体としてうまくコフライブできるようになる可能性があるからですっ

モデルの再学習には

が必要になるのでっ

$ pip install jinja2

などしてあらかじめインスヨッルしておいてくださいっ

準備ができたらモデルの再学習を次のようにしますっ

$ # Makefile を生成する
$ python config.py
$ make

自分だけのこふ語モデルでっ最高のコフライバーを目指しましょうっ

さいごに

本日紹介した様々なこふ語変換器をみてわかるようにっ こふ語を習得するための環境が着実に整ってきていますねっ みなさんもこれらを使ってっこふ語っはじめてみませんかっ?

明日は @sierrarries さんの「ぴっ」ですっこれは期待ですっ

それではっ今日も一日っアンッ!アンッ!アンッ!アンッ!

けんこふたん