PySocialSKKServeとは何か

Social IMEという集合知を用いたかな漢字変換のバックエンドをSKKから利用できるように、辞書サーバー(SKKServ)として実装したものです。Pythonにて記述されています。

特徴

  • Pythonで記述
  • 変換の際に、変換対象の記述によって単語としての変換と予測変換が使用可能
  • HTTPプロキシに対応
  • UNIX(Linux)ではデーモンとして実行
  • DDSKKでのserver completion(サーバー補完)に対応
  • 多彩なログ出力先
  • 複数辞書に対応(未リリース * r21)
  • 他のSKKServへのプロキシ(未リリース * r30)
  • SocialIMEを用いた連文節変換(未リリース * r36)

開発環境

  • Python2.6.1(Windows x86およびAMD64)とPython2.5.4(Debian/GNU Linux AMD64)
  • Windowsではpywin32モジュールを組み込み
  • Windowsの実行形式の構築にはpy2exeを使用

実行環境

  • 未確認ですが、Python2.3以降で動作可能
  • Windows用実行形式ではPythonのインストールが不要
  • Windows用実行形式ではMicrosoft Visual C++ 2008 SP1 再頒布パッケージ (x86/x64)で提供されるVisual C++ライブラリランタイムが必要

カスタマイズ

  • 起動引数
       -p PORT --port=PORT サーバー待ち受けポート番号の変更(規定値は5511)
       -d --debug 記録されるログにデバッグ用ログを含める
       -f --filelog ファイルへログを記録する
       -e --eventlog Windows Event Logへログを記録する(Windowsのみ)
       -s --syslog シスログへログを記録する(Windows以外)
       -r RUN --pidfile=RUN デーモンとして実行されているプロセス番号を記録するファイルを指定(Windows以外, 規定値では/tmp/skkserv.run)
    
  • 設定ファイル
    [server]
    port=5511 ;待ち受けポート番号 1-65535 の数値で指定します。(オプション-pに対応)
    daemon=True ;デーモン動作on/off Windows用実行ファイルではFalseを指定して下さい
    debug=False ;デバッグログon/off(オプション-dに対応)
    pidfile=/tmp/skkserv.run ;UNIXにてデーモン動作を指定する場合にプロセス番号を記録するファイル(オプション-rに対応) kill `cat /tmp/skkserv.run`のようにして終了に使えます
    
    [log]
    filelog=False ;ファイルへ動作ログを記録on/off(オプション-fに対応)
    syslog=False ;syslogへ動作ログを記録on/off(オプション-sに対応)
    ntevent=True ;Windows Event Logへログを記録on/off(オプション-eに対応)
    
  • ログ設定ファイル 既定で用意されているログ設定ファイルは次の通り:
    • filelog.ini オプション -f が指定されたときに使用される(Windowsでは filelogwin.ini)
    • syslog.ini オプション -s が指定されたときに使用される(Windows以外)
    • ntevent.ini オプション -e が指定されてときに使用される(Windowsのみ)
これらの設定ファイルはPython標準モジュールloggingのものであるため、Pythonの知識がある方であれば、自由に出力先を変更できる
  • HTTPプロキシの使用
    • UNIX 環境変数 http_proxy でプロキシを指定
    • Windows インターネット設定(Internet Settings)のプロキシ設定が使用されます

変換動作

ここでは、「ひとまわり」という単語を例にとります。
  • 通常変換
    • 従来のSKK変換入力
HitomawaRi → 一回りり のようになり。見出し語が[ひとまわr]となり、これを予測変換します。ただし、入力した送り仮名が余分についてしまいます。 バグ的動作ですので、開発を続ける上で、変換結果として予測変換WebAPIから返却された結果のうち、最終文字が「ら」「り」「る」「れ」「ろ」のいずれかのものを選択し、最終文字を削除した状態でSKKクライアントへ返却するよう改良する予定です。* r14 で改善。
    • 送り仮名の区別をしない入力
Hitomawari[SPC] → 一回り
このように見出し語を「ひとまわり」として変換します。このように変換対象がすべて「かな」の場合は1つの分節としてかな漢字変換APIを呼び出して変換します。
    • skk-look的あいまい変換
Hitomawa*[SPC] → 一回り
このよう変換対象の最後の文字が「*」の場合に[ひとまわ]で始まる単語に変換します。予測変換APIを使用しています。
  • サーバー補完変換
    • 見出し語の補完
Hitoma[TAB] → ひとまわり[SPC] → 一回り
一部のSKKクライアントに限られますが、サーバー補完(Server Completion)という機能があり、見出し語を途中まで入力し[TAB]を押すことで見出し語の候補をサーバーから得ることができます。(Windowsのskkimeではサーバー補完は使えないようで、過去の変換で使用した見出し語で補完するダイナミックコンプリーションのようです)。 多数の見出し候補がある場合は[TAB]を複数回押すことで見出し候補を切り替えられます。
    • 見出し語を補完して変換
Hitomawa~[TAB] → 一回り, ひとまわり, 一回り大きく, ひと回り
サーバー補完を使用できるSKKクライアントでは見出し語を補完し、補完された結果をさらに変換することができます。変換対象の最後の文字が「~」の場合にこの動作になります。内部で複数回の変換が行われるため変換にもたつくことがあります。
  • 制限
    接頭詞・接尾詞変換などの特殊変換は使えません。

under construction ここのWikiに慣れる練習を兼ねて編集中