人工無脳を改良して、多く出てきた単語を会話に出すように改良する。
Postgres 9 からは、時間をしまえるようになった。
time 型, timestamp 型、date 型などが利用できる。
ちなみに時間を整数型で計算していた場合は、hour0:min0 から hour1:min1 までかかったとき、
hour1 * 60 + min1 - hour0 * 60 + min0
と計算できるが、時間型で timestamp 型は秒単位で計算する。
bytea 型で、1 GB まで直接データベースにしまうことができる。
ta05001=> create table qrcode (name text, image bytea); CREATE TABLE ta05001=> insert into qrcode values ('qr_email','qr_email.png'); INSERT 0 1 ta05001=> select * from qrcode; name | image ----------+---------------------------- qr_email | \x71725f656d61696c2e706e67 (1 row)
呼び出す dir にはこの画像がある。画像の呼び出しかたは以下のとおり。
ta05001=> select decode(name,'escape') from qrcode where name='qr_email'; decode -------------------- \x71725f656d61696c (1 row)
地図情報は PostGIS をインストールし、利用することができる。
XML の 木構造は XPath を使って理解できる。 psql で XML データをしまうには、
CREATE TABLE testxml ( id SERIAL PRIMARY KEY, xmldoc XML );
として、XML データを適宜入れる。
NSERT INTO testxml (xmldoc) VALUES (''); Test
テストです
終了
pgsql=> SELECT xpath(E'//h1/text()', xmldoc) FROM testxml; xpath -------- {Test} (1 行)
複数ある要素の場合は
pgsql=# SELECT xpath(E'//p/text()', xmldoc) FROM testxml; xpath ------------------------- {テストです,終了} (1 行)
となる。
とりあえず日本語を全て分解させてみよう。 日本語形態素解析には mecab や chasen が知られている。
大学の環境にない場合は、自分で ruby-mecab / ruby-chasen をインストールしよう。 本学では chasen を roy で使用できる模様。
読み仮名を全て平仮名からローマ字にするには、Ruby/Romkan / Kakasi などが使える。
辞書を入れ替えたら
% cd /path/to/*.cha (文法定義ファイルのありか) % makeda usename input1.dic input2.dic
chasen を使うと
%/opt/FESTIVAL/festival-pkgsrc/bin/chasen -e 文字列 結果表示
結果を流し込むのも可能。
cat 'jp.txt' | /opt/FESTIVAL/festival-pkgsrc/bin/chasen -e >& comp.txt
または kakasi を使って
/opt/FESTIVAL/festival-pkgsrc/bin/kakasi -Hj -Jj -C -w [~] 東北公益文科大学のるびおです。 東北 公益 文科 大学 のるびおです 。
-w はわかち書き
/opt/FESTIVAL/festival-pkgsrc/bin/kakasi -Hj -Jj -C [~] 東北公益文科大学のるびおです。 TouhokuKouekiBunkaDaigakunorubiodesu。
-C で、文節でアルファベットにしてくれる。
% cat jp.txt| /opt/FESTIVAL/festival-pkgsrc/bin/kakasi -Hj -Jj -C TouhokuKouekiBunkaDaigakunorubiodesu。>& result.txt
変換結果を流しこみ、これを 読ませるため festival を使ってみる。 --tts でファイルを読み込む。
/opt/FESTIVAL/festival-pkgsrc/bin/festival --tts "result.txt"
何を言っているのかわかりにくいが、しゃべっている。 diphone にしなくてもしゃべるようになったりするので、current の場合には注意しよう。