「RusuDi」カテゴリーアーカイブ

辞書についていろいろ調べてました。結局適切な辞書って存在しないんだよな。また辞書を学習させるためのAPIは公開されて無い模様。うーん。詰まったぞ。
さらっと3時の辞書作ってやってみたら、辞書に登録してある範囲に関してはうまくいくみたい。んでも、辞書からはずすともうだめ。チャットに特化した辞書が必要であることが判明。もしかしたら、エンジン自体もチャットのことを考慮していないとだめかもしれない。
というのは、例えば、
ゆうき、これは辞書に入っています。
ゆーき、これ、辞書にありません。
ゆ~き、もちろんこれも辞書にありません。
ゆぅき、これも無いわな。
てな風にチャットだとバリエーションが出てるんですよ。このバリエーションをうまくクリアしない限り解決しないと思われる。うーん。奥が深い。
んで、とりあえず、助詞に関してあほあほなので、単語単位の処理だけでなく、文節単位の処理も入れました。助詞助動詞は全部NULLにして返してくれるので、NULLが出てきたら、直前の単語とつないだら、それで文節が出来上がってるかなと。それなりに、うまくいっています。ただし文章のバリエーションがちょっと狭まってるかも。今、過去データを食わせています。どんな感じか見てみようと思ってさ。
まぁこのあたりは調整の範囲ですな。
記号の処理の部分、特に顔文字の処理の部分が前エンジンでは対処してあったのに新エンジンで抜けてたのでそれを対処しました。

あほになった原因が判明しました。助詞の処理の問題です。
チャットでよく出現する発言で、
「わはははは」
ってのを例に挙げます。
これは人間には笑い声と認識されます。
これまでのるすぢでは、
わは、は、は、は、(わ「名詞」、は「助詞」、は「助詞」、は「助詞」、は「助詞」)
と認識されていました。まぁこれはこれで間違ってるんですけどね。助詞の頻度が高いんです。
新留守ぢでは、
わは、はは、は。(感じとしては、「輪は、葉は、歯。」ただし、わ「名詞」は「NULL」、は「不定語」は「NULL」、は「不定語」は「NULL」)
となります。
助詞助動詞が全部一緒くたにNULLにされていますし、不定語と認識されるときもあるようです。
こちらの方が現実に近いのですが、どちらにしても間違っています。
今まで全部助詞として認識されてたのが、助詞と不定語の2種類に分けられちゃってるんです。
どちらが文法上正しいとかじゃなくて両方間違っているんですが、たまたま前の認識が文章生成には都合が良かったんです。
これの派生系に「ぎゃはははは」ってのもあります。
日本語って難しいぞ。外人が日本語を学ぶときに「擬音語」が猛烈に難しいって言うもんな。
うーん。困ったぞ。んで、考えたのが、辞書登録。新エンジンでは辞書登録が簡単にできます。
「わはははは」「感動詞」
と登録すれば解決。きれいにいくようになります。ということは、それなりにチャットに適した辞書が必要ということになります。
さて次の問題。んじゃ、この辞書をどうやって作りましょうねと。。。3時のおやつ辞書ですな。
手でやってたら泣きそうに面倒なんですが。。。どっかにチャット用辞書って転がってないかな。
2CH用語辞書は転がってるなぁ。
みんなで作ろうかな。そんな企画でもやろうかな。うーん。なんかいい手は無いかな。暇人募集しようかな。うーーーん。考えどころだ。

今日は実機試験をしました。
あきませんな。あほになってます。どうも原因はどっかに間違いがあるようで。。。
うーん。俺の頭の中の、参照渡しとコピー渡しの概念がC++のままのようで、そのあたりに問題が潜んでいそうです。こりゃやっかいだぞ。。。

学習エンジンと文章生成エンジンの試験中。
文章生成エンジンはまぁぼちぼちよさそう。学習エンジンは、70%かな。多分大丈夫だけど、まだ不安。すごく短い文章の処理とかが怪しい。
データコンバータを作成。現在耐久試験中です。過去のデータを全部変換中。とりあえず、MDBに入れてみる。前のよりも処理はだいぶ速い。データ量も抑えられてる。結構いい感じ。ただ、「ぁー」って名詞かぁ?まぁ名詞って言ってるから名詞ってことにしておこう。このあたりが微妙にお馬鹿ちゃんになる原因かもしれない。

大改造終了。ほぼ機能復旧。まぁいくつかバグが見つかってるのでちまちま修正中。
しかし、助動詞と助詞がよくわからないってのは結構インパクトあるかも。思いのほか留守ぢがあほになる可能性あり。
それはさておき、過去のデータをどうするべ。過去のデータは捨てるには惜しい量なのでどうにかして救わねば。データ変換ツールを考えにゃならんな。
ここんところ、コーディングステージを終えて、デバグステージに入っていますが、ここで新たな試練が。。
C#のデバッグのやり方、よくわかってないかも。どうも効率が悪い。例外をどうゆうふうに仕込んでおくべきなのか。エラーコードをどうゆう風に仕込んでおくべきなのかがよく分かってないために、どうにもデバッグがやりにくい。その手の勉強をしなければならないと思われる。

