Sekka.FAQ RSSPLAIN

Related pages: Sekka
55555555555555555555545552522555555555555555555555555555555555225555225544424440000555555555555555555555333333222222222221111555555
5

SekkaのFAQ

5

 

5

これまでに聞かれた質問に答えます。

5

操作マニュアルに書かれていない便利な小ネタもここに書かれていることもあります。

5

技術的なこと、アーキテクチャ設計の話題もいくつかあります。

5

 

5

 

5

Sekkaの名前の由来は?

5

名前を付けるとき、二つのことに留意して付けました。

5

ひとつは、SKKから影響を受けているので "S" "K" "K" の3文字を入れること。

5

もうひとつは、Sekkaの前にSumibi.org(炭火)という日本語変換エンジン開発していたので、自分の作品を "火" シリーズにしたかったこと。

5

 

5

アルファベットだけで考えると、Sekki(石器)とかSankaku(三角)とかSikaku(四角)とか覚えやすい名前も色々あったのですが、最終的に「電光石火」という言葉から「石火(Sekka)」に決めました。

5

誰かがC言語でより高速なサーバーを書いてくれた場合に「電光石火」と命名できるという余地も残してあります。

5

 

5

 

5

SKKがあるのに何故別の入力メソッドを作ったの?

5

自分の入力の癖を振りかえってみると、日本語変換中にミスタイプが多く、ミスタイプを許容してくれる入力方式があれば使いやすいだろう以前から思っていました。

5

しかし、DDSKKなど既存のソースコードに手を入れるのは難しいのでやりませんでした。

5

しばらくして、開発中のNendoというオレ処理系が使えるレベルかどうか検証するためにも何らかの実用アプリを作ってみる必要があったのでNendoで書いてみることにしました。

5

 

4

最初はプロトタイプの積もりで作ったのですが、予想以上に使いやすく、SKKを置き換えれるレベルになりそうだったので、細かい作りこみまで進めることになったのです。

5

 

5

 

5

Key-value-storeにTokyoCabinetを使っている理由は?

2

枯れており、Debian 6.0(squeeze)など主要なディストリビューションに入っていることが大きな理由です。

5

kyotoCabinetをいう選択もあったのですが、まだ普及してなかったのでやめました。 (2010年10月頃の話)

2

memcached互換APIでは、レンジサーチなどできないことが多かったのであきらめました。

2

結局、どのKVSを選んでも専用のクライアントライブラリを使う必要があったため、その中から一番枯れたものにしました。

5

kvsへのアクセス部分は一段抽象化してあるので、将来別のKVSを使うことも容易な設計になっています。

5

 

5

※ その時の調査内容はブログ記事 「kiyoka.2010_09_18 [KVS][Sekka] NoSQL(KVS)の選定の続き」を参照のこと。

5

 

5

 

5

モードレス変換はどこから思いつきましたか?

5

ローマ字のまま変換するモードレス変換の歴史は古く、boiled-egg、yc.el、sumibi.elなど過去にお手本があります。

5

私(kiyoka)もyc.elを使っていた時期もありました。

5

ですので、SKKもモードレスにしてみたいというのは自然な流れでした。

5

 

5

 

5

Sumibiを使わない理由は?

5

Sumibi.orgについては色々失敗があります。

5

ひとつは、自分が長文を一気に入力するタイプではないことがわかったことです。

5

Sumibi.orgは、より自然な単語が選択されるためには、なるべく長文で変換する必要があります。1〜2文節程度では変換精度が出ません。たとえば、ある文脈で "漢字" と "感じ"のどちらが出てほしいかは、前後の文章を見れば精度は上がりますが、文節単位で変換していては不自然な候補が出てきてしまいます。

5

特に、送り仮名ありの単語と送り仮名なしの単語の推定ミスが多かったです。

5

 

5

もうひとつは、ローマ字で長文をどんどん入力していると、間違いがあっても目視で見つけることができないことです。

5

Sekkaのようにリアルタイムで変換してみてフィードバックしてくれればいいのですが、Sumibi.orgでは変換処理の計算量が大きいのでそうもいかないのです。(MySQLに複雑なクエリが大量に飛ぶ構造)

5

また、長文で変換してミスタイプに気づいても、そこまで戻って修正する必要があり、文章に集中できないという問題もありました。

5

それが、Sekkaの曖昧辞書マッチングを搭載するという流れに繋がっています。

5

 

5

さらに、メンテナンスが難しくなっているというのがありました。

5

エンジンのテストスイートが無かったので、Sumibi.orgを改造するというのが難しく、モチベーションが上がらないという問題がありました。これは明らかな失敗です。

5

SekkaはTDDで開発しているので、どれだけ開発に空白期間があっても再度メンテナンスに入れるようになっています。

5

また、リファクタリングも気軽に行うことができます。

5

 

5

 

5

曖昧マッチングアルゴリズムにJaro-Winklerが使用されている理由は?

5

私(kiyoka)の知識不足です。

5

Jaro、Jaro-Winklerを試してみて、結果的にローマ字による曖昧マッチングとしては、Jaro-Winklerが感覚的に良い結果を出していたので決めました。

5

もしかしたら、ローマ字のミスタイプの傾向から独自のアルゴリズムを開発すると良いのかもしれませんが、そこまでやっていません。

5

専門の方でもっと良いアルゴリズムの提案があれば教えてください(笑)

