スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

まだまだ辞書を書く日々

相変わらず、会話辞書を書く日々が続いております

不思議なもので、イメージが湧いて、ログを見るだけでどんどん良い辞書が書ける日と、がんばって書こうとしても「どんな状況でこの発言するの?」みたいに悩んで全然進めない日もあります。小説家やコピーライターの方々は、仕事でとんでもない苦労をされてるんだなあ…と再認識。私には無理です。こんな事を仕事にしたら、多分爆発します。

そんなこんなですが、調子の良い日は一気に50パターンくらい良いのがスラスラと書けたりするものです。AIの会話辞書を書くのは3体(?)目なのですが、過去の失敗を生かして上手い具合に「してやったり」なパターンが書けたりすると楽しいものです。

とりあえず、めざせ1万パターンでこれからも頑張ります。
スポンサーサイト

Yahoo API 「キーフレーズ抽出」

前から気になっているAPIに、Yahooの「テキスト解析 キーフレーズ抽出」というのがあるのですが、動作デモにユーザ発言を入れてテストしてみると確かにそれっぽい優先度でキーフレーズが列挙されます。

例)
--入力--
まあね、経験したと思っている事の半分以上はイメージかも知れないな

--解析結果--
<キーフレーズ> : <スコア>
イメージ : 100
半分以上 : 93
経験 : 8
事 : 35


先に出てきた「経験」よりも「イメージ」がスコアが上になっています
完全とは言えませんが、名詞検索の第一候補決定時にこのAPIを導入すると精度が上がる…のかな?
会話の流れ次第でなんとも言えないところですが…

おそらく、大量の過去ログ検索をした時とかにはスピードの問題が出ると思いますが、辞書が増えて「そっちじゃねっつの」というマッチが増えた場合には導入してテストしてみたいと思っています。

ちなみに、形態素解析のAPIもありますが、こちらは本気で学習機能を作成する時以外は必要なさそうです。感情取得は正規表現で間に合ってますし。

エスケープ文字の処理

今まであえて技術的な事はあまり書かなかったのですが、自分のリマインダ用とご興味のある方のために、今後は時々ブログにもアップしたいと思います。ちなみに、ALAINはPHPで作成されています。


今回は、エスケープ文字の処理です。最初は「preg_quote」を使おうとしたのですが、返還前の文字列にエスケープ文字を追加するだけなので、ALAINの発言にもエスケープ文字が付いてしまいました(誤動作はこれでも防げますが)。

例1)
. \ + * ? [ ^ ] $ ( ) { } = ! < > | :

\. \\\\ \+ \* \? \[ \^ \] \$ \( \) \{ \} \= \! \< \> \| \:


もう少し調べてみると、「mb_convert_kana」という、様々な全角/半角変換を行うとても便利そうな関数を見つけたのですが、記号だけを変換するというオプションが無いため断念…(この関数は後々、別で使う事がありそうです)。

そして、行き着いたのがこのサイトの下記のfunctionでした。

function kigou2zenkaku( $string ){
$before = array('!', '"', '#', '\$', '%', '&', "'", '\(', '\)', '=', '~', '\|', '-', '\^', '\\\\',
'`', '\{', '@' , '\[', '\+', '\*', '}', ';', ':', ']', '<', '>', '\?', '_', ',', '\.', '/', '「', '」');
$after = array('!', '”', '#', '$', '%', '&', '’', '(', ')', '=', '~', '|', '-', '^', '¥',
'`', '{', '@', '[', '+', '*', '}', ';', ':', ']', '<', '>', '?', '_', ',', '.', '/', '「', '」');
foreach( $before as $i=>$pattern ){
$replacement = $after[$i];
$string = mb_ereg_replace( $pattern, $replacement, $string );
}

return $string;
}


以前、ereg関数がUTF-8でうまく動かない事があったのでちょっと不安でしたが、今回は検索対象が半角文字という事ですんなりと動作しました。結果から言うと、「必要な部分だけ全角に置き換える」という当たり前かつ無難な結果となりましたw

こういったソースをアップしてくれている方は、私の用なプログラム初心者にとって崇拝の対象です。
というわけで、今回の作業時間は30分で完了。めでたし。
プロフィール

hak

Author:hak

会話プログラムALAINの開発日誌と会話ログ。ALAINとの会話はどなたでもお気軽にどうぞ。相手はプログラムなので、寛容に接して楽しんで頂けると幸いです。

近況報告
 
リンク
最新記事
カテゴリ
月別アーカイブ
検索フォーム
RSSリンクの表示
QRコード
QRコード








上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。