復活!テラコラボ!~新メンバーで再出発!異文化交流はコアな話ばっかり!?~

シンチャオ! 4月からインターンとして働いている小川由羽です。 初めての投稿がグミHP全体でも久しぶりの投稿ということで、内心ドキドキです。   さて、先日の金曜日、ついに5月18日にテラコラボが復活しました! テラコラボって何?という方もいらっしゃると思うので、これからテラコラボの紹介をしていきたいと思います!     テラコラボって何?   テラコラボとは、グミベトナムで開催している日本語クラスです。 テラコラボでは、私たち日本人がネイティブとして、日本語を勉強しているベトナム人と日本語でお話しをします。 毎回お互いの国ついて理解を深められるようなトピックを用意し、あとは自由に楽しくお話しするだけです! 今までにもたくさんのベトナム人の方に来ていただき、リピーターも多いイベントです。     しかし!! グミの日本人インターン生が途切れてしまったということもあり、実はこのテラコラボ、約3ヵ月ほど開催していませんでした。 いつも来てくださっていた方々からも再開してほしいという声があったのですが、なかなか実現できず…。     しかーーーし!! 4月頃から私以外にも新しい日本人インターン生が加わり、ついにテラコラボが復活することになりました!! それが先日5月18日に開催された、第64回テラコラボです! 今回のテーマは「日本とベトナムの公共交通機関」でした。 約3か月ぶりの開催のうえ、私たち自身も初めてのテラコラボだったので本当に人が来てくれるのか心配でした。 しかし、当日は予想に反して7人ものベトナム人の方に来ていただくことができました! 1時間半という短い時間でしたが、話が途切れることなく、全員が楽しめる回となりました。 私もほっと一安心です(笑)。   私自身びっくりしたのが、質問の内容がとってもコアだということ。 参加者の人から「電車はどのような仕組みで走りますか?」「新幹線はなぜ普通の電車と同じレールで走れますか?」「新幹線の動力は何ですか?」など、こちらも知らないものばかり…。 その場でネットで調べて、皆で「へえ~そうなんだ~!」と盛り上がっていました(笑) 皆さん日本の言葉や文化を勉強している分、質問も面白いものばかりで楽しかったです!   最後にこれからのテラコラボで取り上げてほしいテーマを参加者の方に聞いてみると、全員からアイデアがどんどん出てくる…(笑)。 日本人視点では気付かないようなテーマも出てきて、これからのテラコラボは楽しくなりそうな予感です!       テラコラボはインターン生が頑張れるイベント グミベトナムは1年中インターン生を募集していますが、インターン期間が長期にしろ短期にしろ、テラコラボはインターン生が中心となって、自由に自分のやりたいことをすることができる貴重な機会です。 自分が考えたアイデアを提案し、皆と話し合って実現していくことは、自分のスキルアップだけではなく、インターンシップの達成感へとつながります。   ・プロジェクトに入ったけど自分に何ができるのか分からない…。(グミに来てしばらくは私もこの状態でした笑) ・もっと主体的にインターン期間を過ごしたい。 ・もっとベトナムの人と交流したい。  etc…   インターンシップをする人は、他にもいろいろな目標を持って、インターンシップに臨むと思います。 私はインターンシップに来る前に立てた目標を達成するため、まずはこのテラコラボから頑張ってみようと考えています。 まだまだ再始動したばかりのテラコラボですが、参加者全員が充実した時間を過ごせるよう、日々努力していきたいです! それでは、また次の機会にお会いしましょう!

