予測入力システム: PRIME

最新版

予測入力とは

PRIME は POBox のような予測入力システムです. 予測入力とは, 単語辞書の情報やユーザの入力履歴などに基づいて, 少ないキー入力で効率的な文書作成を実現する文字入力手法です. 例えば次の図は「こんにちは」という単語の入力を, 「こん」という先頭の 文字の入力と, 単語の選択によって行っています.

「こんにちは」の入力

「こん」から始まる単語を辞書データから検索し, ユーザの利用頻度などから 優先順位を各単語に与えることにより, 入力した「こんにちは」やその他の 候補である「今週」や「コンピュータ」という単語を算出しています.

PRIME の特徴

フリーソフトウェアの予測入力システムには, これまで POBox がありましたが, PRIME は POBox に比べて以下の特徴があります.

単文節変換の実現

POBox では単文節変換をサポートしていなかったため, 用言 (動詞・形容詞など) や 助詞 (「の」・「が」など) の入力に癖がありました. 下の図のように, 例えば「私の」や「美しい」を入力するためには POBox では 「私」「の」や「美し」「い」と 2回に分けて入力する必要がありました. (拙作 POBox クライアントである POBox for Emacs では, Canna を併用することにより, この問題を解決していました. しかし, クライアント側での解決なため, 単語学習などでいろいろと無理が ありました).

単文節変換のサポート

今後は連文節変換の実現を目指します.

単語辞書に品詞や頻度などを付与

単文節変換を実現するために, 単語に品詞情報を付与しました. 加えて頻度情報も付与したため, より一般的な単語の方が 高い優先順位になるようになりました.

また, POBox では単語の読みがローマ字で記載されていたため, ローマ字の 入力規則が限定されていました. 例えば「sinnai」と「shin'ai」は 別の単語として登録されていました. PRIME では, ひらがなでの記載が可能なので ローマ字入力の揺れを吸収できます.

辞書形式の変更

現在の実装では pubdic と SKK のラージ辞書を元に辞書を作成しています. 頻度情報は pubdic の頻度情報を利用しています.

今後は MeCab と辞書データを共有する予定です. そのため, 辞書フォーマットも変更されます.

複数の接続方法

PRIME は以下の方法でクライアントと接続します.

標準入出力による接続が, PRIME における一般的な接続方法です. PRIME は Ruby で実装されており, 変換ルーチンをクラスとして利用することが 可能です. TCP/IP による通信方法も提供していますが, セキュリティの 問題は解決していないので, 実用には向いていません. TCP/IP による接続は クライアントのプロトタイピングなどでの利用を想定しています.

今後は各言語用のバインディングを作成したいと考えていますが, 開発予定はありません.

インストール

ここでは PRIME の変換サーバのインストールについて説明します. クライアントについては PRIME for Emacs を参照してください.

パッケージ

Debian パッケージが http://taiyaki.org/debian/から 入手できます. パッケージ名は prime です. Debian パッケージは 高宮安仁さんに 作成していただきました. ありがとうございます.

インストールに必要なソフトウェア

PRIME をインストールするには, 以下のソフトウェアも必要になります.

これらの Debian パッケージは Ruby を除いて, http://taiyaki.org/debian/から 入手可能です.

また, sary (CVS 版) の Ruby バインディングは, まだ upstream で反映されて いません. そのため, 暫定的に http://taiyaki.org/tmp/sary/ にアーカイブが置いてあります. sary-cvs-ruby_20030507.tar.gz などから作成して下さい.

ダウンロード

ソース一式を http://taiyaki.org/prime/src/ から prime_<バージョン>.tar.gz をダウンロードして下さい.

インストール

ダウンロードしたソース一式を展開した後, prime ディレクトリにある Makefile を適宜変更してください. ただし, ほとんどの環境では, 変更は 必要ないはずです.

その後, ルート権限で "Make install" を行ってください.

