こんにちは、Habr! AIとパーソナルアシスタント(Siri、Google Nowなど)の最新の進歩に触発されて、私は自分用にアシスタントを書くことにしました。
スージーに会う
私の疑似AIの主なハイライトは、非常にシンプルな実装と多くのフレーズの迅速な学習です。 これは次のように達成されます。
ロジックスージー
(現在)実行可能ファイルを含むフォルダーには、sinonims.txt、faq.txt、phrases.txtの3つのファイルがあります。 それらは私によって満たされています。将来的には音声入力機能や何らかの自己学習を追加する予定です。
sinonims.txt
-置換のソースワードのベース
hi = hi
こんにちは=こんにちは
hi = hi
...
事案=状態
人生=状態
...faq.txt
-基本的な質問と回答。 応答には、テキスト、コマンド、または変数が含まれる場合があります
* hi * = {&hi}、{%name}
* like * state * = {&state}
...
*オフ*デバッグ* = {@ dbg0} {&ok}右側にはマスクがあり、その下に同義語のテキストが置換され、左側の回答にあります。 特殊文字「@」、「%」、および「&」は、コンストラクトの代わりに挿入する必要があるもの(それぞれコマンド、変数、またはフレーズ)を示します。
phrases.txt
-いくつかのバージョンの頻繁なフレーズのベース
hi1 =こんにちは
hi2 =ようこそ
...
state1 =良い
state2 =正常
state3 =すべてが正常です
...ベースを埋めたいという要望がある場合-コメントを書いて、ベース、ソース、exeshnikをレイアウトします。
リクエスト処理の例
ソーステキスト:こんにちは、お元気ですか->行をクリアし、辞書の同義語を置き換えます:hi as state->どのマスクに該当するかを調べます:
* hi * and
* as * state * -> Parsim answer:replace
{&hi} and
{&state }フレーズのデータベースに存在するオプションにランダムに、変数curusrに
{%name} ->結果:
歓迎します
、すべてが正常です (スージーはあまり能力がないと思っていたかもしれませんが、リテラシーは必要ありません。私の計画は、彼女の音声認識とTTSを台無しにすることです。この場合、彼女は句読点を付けたり、大文字で単語を書く必要はありません)
スージーの内面
初期化手順
procedure init; var path: string; begin canspeak := true; path := extractfilepath(application.ExeName) + '\brains\';
解析手順
procedure parce(s: string); var p, o, i, t, i1: Integer; t1: string; str: tstringlist; begin str := tstringlist.Create; said := false; s := ansilowercase(s);
コメントするのが面倒なので、コードの残りの部分を引用しませんでした;特別なセマンティックの負荷を持たず、美しさにも違いはありません。
おわりに
スージーにはたくさんの計画がありますが、音声認識と音声合成を追加したいです(ただし、これは長いレッスンであり、十分な時間はありません-セッション、学生、シンパサイザーは理解します)、オペレーターの言うことを記憶し、分析し、リマインダー、メモを保存する機能。 カントリーハウスには多くの人が横たわっているので、システム全体を別のマシンに配置します。良いスピーカー、マイク、モーションセンサーをcomポート経由で中継し、部屋に行って「スージー、ドアを閉めて、切って」エアコンとお気に入りの曲をつけて "またはそのような何か...ああ、それはなんてクールなんだ、それは気に。
トピックの写真を探していたときに、彼が理解していることを知っている、これに出会いました。
UPDexeshnikでソースを投稿します:
docs.google.com/file/d/0B1vVuifL615WVzNmQllOUGEwd00/edit?usp=sharing 以前に基地を埋める人がいるなら、私に投げてくれてとても感謝しています。 bydlocodeが存在する可能性については、理解してお許しください。