Dialogflowで開発!Chatbotの未来の可能性とその挑戦~製作日記第4回~

  シンチャオ!稲葉貴大です。今回は第4回ChatBot製作日記です。ベトナム生活に慣れ、ベトナムに来てから早くも3週間が経とうとしています。1日1日大切にしていきたいと思います。今回は、Fulfillmentを用いた天気情報を呼び出すChatbotを紹介したいと思います。   DialoflowのFulfillmentを使って天気情報を呼び出す DialogflowのFulfillmentを使うと外部からの情報を呼び出すことができます。下図には外部情報を呼び出す上での簡単なイメージ図を示しました。詳しく次に説明したい思います。 初めにHerokuとGithubについて簡単に説明します。Herokuとはサーバーやデータベース、OSなどをインターネットを介して接続してくれるものです。アプリケーションを実行するためのプラットフォームであるPaaSでもあり、無料で使用できることも特徴の一つです。また、Githubというのは、ソフトウェア開発プロジェクトのための共有Webサービスであり、世界中の人々がプログラミングコードなどを公開、保存することが出来ます。そして人のコードを自分のコードに出来ることがメリットの一つです。今回は天気情報を呼び出したいため、Pythonというプログラミング言語を用いたプログラミングコードをGithubから選択肢し、それをHerokuを介してFulfillmentのWebhookに入力しました。   実際に天気情報を出力するChatbotの作成手順 最初、Herokuのページに行き、自分のアカウントを作成します。 次に、Githubのページに行き、天気に関するリポジトリを見つけます。     このページが天気に関するリポジトリです。このページの下に行くと、次のようなHerokuにdeployする場所があります。     「deploy to Heroku」をクリックすると、Herokuのページに移ります。ここで、App nameを決めてDeployします。すると、「Your app was successfully deployed」という表示がされて、Deployが完了します。これで、天気情報を読み出すプログラミングソースがGithubからHerokuにDeployされました。   次に、DialogflowのFullfillmentを開き、WebhookのENABLEをONにし、Webhookの変更を可能にします。次に、FulfillmentのURLに 「https://[App Name].herokuapp.com/webhook」 と入力します。この際、[App Name]には自分で設定した名前を入力します。     これでFulfillmentの設定は完了です。次に、Intentsを設定します。下図のようにTraining Phrasesに「[都市]の天気」と入力すると、都市名が自動的に反応して「PARAMETER NAME」「ENTITY」「VALUE」が書き込まれます。そして、「Action」として「yahooWeatherForecast」と入力します。その理由は、Githubで取り出したプログラミングコードを参照すれば分かりますが、「Action=yahooWeatherForecast」となった時に動作するように設定されているからです。         そして最後に、Intentsの一番下にあるFulfillmentの呼び込みを許可すれば完成です。     天気情報を出力するChatbot 以上の方法で作成したChatbotを紹介します。例えば、「東京の天気」と入力すると、次のようになりました。     「DEFAULT RESPONSE」を見ると、誤りなく天気の情報が読み出されています。また、「INTENT」として「weather」、ACTIONとして「yahooWeatherForecast」が読み出されており、正しく動作したことが確認できました。しかし、「あれ?」と思った方もいると思います。日本語で入力しているのに、英語で出力されているのです。これは、yahooWeatherForecacstが英語にしか対応していないからです。 逆に英語で入力する場合を考えます。英語で入力するには、下図に示した言語の追加のページに行って変える事ができます。   英語の言語を追加し、英語を選択すると次のように「en」が青く表示されます。     ここで、「weather in Kanazawa」と入力してみました。...

Dialogflowで開発!Chatbotの未来の可能性とその挑戦~製作日記第3回~

シンチャオ!中田椋介です。今回は第3回ChatBot製作日記です。今週はWomen’s Day や会社のみんなとサッカーをしたり内容の濃い一週間でした。今回はChatBotのトレーニングの項目について学んだことを説明していこうと思います。   Trainingで可能なこと、便利になること Trainingでは、実際にトレーニングをすることが出来ます。少し、前回の復習を交えながら述べていきます。これまでのEntityやIntentsの説明では、ユーザーが言いそうな言葉を推測して、Intentsで登録しておくというものでした。しかし、この作業では、Dialogflowを作る人の負担がかなり大きくなってしまう。なぜなら、ユーザーの発言を全て予測することは厳しいためである。かなりの量のデータを打ち込む必要が出て来てしまう。IntentsやEntityで設定しても上手く反応しないことがあるため難しいのである。そこで、今回はTrainingで作業効率の向上方法について述べていく。下に一つの失敗例を挙げる。「会社の名前」とEntityに登録してあるが、Intentsでは「会社の名前を教えてください」と登録してない場合に、このように失敗してしまうことがある。これは、Intentsで似たような表現をしないとDialogflowが学習できないためである。ここで、DialogflowのTrainingの項目を利用してみる。ここでは、過去に自分が入力した言葉が履歴として残っている。ここで、自分が何を入力したかが分かり、さらに、何回入力されたかや、どのような発言に対して成功できたか、どのような発言に対して失敗したかを見ることが出来る。下にある画像をみると履歴として残っていることが分かる。表示画面は異なるかもしれないが、することは同じなので省略する。先ほど失敗したフレーズを見つけたら、Intentsに追加という項目がある。それを選択することでIntentsに追加できる。つまり、Dialogflowが学習してIntentsに追加されるのである。Intentsで手当たり次第にユーザーが発言しそうな言葉を入力していくのも一つの方法として良いと思うが、一度発言してみてテストをしてから上手く反応できなかった発言に対してだけTrainingで学習していくことが効率が良いと思う。こうすることで、再じ表現や似た表現をしたときに上手く反応できるように改善できるのである。 Entityについて 今回はTrainingを紹介しました。それは作業効率を挙げるためと述べました。では、ここで、一つ質問ですが「21日にホテルを予約して」と言われた時に「21日」と言う言葉に反応するためには、「21日」というEntityが必要ですよね。では、あなたは、これも全て手で入力しますか?それはさすがに少し非効率的ですよね。なので今回は、前回気付かなかったEntityのことについても紹介しようと思います。今言ったように、幅が広すぎるEntityがあります。このようなEntityに対して、どのような操作ができるのかというと、まずIntentsを開きます。「フレーズを入力」するところがあるのでそこに適当に入力してください。今回は私は、「カンパニーネーム」と会社の名前に似たフレーズを打ちました。しかし、Entityに追加もされていないためエンターキーを押しても無反応です。そこでカンパニーネームの所を選択します。   すると、何かの一覧が出てきます。これがEntityの一覧です。ここの@company_nameは私が自分で設定したEntityですが、残りは元々Dialogflowに設定されているEntityです。つまり、Entityを作る前にこれらのEntityがどのような条件で発動するのか考えていくことで圧倒的に作業効率が向上します。また、今回の場合だと、自分が元々作ってある@company_nameのEntityの中に「カンパニーネーム」という言葉が追加されていなかったため反応しなかった。ここで、1番上の@company_nameを選択すると、Entityにこのキーワードも追加されるのである。ここでEntityを把握したり、Entityの追加を行いながらIntents作成が出来ることは作業がはかどるポイントになってくると思います。   今回は、TrainingとEntityの新たな発見について述べました。       ChatBotについて気になった方、このようなものづくりに携わりたいと思った方!お気軽に下のボタンよりお問い合わせください!

