2012年7月28日土曜日

whooshのインデックス

whooshのMLを見ていたら、言語毎にanalyzerを使い分けたいという話の流れの中で、自分でtokenizeして書き込む例(test)が紹介されていました。
その例は、Schemaの定義にはanalyzerを設定せずにインデックスを構築するものでした。igo-pythonを使うとtokenizerがインデックスにpickleされて保存されるので、インデックスが大きくなるのが悩みだったのですが、この方法なら肥大化を避けられます(pickle時に細工して回避する手段は入れてありますが)
なので、実際にどのくらい変わるか確認してみました。tocファイルのサイズが全然違う(41186237 vs 996)ことがわかります。

ソース(gist)

結果(gist)

2012年7月22日日曜日

chrome.tts(text-to-speech)で日本語よみあげ

少し前ですが、chrome.ttsを使って日本語の読み上げが出来ました。試作のchrome extensionのソースはtest-chrome.tts(github)に置いてあります。Chrome Tech Talk Night #3に参加したことですし、せっかくなのでManifest Version 2のbrowser actionで実装してみました。ダウンロード後、chromeの拡張機能設定のところで、
  1. デベロッパーモード on
  2. パッケージ化されていない拡張機能を読み込む
とやれば登録できます。

以下メモ
Microsoft Speech Platform 11+HarukaをSAPI5登録した64bit版のWindows7で試しました。はまりどころは、Chromeが32bitアプリなので、HarukaのSAPI5登録を32bit環境(WOW64)にもすることぐらいでしょうか。なので、ちゃんとSAPI5に対応している日本語読み上げ環境があればはまりどころは無さそうです。
HarukaのSAPI5登録の方法は
  • x86版のSpeech Platform 11をインストール
  • Harukaをインストール
  • レジストリのコピー reg COPY "HKLM\SOFTWARE\Wow6432Node\Microsoft\Speech Server\v11.0\Voices\Tokens" "HKLM\SOFTWARE\Wow6432Node\Microsoft\Speech\Voices\Tokens" /s /f
勘違いで、

  • chrome.tts.getVoicesがSAPI5の音声を全て列挙してくれる
  • lang属性でja-JPで指定すれば日本語対応のを選んでくれる
と思っていたのですが、ttsEngineレベルで列挙してくれるだけであって、SAPI5のものはnativeとして1つだけ出てくるだけです。また、lang属性はnativeなものでは見てくれない+提供されない(undefined)ようなので(複数言語に対応するttsEngineが切替に使うもの)、コントロールパネルの音声認識→音声合成で選択した音声をHarukaにしておく必要がありました。Macだとどうなのかは不明。

2012年7月16日月曜日

MoinMoin2.0で日本語コンテンツを検索する

MoinMoin2.0 は検索機能に Whoosh を使っています。 なので、日本語用のAnalyzerを使ってやれば検索出来るはず。ということでやってみました。
日本語が検索出来るだけのとりあえずのものですが https://bitbucket.org/hideaki/moin-2.0 にあります(変更点) 日本語用のAnalyzerには以前作った whoosh-igo のTinySegmenterTokenizerを使いました。

セットアップの記録(フォークしたやつからcloneするなら変更は不要です):
hg clone http://bitbucket.org/thomaswaldmann/moin-2.0 moin-2.0
cd moin-2.0/
DIR=env-pypy PYTHON=/opt/pypy/pypy-c ./quickinstall
. ./env-pypy/bin/activate
pip install whoosh-igo # TinySegmenterTokenizer用
wget https://mhagiwara.googlecode.com/svn/trunk/nltk/jpbook/tinysegmenter.py
vi MoinMoin/storage/middleware/indexing.py
# ↑indexを作る前に使うanalyzerを指定する必要がある
moin index-create -s -i
moin load --file contrib/serialized/items.moin
moin index-build
moin # サーバ起動

初期状態

編集中

編集完了

単語で検索出来る

複数単語でも検索出来る

丸ごとでも検索出来る
変更前だと単語で検索出来ない
変更前も文全体の一致なら検索可能

2012年7月5日木曜日

最近のvmwgfx(Arch Linux)

VMWare上で動かしているLinuxなゲストで3d accelerationを有効にしたりする話です。Arch Linuxでvmwgfxを使うの続き。

Linux 3.4で新しいvmwgfx kernelドライバが入ったので、gitでもってきてビルドする必要は無くなりました。

SVGAドライバも extra/svga-dri をインストールすれば使えるので、簡単に使えるようになっています(前から存在していたようだけど知らなかった…。カーネルドライバもあったのかも…)