Xプロトコルを盗聴してユーザに表示している文字列を推測し、それらを日本語XIMサーバの参照辞書に登録、更新するXサーバのプロキシです。
出力履歴を利用した予測入力
コンセプト
予測入力では、入力履歴や与えられたコンテキスト辞書から予測候補を提示、補完することができますが、ユーザが初めて入力する(計算機の知らない)語句を補完することは当然できません。
XwiretapはXサーバとXクライアントの通信を盗聴して、アプリケーションが画面に表示した文字列を出力履歴に記録し、それを日本語XIMサーバの予測候補として利用できるようにします。結果として、ユーザが読み書きした経験を計算機と共有できるようになります。
使用例
関連研究・製品
七色(Nanashiki)はEmacsのdabbrev-expand(dynamic abbreviation)を日本語の文書に実用的に適用できるようにして、「入力している文章の周辺の単語を検索し、予測候補として提示する機能」を実現しています。
句倉(Kukura)はウェブブラウザ、端末エミュレータ、Emacsに表示した文字列を外部文書として蓄積し、それらの外部文書に含まれる文字列を予測候補として提示する機能を実現しています。
auの携帯電話W22SA(SANYO製)は「返信自動学習機能」を搭載しています。返信メール作成時に、もとのメールに含まれていた単語を予測変換の候補として利用できます。オムロンソフトウェアのAdvanced Wnn V2に追加された形態素解析機能を利用しているようです。
七色はEmacs/POBoxで利用できますが、Emacsの世界で閉じてしまっています。
句倉は文書を蓄積する方法をアプリケーションの種類毎に用意する必要があります。またウェブブラウザの場合、文書の一部を「閲覧」した場合でも、その文書全体から予測候補を生成するため、ユーザが見ていない部分の単語まで予測候補の対象になってしまいます。
動作概要
1. プロトコルを盗聴
Xサーバのとしてプロキシとして、ディスプレイ接続を転送します。リクエストPolyText8, PolyText16, ImageText16, ImageText8の内容から、表示文字列を推測します。
2. 読み文字列の取得
MeCabを使用して形態素解析を行い、読み文字列と文節の区切りを取得します。
3. 参照辞書への登録
表示文字列の先頭から文節を削りながら参照辞書に登録します。さらに、各文節をひとつずつ登録します。
予測入力の候補の優先度
入力履歴は入力時のタイムスタンプを、出力履歴は出力時のタイムスタンプを保持しています。日本語XIMサーバは入力履歴、出力履歴に関わらず、タイムスタンプの新しい予測候補を優先します。そのため、参照したい文書を画面に表示するだけで、その表示している部分の内容が優先的に予測入力の候補となります。
また、日本語XIMサーバにはAutisticモードとReferenceモードがあり、Autisticモードのときは入力履歴だけを、Referenceモードのときは入力履歴と出力履歴の両方を使用します。ユーザがモードを切り替えることで、状況に適した予測入力ができるようになります。
既知の問題点
- On-The-Spot方式のアプリケーションを盗聴すると、入力途中の文字列(前編集文字列)を出力履歴に登録してしまいます。
- 出力履歴(参照辞書)が早いペースでどんどん大きくなります。
- 箇条書を行の折り返しとして判断してしまいます。
- 日本語以外の2バイト文字を表示すると、文字化けした文字列を出力履歴に登録してしまいます。
- アンチエイリアシングを用いて文字を描画するアプリケーション(PostScriptやPDFのビューワ、xdvi、Xftを利用するものなど)には無力です。