Dialogflowで開発!Chatbotの未来の可能性とその挑戦~製作日記第2回~

  シンチャオ!稲葉貴大です!残り3週間弱ですが、社員の方とサッカーをしたりとベトナム生活を楽しんでいます。仕事は充実しており、貴重な体験をさせてもらっています。 さてさて今回はChatbot製作日記第2回目です!Intentsの中のFollowup-IntentとContextsについて紹介したいと思います。   Followup-Intent Followup-Intentは決まったIntentが行われた後に発行されるIntentのことです。 私たちは飛行機を予約するというIntentを作成し、として予約をキャンセルする場合を考えました。初めに、Intentsのページにいき、airplane-reservedのIntentを作成した後、隠しメニューのAdd follow-up intentをクリックしました。そして、次に示したように飛行機の予約をキャンセルするFollowup-Intentを作りました。     飛行機の予約をキャンセルするFollowup-Intentの中には最初から次のようにキーワードが入っています。そのため、自分で入力する必要がないことが分かりました。       次に、実際に実行した様子を紹介します。 例として「名古屋までの飛行機を予約して」と聞かれた際にキーワードを読み取り、レスポンスするようにしました。       そして、「キャンセルして」といわれると、次のようにairplane-reserved-cancelが動作していることが確認できました。ここで、airplane-reservedのIntentが呼び出される前にこの作業を行うと、うまく返答出来ないことがわかりました。つまり、親のIntentが呼び出された後にのみFollowup-Intentが動作することが理解できました。     Contexts ContextはFollowup-Intentよりも柔軟な対話を作る方法として使われます。ここでは、飛行機の予約を行なった後にホテルを予約する場合を例にして紹介したいと思います。 最初にこのように、airplane-reservedのIntentのoutput contextにreservedと記入しました。そして、次に示したようにhotel-reservedのIntentのinput contextとoutput contextにも同様にreservedと記入しました。こうすることによって、二つのIntentを繋げることを可能にしました。     実際に試してみた結果を次に示しました。 飛行機の予約をした後、「ホテルの予約をして」と聞かれた場合を想定すると次のようになりました。下図を参照すると、hotel-reservedのIntentが呼び出されたことが確認できます。一方で、飛行機の予約をする前に同様のことを行うと、Intentが呼び出されないことが分かりました。     Followup-IntentとContextの違い ここで、Followup_IntentとContextって同じ?と思う方もいると思います。実際、Followup-Intentを作る場合、自動的にContextが作成されています。自分で自由にIntentやContextを決めたい時は、手動でContextを作成すれば柔軟な構造で実現できます。また、Fulfillmentを用いてサーバーを設定し、Contextを状況によって変えることも可能です。Fulfillmentについては、また詳しく説明したいと思います。   Chatbotについて気になった方、このようなもの作りに携わりたいと思った方!お気軽に下のボタンよりお問い合わせください。