第二話 面白い人達が集まっているところで遊んでいたらマイクロソフトが動き出してAI開発をやってくれるらしい 「こだまでしょうか」

AIの定義はさまざまらしい。

ぼくが研究でやっている深層学習もAIだし、今しがた挑戦し始めたチャットボットもAIらしい。よく分からん。

何の話がしたいかと言うとAzureを使ってチャットボットを開発するチャレンジをはじめましたという話です。

Azureとはマイクロソフトが提供している開発環境が一通り揃ったクラウドで、開発に疎い人でも手軽にチャレンジできる環境が整っている。それでも苦難の連続ではあるが。

コメント 2020-07-11 181344

Azureのポータル。よくわからないでしょう。ぼくにもよくわからない。

AzureにおけるAIのパーツのようなものは「リソース」という単位で管理され、それをまとめて「リソースグループ」と呼ぶ。新しい名前をつけるくらいだから便利な概念なのでしょう。

実際、今回の課題であるチャットボットの開発も3つのリソース(App Service、App Serviceプラン、Web アプリbot)からなり、それを一つのリソースグループとしている。ざっと見た感じ、


App Serviceではセキュリティやネットワーク周りの設定とbotの中身の開発
App ServiceプランではメモリやCPUのスペックの設定
Web アプリbotではブラウザ上で簡単にできるテストとビルドができるっぽい。

開発をする上で大事だと感じたのはApp Serviceのところで、ここではエディタを使って応答を編集したり、コンソールをつかってファイルを追加するなどできる。

コメント 2020-07-11 182221

赤くなっているところにはファイル名が書いてあるが、恥ずかしいので塗りつぶしている。

エディタを通じて書かれるコードはC#で書かれるのがメジャーらしく、馴染みのなかったぼくには少し手こずらせそうなものの、Pythonはやっていたためプログラミング自体の経験はあるため、なんとかやっていけそうである。

コメント 2020-07-11 235603

実際の画面。ちっちゃくて見えないのでコードを抜粋する。

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Bot.Builder;
using Microsoft.Bot.Schema;

namespace Microsoft.BotBuilderSamples.Bots
{
   public class EchoBot : ActivityHandler
   {
       protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
       {
           var replyText = $"Echo: {turnContext.Activity.Text}";
           await turnContext.SendActivityAsync(MessageFactory.Text(replyText, replyText), cancellationToken);
       }

       protected override async Task OnMembersAddedAsync(IList<ChannelAccount> membersAdded, ITurnContext<IConversationUpdateActivity> turnContext, CancellationToken cancellationToken)
       {
           
           var welcomeText = "Hello and welcome!";
           foreach (var member in membersAdded)
           {
               if (member.Id != turnContext.Activity.Recipient.Id)
               {
                   await turnContext.SendActivityAsync(MessageFactory.Text(welcomeText, welcomeText), cancellationToken);
               }
           }
       }
   }
}

このコードは何もぼくは関わっておらず、デフォルトでこの状態なのである。これを修正してゆく形で思い通りのものを完成させてゆく。

この状態だとbotは

1.初めに”Hello and welcome!”と言う。
2.それから入力をそのままオウム返しする。

という挙動である。

コメント 2020-07-12 000221

バカって言うとバカっていう。こだまでしょうか。いいえAzure。

上記のコード(黒いやつ)を編集するとこの挙動を変更することができる。

といってもぼくの技術では初めに言うテキストを変えることくらいしかできない。

こんなふうに。

コメント 2020-07-12 000737

そのうちMeCabを使って日本語テキストを形態素ナントカしてナントカしたいです。これはお楽しみです。

この記事が気に入ったらサポートをしてみませんか?