2
 追記:
2
   キーボードの物理的なキー配置での距離や、母音や子音を区別して重みを変えるなどの案が存在することを勉強会で教えて頂きました。
5

 

5

 

5

アーキテクチャはどのようになっているのですか?

5

jzRPejte9jsbhbBp-6912B

2

図の通り、TokyoCabinetを使ってなるべく辞書へのアクセスを高速に行えるようにしています。

2

また、変換済のクエリと結果はmemcachedにキャッシュし、2回目以降の同一クエリにはCPUリソースを消費しないような工夫をしています。

5

 

5

 

4

どのようなソフトウェア部品が使われているのですか?

4

NxyK2rnQkDZPap7S-81C9C

4

図の通り、沢山のRubyのGems(モジュール)を使っています。

2

それにより、本質的な変換アルゴリズムに注力することができます。

4

また、全体の約90%をNendoという言語で書いています。

4

 

4

 

0

Windownsでも動きますか?

0

Sekka 1.5.0からWindowsに対応しています。RubyInstaller.orgのRubyを使用します。

0

 

0

 

5

開発ブログはありますか?

5

Sekka専用のブログはありませんが、kiyokaのブログ(!kiyoka.blog)で時々関連記事を書いています。

5

以下が関連記事のリンクです。

5

kiyoka.2010_05_08 [創作心理] 今作りたいもの

5

kiyoka.2010_08_08 [創作心理] 今創りたいもの(2) 『modeless SKK』

5

kiyoka.2010_08_10 [創作心理][SKK] modeless SKK

5

kiyoka.2010_08_12 [Nendo][Sekka] TDD(テスト駆動開発)の重要性

5

kiyoka.2010_08_24 [Ruby][Sekka] Rackについて学ぶ

5

kiyoka.2010_08_27 [Nendo][Sekka] SekkaをRackEXTに載せて、試験運用中

5

kiyoka.2010_08_30 [Sekka] Sticky-shiftを試してみたら、小指が痛くなくなった。

5

kiyoka.2010_09_06 [KVS][Sekka] 個人的なNoSQL(KVS)のライセンス調査

5

kiyoka.2010_09_18 [KVS][Sekka] NoSQL(KVS)の選定の続き

5

kiyoka.2010_09_21 [Sekka][Nendo] NendoがSekkaの足を引っぱっている

5

kiyoka.2010_10_13 [Ruby] fuzzy-string-match 0.9.0 リリース

5

kiyoka.2010_11_01 [Sekka][SKK] 石火(Sekka)の日本語入力のデモビデオ公開

5

kiyoka.2010_11_02 [Sekka] AZIK対応に挑戦

5

kiyoka.2010_11_16 [Sekka] Sekka 0.8.0 リリース

5

kiyoka.2010_11_29 [Sekka] Sekka 0.8.1 リリース

5

kiyoka.2010_11_30 [Sekka] 「modeless SKK」を着想してから「Sekka」が具現化するまで道のり

5

kiyoka.2010_12_01 [Sekka] ユーザー語彙登録UIについて考える

5

kiyoka.2010_12_05 [Sekka] ユーザー語彙登録UIについて考える(続き)

3

kiyoka.2010_12_06 [Sekka] Sekka 0.8.2 リリース

3

kiyoka.2010_12_27 [Sekka] IM飲み会2010に参加した

3

kiyoka.2011_02_12 [Sekka] Sekka 0.8.3 リリース

3

kiyoka.2011_02_24 [Sekka] Sekka 0.8.4 リリース

3

kiyoka.2011_03_10 [Sekka] Sekka 0.8.5 リリース

3

kiyoka.2011_04_14 [Sekka] Sekka 0.8.6 リリース

2

kiyoka.2011_06_26 [Sekka] Sekka 0.8.7 リリース

2

kiyoka.2011_07_06 [Sekka] 平仮名フレーズ辞書を追加してみようかな(1)

2

kiyoka.2011_07_07 [Sekka] 平仮名フレーズ辞書を追加してみようかな(2)

2

kiyoka.2011_07_13 [Sekka] 平仮名フレーズ辞書を追加してみようかな(3)

2

kiyoka.2011_08_10 [Sekka] 平仮名フレーズ辞書を追加してみようかな(4)

2

kiyoka.2011_07_31 [Sekka] Sekka 0.8.8 リリース

2

kiyoka.2011_08_18 [Sekka] グダグダ変換

2

kiyoka.2011_08_21 [Sekka] スペースキーによる変換確定を試す

2

kiyoka.2011_08_24 [Sekka] Sekka 0.9.0 リリース

2

kiyoka.2011_08_25 [Sekka] バグ原因調査: sekka-serverの起動時に辞書の読み込みに失敗する問題

2

kiyoka.2011_08_27 [Sekka] 平仮名フレーズを辞書として持つのは失敗?

1

kiyoka.2011_09_03 [Sekka] Sekka 0.9.1 リリース

1

kiyoka.2011_09_08 [Sekka] RedisEXTを試す

1

kiyoka.2011_09_10 [Sekka] RedisEXTは仮想メモリ機能を使ってメモリを節約してくれる

1

kiyoka.2011_09_17 [Sekka] Sekka 0.9.2 リリース

5

 

5

 

5

他に質問などありましたらコメント欄に書きこんで下さい

5

...comment disabled...

5

 

5

[以上]