STEAM教育ならぬ、STEAMライフ Science + Technology + Engineering + Art + Mathematics
旧『“PLASSON”自作二足歩行ロボット Personal Low-tech ASSembly Of Nisokuhokou 』

チャットボット「人工知能?ななこ」その2

| コメント(0)

「土日でわかるPythonプログラミング教室」
・金曜日:環境構築
・土曜日:Pythonプログラミング
・日曜日:Webプログラミング

*************************************************
■土曜日:Pythonプログラミング
 
<本の内容(1)>
FizzBuzzプログラムを作ってみる。
 1.1から100まで出力
 2.3の倍数の時には数字ではなくFizzと表示
 3.5の倍数の時には数字ではなくBuzzと表示
 4.3と5の倍数の時には数字ではなくFizzBuzzと表示
 
・・・
 
とりあえず、この本は見ずに、日経ソフトウェア2020年5月号の付録「Pythonチートシート」を見ながら、書いてみました。

ーーーーーーーーーーーーー
for i in range(100):
  j=i+1
  if j%15 == 0:
   print("FizzBuzz")
  elif j%3 == 0:
   print("Fizz")
  elif j%5 == 0:
   print("Buzz")
  else:
   print(j)
ーーーーーーーーーーーーー

ちょっと中身を読んで改造
ーーーーーーーーーーーーー
for i in range(1,101):
  if i%3 == 0 and i%5 == 0:
   print("FizzBuzz")
  elif i%3 == 0:
   print("Fizz")
  elif i%5 == 0:
   print("Buzz")
  else:
   print(i)
ーーーーーーーーーーーーー

rangeは少し戸惑いました。
  for i in range(a,b):
って書いた時は、ついBASICの
  for i = a to b
だと思ってしまいます。。。実際には、
  for i = a to b-1
です。
正しくは
  for i in range(a,b):

  a ≦ i < b
です。
ということは、
  for i in range(b):
って書いたときも、iは0からb-1までb回まわる、と思ってしまっては間違いで、あくまでも
  0 ≦ i < b
なのだな。
 
本では、ここからしばらくPythonの基本文法(変数、演算子、if文、for文等)分の説明が続きます。
昨日の「金曜日:環境構築」は少々敷居が高い感じがしましたが、このあたりの説明はとても丁寧です。

 
<本の内容(2)>
DockerのLinux環境からgit clone コマンドでチャットボットプログラムのソースをもってくる。
 
・・・
 
うーむ。Windows10+Anaconda+Pycharmだとどうすればいいのかな・・・カミさんに聞いて、GitHubからソースを単純にダウンロードすることにしました。
GitやGitHubについては、また別の機会に確認することにします。

コピーしたソースを走らせるとエラーが発生・・・えぇと、一連のエラーの発端は、
UnicodeDecodeError: 'cp932' codec can't decode byte 0x87 in position 61: illegal multibyte sequence
ってやつだな。
DockerのLinux環境で動くソースだからutf-8が前提と思われるところ、WindowsのShift-JISではエラーになるってことかな。
そこでググって
ーーーーーーーーーーーーーーーーーーーーーー
WindowsでCP932(Shift-JIS)エンコード以外のファイルを開くのに苦労した話
https://qiita.com/Yuu94/items/9ffdfcb2c26d6b33792e
ーーーーーーーーーーーーーーーーーーーーーー
を参考に、ファイルをオープンしているところに
「,encoding="utf-8_sig"」
を追加。
動いた!(^o^)/ しかし、文章を覚えさせるほうでも同じ原因のエラーが(^^;。そこも修正。
 

20200508_AInanako01.jpg

 
本では、チャットボットのソースを解析しながらの説明(import、fromと__init__.py、ユーザー定義関数、while/continue/break文、オブジェクト指向、ファイル入出力、形態素解析、乱数、辞書型/タプル型、文字列操作、マルコフ連鎖等)が続きます。
 
 
この本のAmazonの書評はかんばしくありません。ソースをダウンロードして眺めるだけの本、という評もあります。
確かに、本を読んで書けるようになるための説明というよりは、チャットボットの仕組みをどんな風に実現しているか、という内容だと思います。でも、初心者向けのごまかし説明ではなく、けっこう真正面から説明していて、会話タイプの人工知能への最初のアプローチとしては、なかなかの本ではないかと思います。
少なくとも僕は、今はわからないところもあるけれど、後日、戻ってきて読み返したい、という気持ちになりました。
 
さて、明日は Django です。

コメントする

この記事について

このページは、SLANが2020年5月 9日 01:42に書いた記事です。

ひとつ前の記事は「チャットボット「人工知能?ななこ」その1」です。

次の記事は「Win10 その他の回復オプション」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。