うーん。C#で構造体の入れ子の配列のマーシャリングのやりかたわからへん。悪戦苦闘中。それにしてもこの改造はちとインパクトあるな。大改造になってしまう。んでも、ライセンスの心配しなくてもいいのはうれしいもんね。がんばっちゃうもんね。
んでも、このMorphResult、助詞と助動詞教えてくれない。。。。

昨日のネタからじゅんぐりたどっていきまして、Hit商品をGetしました。APIは公開されてました。僕の勉強不足でした。これで、完全に自作で留守番ロボットが自立します。ライセンスの心配をしなくてもよくなっちゃうもんねぇ。売っても問題ないもんねぇ。(相変わらず他力本願ですなぁ。)
キーワードは、
IFELanguage::GetMorphResult()
MORRSLT
WDD
ですな。MSDNで行くとこのあたり。。。
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnime/html/felang2dat.asp
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnime/html/msimepos.asp
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnime/html/FeLang2Fnc.asp
サンプルコードはこのあたり、
http://october.servehttp.com/ifelanguage_use.htm
動くとうれしいなぁ。んでも、またやること増えてたりして。。。
いつになったら、次期留守ぢは稼動するやら。。。

すんげぇもの見つけた。
http://www.airmac.org/newton.html
これすんげぇ。Wordで分かち書きをかけようなんて。Wordのわかちがきって結構賢いのね。中で形態素解析かけてんじゃないのか?まぁ、個人的には、IMEでは絶対形態素解析使ってるだろうなと予想してるんだけど。。。このへんをAPIとして公開してくれないかなぁ。また勉強することが増えてしまった。

まず、留守番ぢトーカーの話。こいつ、OfficeXPが必要なことが現在確定しました。日本語発声エンジンで再配布可能なものが見つかりません。唯一の頼みの綱だった、MSAgentはなんかXPで声あげてくれません。声を出す方法は無いわけじゃないんですが、インストーラーが複雑になりすぎます。なんで、ちと今のSAPI.NETがリリースされるまで放置の方向で。実はいろいろ試しているうちに Officeの音声認識エンジンをぶっこわしました。SAPIの5.1をインストールしたら上書きされてしまうようです。うーんやっかい。早く新しい SAPIがリリースされないかなぁ。できれば日本語発生エンジン付きで。ベータ2のリリースが3月中旬の予定とMSのページには出ていたので、多分正式版は4月を超えるでしょう。
C#版の方で発生していた原因不明のクラッシュは修正されました。自分の名前を取得するロジックの中で、マーシャリングを使っているのですが、このマーシャリングでメモリを破壊していたようです。C#のくせにメモリが破壊されるなんて、やっぱりまだまだ修行が足りませんな。んでもそうゆうことがありえるんだってことがわかって勉強になりました。
とんかち配布機能の基礎となるエンジンを開発しました。プログラム上からとんかちが配布できるようになりそうです。誰でもとんかちがもらえちゃったら問題なのでそのあたりの処理を追加して完成です。まぁいままでまったくできなかったのが新しくできるようになったので、かなーりうれしい。

C#とC++と処理を分ける話。Give upです。ぜーんぶ、C#に治しました。中途半端なマーシャリングだとわけがわからなくなるというのが発覚したからです。WindowsAPIの上でマーシャリングするほうがどうも分かりやすい。
C#版留守ぢは現在70%の進捗率です。現在、内部の個々のモジュールは完成。入退室の記録挨拶機能。登録機能。黙れ機能が復旧しました。文章学習エンジン、文章生成エンジンのモジュールは完成しているので、それらをちゃんと繋いで、復旧終了です。
こうやって見てみると、るすぢってすんげぇ量のコードを書いてあるのね。いつの間にこんなに膨らんでしまったのか。まぁいろいろ機能があるから、当たり前か。
ただ、ぜんぶを書き直したので、叩いたらいろいろバグが出てくるだろうと予想されます。今は、3時のおやつのチャットの部屋に出没しているのは、前のC++バージョンです。C#版は裏でこっそりテストしています。
なんだかんだ言っても、まだ、C++版は固まっているようです。原因不明。以前より、固まる間隔が長くなったってだけのようです。別にメモリリークしてる感じではないんだけどなぁ。メモリなんてあんまり使ってないんだし。。。
昨日の話ではないですが、一部の人に、留守番ぢTalkerを試してもらいました。思いのほか好評でした。まだインストーラーがお馬鹿なのでインストールするのにちと専門知識が必要な点と、WindowsXP&OfficeXPを必要とするので、一般公開は差し控えています。インストーラーをうまいこと解決できたら、アルファリリースということでまた、一部の人に使ってもらおうかと思っています。
さて、いつのことになるやら。。。