アンインストール

ルート権限で "Make uninstall" を行ってください. アンインストール時の Makefile は, インストールした時と同じ内容である必要があります.

アンインストーラの不具合で, アンインストールしても一部のディレクトリが 削除されずに残ってしまうバグがあります.

動作テスト

コマンドラインから prime コマンドを実行したあとで, "help" + [Enter キー] と入力すると, 以下のような出力が得られるはずです.

~% prime
help
ok
close		- close the connection
help		- print the help message
reset_context		- reset context
version		- show the version number
l	PATTERN	- look up PATTERN with hybrid matching
lookup_exact	PATTERN	- look up PATTERN with exact matching
lookup_hybrid	PATTERN	- look up PATTERN with hybrid matching
lookup_prefix	PATTERN	- look up PATTERN with prefix matching
set_context	CONTEXT	- set context to CONTEXT
learn_word	KEY VALUE PART CONTEXT SUFFIX REST	- learn and record a word to the user dictionary
Note: Use TAB for delimiters.

次に "l" + [TAB キー] + "tes" + [Enter キー] と入力すると, 以下のような 出力が得られるはずです.

l	tes
ok
てすと	テスト	priority=15818	part=名詞	base=テスト	basekey=てすと	
conjugation=	suffix=
てそう	手相	priority=15092	part=体言	base=手相	basekey=てそう	
conjugation=	suffix=
てしま	手嶋	priority=10019	part=人名	base=手嶋	basekey=てしま	
conjugation=	suffix=
てすう	手数	priority=10004	part=名詞	base=手数	basekey=てすう	
conjugation=	suffix=
てしろぎ	手代木	priority=10001	part=人名&地名	base=手代木	basekey=てしろぎ	conjugation=	suffix=
てすり	てすり	priority=10001	part=名詞	base=てすり	basekey=てすり	
conjugation=	suffix=
てした	手下	priority=10001	part=名詞	base=手下	basekey=てした	
conjugation=	suffix=
tes	tes	priority=9999	part=未知語	base=tes	basekey=tes
てs	テs	priority=9999	part=未知語	base=テs	basekey=てs
てs	てs	priority=9999	part=未知語	base=てs	basekey=てs

メーリングリスト

PRIME に関してのメーリングリストを QuickMLで作成しました.

参加される方は, 以下のようなメールを送信してください. また Cc: に自分のメールアドレスを付けないでください. QuickML の仕様上, Cc: に参加者以外のメールアドレスがあると 参加できません.

To: prime@taiyaki.quickml.com
From: (自分のアドレス)
Cc: komatsu@taiyaki.org
Subject: 参加します (お名前)

(本文にかるく自己紹介でもお願いします,
 何も書かれていないと QuickML のシステム上登録できません.)

ライセンス

ライセンスは基本的に GPL2 です. ただし将来 GPL2 以外のライセンスを独立して 用意する可能性もあります. (GPL2 をやめて別のライセンスにするのではなく, 同じソフトウェアだけど, ライセンスだけが違うものを用意するという意味です).

著作者は, 以下の辞書データと session.rb を除いて 小松弘幸 <komatsu@taiyaki.org> です.

辞書データ

dict ディレクトリ以下の prime-dict, prime-dict.ary, prime-dict-part, prime-dict-part.ary は, FreeWnn に付属する pubdic.p と SKK に付属する SKK-JISYO.L を加工して作成されています. これら辞書データの使用条件は, pubdic.p と SKK-JISYO.L の両方の使用条件を満たすものとします.

session.rb

lib/prime/session.rb の原作者は 高林哲さんです. 小松がこれを PRIME 用に改変して利用しています. ライセンスは GPL2 です.

更新履歴

Ver 0.5.0(2003-05-07)

小松 弘幸 <komatsu@taiyaki.org>
$Id: index.html,v 1.7 2003/05/13 02:43:58 komatsu Exp $