LoginSignup
9
2

More than 5 years have passed since last update.

ドラゴンボールの孫悟空の言葉に変換するLineBotをつくってみた

Last updated at Posted at 2019-01-14

はじめに

孫悟空の言葉遣いって独特ですよね。
そんな悟空の言葉に変換するLINEBotを作りました。
悟空になりたいときに使ってみてください。

以下のサイトで孫悟空のしゃべり方(野沢けぇ)について解説しています。今回はこちらをDialogFlowに実装します。
http://junk.hatenablog.jp/entry/2018/02/15/034507

ほんじゃ、いっちょやってみっかぁ!

開発言語

・Javascript

準備

アカウントを用意します。
・Dialogflow Console
https://console.dialogflow.com/

・LINE Developers(プロバイダーリスト)
https://developers.line.biz/console/

LINEとDialogflowの連携

こちらの記事を参考にしました。
https://qiita.com/poruruba/items/09563e251adef1e1e8af
DialogFlowのFulfillmentに悟空語(野沢けぇ)を実装します。

DialogFlowのFulfillmentの中身

全探索で、条件を満たす場合に変換します。もっと賢い方法があれば教えてください。

gokuu.js
function nozawa(agent) {
    let temp;
    let list = [];
    let i = 0;
    let j = 0;
//Lineから受け取ったパラメータをeventに保存する
    let event = agent.parameters['any'];
//string型からstr型を要素とする配列へ変換する
    for(i = 0; i < event.length; i++){
        temp = event.substr(i, 1);
        list.push(temp);
    }
//for文を回すときにout of rangeを防ぐために'ん'を追加する
    list.push('');

    let a1 = [['', ''], ['', ''], ['', ''], ['', ''], ['', ''], ['', ''], ['', ''], ['', ''],
            ['', ''], ['', ''], ['', ''], ['', ''], ['', '']];
    let a2 = [['', ''], ['', '']];
    let ie = ['', '', '', ''];
    let e = [['', ''], ['', ''], ['', ''], ['', ''], ['', ''], ['', ''], ['', ''], ['', ''], 
            ['', ''], ['', ''], ['', ''], ['', ''], ['', '']];

//for文で探索し、条件を満たすときに野沢けぇへ変換する
    for(i = 0; i < list.length; i++){
        for(j = 0; j < a1.length; j++){
            if((list[i] == a1[j][0] || list[i] == a1[j][1]) && (list[i+1] == ie[0] || list[i+1] == ie[1] || list[i+1] == ie[2] || list[i+1] == ie[3])){
            list[i] = e[j][0];
            list[i+1] = '';
            }
        }
        for(j = 0; j < a2.length; j++){
            if((list[i] == a2[j][0] || list[i] == a2[j][1]) && (list[i+1] == ie[0] || list[i+1] == ie[1] || list[i+1] == ie[2] || list[i+1] == ie[3])){
            list[i] = e[j][0];
            list[i+1] = '';
            }
        }
        for(j = 0; j < e.length; j++){
            if((list[i] == e[j][0] || list[i] == e[j][1]) && (list[i+1] == ie[0] || list[i+1] == ie[1] || list[i+1] == ie[2] || list[i+1] == ie[3])){
            list[i+1] = '';
            }
        }
        for(j = 0; j < e.length; j++){
            if((list[i] == e[j][0] || list[i] == e[j][1]) && list[i+1] == ''){
            list[i+1] = '';
            }
        }
    }
//'ん'を削除する
    list.pop();
//str型の配列からstring型へ結合する
    let list_changed = list.join('');
//Lineへ出力する
    agent.add(list_changed);
}

使い方

ひらがなとカタカナに対応しています。漢字は変換できません。今後の課題です。
LINEで「孫悟空Bot」と検索してみてください。孫悟空Botが追加できます。

デモ

47994.jpg

まとめ

まだまだプロトタイプです。例えるならば、亀仙人のもとで修行を積んでいる頃の悟空でしょうか。
https://qiita.com/kotauchisunsun/items/8334728ab66b3cc3e55f
こちらの記事のやり方も実践していきたいです。根本的な手法が異なるので構想を練り直すのも一つの手です。
機械学習は素材が必要なので、孫悟空の素材が十分あれば作れそうですね。

9
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
2