Archive for May, 2005

Nao Tokui

31May05

Artist/DJ/Ph D of Engineering
http://www.naotokui.com

EDUCATION
2003
Completed Doctoral course in the School of Engineering the University of Tokyo
RESEARCH
2004 - 2005
SONY Computer Science Laboratory Paris. Visiting Researcher

AWARDS, FELLOWSHIPS and GRANTS
2003
IPA - Mitoh Youth
2004
Agency for cultural affairs of Japan - Media Arts category
IPA - Mitoh/Exploratory Software Project
SOFTWARE WORKS
2003
SONASPHERE

2004
Fluido
A dynamic text editor supporting the act of “reading,” “writing” and “thinking” seamlessly
EXHIBITIONS […]

以前書いた発音記号を含んだDICTフォーマットの辞書を使って簡単なテスト用のデータベースを作ってみた。
使用した辞書は次の4つ: English - German(約93000語), French - English(約8000語), German -English(約81000語), Netherlandish - English (約22000語)

まず最初に「単語」と「言語」(それが何語の単語なのか)、「発音記号」の3つの項目を持ったSQLiteデータベースを作った。その上で、Pythonの正規表現を使って辞書ファイルからそれぞれのデータを取出し、データベースに格納した。
検索の方は以下の順序で行われる。
1. 入力された検索タームを含む単語をDB内の4カ国語の単語中から検索する
2. もし一致する単語がみつかれば、その発音記号をDBから取り出す。
3. 取り出した発音記号に「対応する」単語を検索して、結果を表示する
4. 2-3の繰り返し

このうち、実際にテストしてみた結果、3の「対応する」がやはり曲者であることがよくわかった。単純にSQLの=文(文字列が同じ)やLIKE文(あいまい検索)だと、おもったほど単語がヒットしない。発音の近さをどのように定義し、検索のアルゴリズムを作るかが、やはりキーになりそう。
ここでは、LIKE文を使って、まったく同じ発音記号から「始まる」単語を探した場合の結果を示す。

$ python sqlserch.py now
Nauru German nauːruː
nautisch German nautiʃ
nautische German nautiʃə
$ python sqlserch.py kiss
kies Netherlandish kis
kiesheid Netherlandish kishɛi˘t
kieskeurig Netherlandish kiskørəx
kist Netherlandish kist
(それぞれ単語、言語名、発音記号)

特に関係はないが、SQLiteのGUIクライアントソフトが欲しい…

Pythonは1990年にGuido Van Rossumによって発表されたプログラミング言語。
インターネット上で手に入る入門書等を以下に挙げた。

Dive into Python - http://gurno.com/adam/ebooks/dip.rb
300ページ以上におよぶ本がPDFで公開されているのがうれしい。サンプルコードの解説も非常に丁寧で、わかりやすい。
お勧め!

Python Manual - http://www.network-theory.co.uk/python/manual/

How to think like a computer scientist - http://thinkpython.com/

Pythonをつかったコンピュータサイエンスへの入門

Text Processing in Python - http://gnosis.cx/TPiP/
テキスト処理 - やたらに長い本

A byte of Python - http://www.byteofpython.info/
Pythonでのデザインパターンについて。Python中上級者むけ

PythonとSQLite

28May05

辞書データを格納するデータベースとして、SQLiteを使うことにしたい。SQLiteは、SQLスタンダードに準拠したデータベースシステムのひとつだが、MySQLなどと違って、いわゆるサーバを必要としない点に特徴がある。Mac OS Xでは、Tigerから標準でSQLiteがインストールされているため、今後ますます利用が広がることが予想される。Tigerの新しいCore Dataの機能を利用することを視野に入れつつ、SQLiteをデータベースとして現時点では採用することにする。

辞書データの解析、データベースへの格納にはPythonを使う(pythonの勉強の意味も込めて…)。PythonからのSQLiteへのアクセスについては、Sams 社の本SQLite が詳しい。

PysonからSQLiteを使うには、pysqliteをインストールする必要がある。Mac OS X(多分、Panther以降)では、ソースをダウンロードして、 >python setup.py build
>sudo python setup.py install
で、ビルドとインストールが出来る。以降は、sqliteモジュールをインポートして使うとよい(>>> import sqlite)。

実際にSQLiteのコマンドを実行するには、
1. SQLiteのDBを開く/コネクトする
>>> db = sqlite.connect(”aDB”)

2. カーソルオブジェクトを作る (これがいまいちわからない)
>>> cu = db.cursor()

3. 2でつくったカーソルオブジェクトのexecute()を呼ぶ
>>> cu.execute(”SQL文”)

4. コミットする
>>> db.commit()

5. DBを閉じる
>>> db.close()

SELECT文を実行すると、カーソルオブジェクトのfetchone()関数で返値を行ごとに取り出せる。

row = cu.fetchone()
while row:

print row[0]

Pythonでの正規表現はここが詳しい。

DICTサーバで使えるデータは専用のフォーマットに変換されたデータのみ。可読なデータに戻すために、dictunformatコマンド(shell script)がlinux環境用に用意されている(逆にフォーマットへの変換には dictfmtを使う)。dictunformat、dictfmtは、dictdのパッケージに含まれている(ftp://ftp.dict.org/pub/dict/ から、最新のdictdパッケージをダウンロードする.

パッケージ全体のインストールは通常の手順を踏めばなんなく行える。
./configure -> make -> sudo make install   

各辞書データは、登録されている単語のインデックス .indexファイルと実際の単語の定義などが書かれた、.dictファイルからなる。以下、英独辞典の場合を例にとって、辞書データのアンフォーマットの方法を示す。

辞書データの解凍
dictzip -d eng-deu.dict.dz

アンフォーマット
dictunformat eng-deu.index < eng-deu.dict > eng-deu-dict.txt

dictunformatは indexファイルを引数としてstdinに 解凍したdictファイルを入力として受け、stdoutに結果を出力する(最後の出力先ファイル名は任意)。

実は、.dictデータの段階で可読なデータ? unformatしたものとの違いがよくわからない….


Project Phonethica

Combining scientific technology and art, Phonethica is an interdisciplinary project which explores the diversity of the world, through the phonetics of its 6,000 languages.