Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
チャットボットのススメ
Search
Kazuhiro NISHIYAMA
September 15, 2019
Programming
410
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
チャットボットのススメ
[Osaka RubyKaigi 02](
http://regional.rubykaigi.org/osaka02/
) での発表資料です。
Kazuhiro NISHIYAMA
September 15, 2019
More Decks by Kazuhiro NISHIYAMA
See All by Kazuhiro NISHIYAMA
Reforming the Japanese Ruby reference manual
znz
0
36
Rubyの配布パッケージの変遷
znz
0
57
Headscale + Tailscale に移行中
znz
0
110
Ruby on Rails と私
znz
0
97
riscv64.rubyci.org internal
znz
0
69
Rubyの日本語リファレンスマニュアルの現在と未来
znz
0
130
devise-two-factorを4.xから5.xに上げた話
znz
0
480
docs.ruby-lang.org/ja/ の生成方法を変えた
znz
0
130
Ubuntuのriscv64版をqemuで動かした
znz
0
170
Other Decks in Programming
See All in Programming
複雑なUIコンポーネントとの ⻑い付き合い⽅:波及するバグからテスト戦略を経て、安全な再設計へ
mixplace
0
450
【加筆修正版】Laravel のアプリケーションをどこにデプロイするか #phpcon_ehime
akase244
0
160
AIに “答え“を書かせるのを やめてみた
___akari11
0
130
Agentic Software Factoryに、すごく賢いIF文を。 / super smart IF statement into the Agentic Software Factory.
rkaga
8
2.3k
Railsのためのパスキー実践入門 〜マルチテナントSaaSでの意思決定〜
utakaha
3
1k
graphql-ruby を Spinel で速くしようとした話
mtsmfm
0
100
Rでドレミ/Do-Re-Mi_with_R
florets1
0
130
contenteditable と日本語入力に向き合う
colorful12
0
210
Workers Cache を知る
syumai
0
370
Kotlinの15年とServer-Side Kotlin
n_takehata
1
160
機械に任せるテスト、人が見るテスト ⽣成AIで引き直した、運⽤保守フェーズの線引き
dske104
0
200
個人開発者よ、Honoを使え(おじさんver)
tanahiro2010
2
270
Featured
See All Featured
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.5k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.9k
Marketing to machines
jonoalderson
1
5.9k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
43k
Paper Plane (Part 1)
katiecoart
PRO
2
12k
Exploring anti-patterns in Rails
aemeredith
4
540
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
1
280
Navigating Weather and Climate Data
rabernat
0
560
Google's AI Overviews - The New Search
badams
0
1.6k
Designing for Performance
lara
612
70k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
12k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
500
Transcript
チャットボットのススメ Kazuhiro NISHIYAMA Osaka RubyKaigi 02 #osrk02 2019/09/15 株式会社Ruby開発 Powered
by Rabbit 2.2.1
自己紹介 西山 和広 Ruby のコミッター twitter, github など: @znz 株式会社Ruby開発
www.ruby-dev.jp 1/28
Agenda チャットとは チャットボットとは なぜおすすめなのか 色々なボット例 人工無脳の話 ボット作成時の注意 2/28
チャットとは? 主にテキストで リアルタイムに 会話(chat)するシステム 3/28
使ってきたチャットシステム NIFTY-Serve の RT → RT を含むサービス終了 (@nifty 自体は存 続)
IRC → 今も利用 Slack → 今のメイン Idobata, Gitter, Discord, … → たまに 利用 4/28
チャットボットとは? 誰かの発言に対して反応して発言 時間や通知など他のトリガーで自動発言 システムによって使えるトリガーは違う RT は入退室で挨拶するボットが可能だった IRC は入室の挨拶は可能だが退室前は不可 能 Slack
は使われ方が違うので挨拶ボットは 困難 5/28
なぜおすすめなのか? (1/3) プログラムの基本は入力を受けて出力を 返す 出力がないと 計算だけしてもできているのかどうかわか らない 入力がないと 同じことしかできない (そういう用途も多
い) 6/28
なぜおすすめなのか? (2/3) チャットボットはテキスト入出力で単純 昔ながらのチャットシステム (IRC など) だと行ごとの入出力でさらに単純 テストもしやすい 標準入出力で試せるようにするのも簡単 7/28
なぜおすすめなのか? (3/3) 複数対応するといろんな経験を積める 本質的な部分とシステム依存の分離 システムによる機能差 システム依存だが便利な機能の実装 長期運用でシステム移行も経験可能 例: RT から
IRC への移行を経験 8/28
小ネタ系ボット例 ping → pong と返すだけ ボットの生存確認やユーザー側の接続確認 9/28
便利ボット例 URL → タイトル 文字コード, JavaScript, HTML 以外の対応 など、簡単そうに見えて実際やってみると大 変
g> 検索キーワード → Web 検索のトッ プ tenki> 大阪 → 天気予報 amedas> 大阪 → アメダスの最近の値10/28
反応例 g> OsakaRubyKaigi02 osrk02 - https://twitter.com/hashtag/osrk02 (and 3 hits) tenki>
大阪 tenki bot: 大阪府 大阪 の天気: 今日:晴時々曇(max:31), 明日:晴れ(min:24,max:35), 明後日:晴時々曇 - 近畿地方は、 北部や中部では高気圧に覆われておおむね晴れていますが、南部では 湿った空気の影響でおおむね曇り、雨の降っている所があります。 (2019-09-14T10:31:00+0900) - http://weather.livedoor.com/area/forecast/270000 amedas> 大阪 amedas: 2019年09月14日 大阪(オオサカ) 時刻:15時, 気温:31.6℃, 降水量:0.0mm, 風向:北東, 風速:3.8m/s, 日照時間:0.6h, 湿度:49%, 気圧:1008.9hPa http://www.jma.go.jp/jp/amedas_h/today-62078.html?groupCode=45&areaCode=000 amedas: 2019年09月14日 大阪(オオサカ) 最低気温(℃):22.7 at 05:53, 最高気温(℃):32.0 at 13:43, 最大瞬間風速(m/s)(風向(16方位)):9.1(東) at 01:14 11/28
時報ボット 「西暦2019(平成31/昭和94/大正108/明 治152/皇紀2679)年(己亥)09月(長月)14日 (土)08時00分28秒(インターネットタイム @000.3)です。」 過去の元号や干支や旧暦の月なども対応 Swatch のインターネットタイムも対応 (24 時間=1000ビート、タイムゾーンなしの世界
共通の時刻) 12/28
時報ボット 「西暦2019年(令和元年/平成31年/昭和 94年/大正108年/明治152年/皇紀2679年) (己亥)09月(長月) 13日(金) 18時00分00秒 (インターネットタイム@416.7)です。」 13日の金曜日は装飾 13/28
挨拶ボット 挨拶ボット IRC のように接続通知がないと難しい 「prefix+時間の挨拶+suffix > nick+敬 称」(秘蔵のランダムデータで生成) 14/28
挨拶ボット例 「次はおはようございますみゅ > NICK御 中」 「なんでもいいおはようございますする か? > NICK代表」 「積極的におはようがなんともうれしい
> NICKタン」 15/28
運用系ボット uptime : サーバーの uptime 確認 「| uptime」の出力を発言するだけ upgradable :
apt で upgradable に なっているパッケージ一覧 「apt list -qq -o APT::Cmd::use- format=true -o APT::Cmd::format=${Package}($ {installed:Version}->$ {candidate:Version}) -- upgradable」 16/28
人工無脳とは? 「人工無能」とも AI (人工知能) ほど高度なものではないと いうことから ここでは人間の発言に自動発言を返す ボット 17/28
人工無脳の種類 (1/3) 単純な部分文字列マッチ Slackbot のようにチャットシステム側に存 在することも 正規表現マッチ 個人運用しているものはこれ 18/28
人工無脳の種類 (2/3) 形態素解析を利用 人工無脳ししゃも (Sixamo) など 書籍「恋するプログラム―Rubyでつくる人 工無脳」の後半はこれ 19/28
人工無脳の種類 (3/3) ELIZA 人工無脳の起源, 英語のパターンマッチング 内容によってはかなり自然な会話ができるらし い 複数手法の組み合わせ 人工無能うずら (ソース非公開)
日本語の IRC (IRCnet) では多分一番有 名 20/28
人工無脳への攻撃対策 (1/2) 問題例: ReDoS (regular expression denial of service) 正規表現をユーザー登録可能な場合
不適切な語彙の学習 任意の言葉を登録可能な場合 21/28
人工無脳への攻撃対策 (2/2) 対応例 (クローズドなグループ向けを想定) 技術的な対応はあまりしない アカウントを ban するなどのソーシャルな対応 が楽 (ボットが無視するアカウントにするなど)
22/28
不適切な学習の問題 Tay というマイクロソフトの Twitter ボッ ト ユーザーによる不適切な学習によりヘイト スピーチなどをするようになったらしい (その後停止) 対処は難しそう
23/28
ボット作成時の注意 ボットとボットのループに注意 ボットの発言にボットが発言するとループの可 能性があって危険 IRC ではボットは NOTICE で発言して NOTICE には反応しないのが原則
大量発言に注意 アカウントが ban される可能性も 24/28
脆弱性にも注意 任意コード実行ボットはかなり難易度が高 い タイトル取得ボットは情報漏洩に注意 例えば localhost に制限しているもの “169.254.169.254” ? 25/28
発言量の問題 ほとんどの発言に反応 → 迷惑? 受け入れられていれば問題なし 以前からそういうものとして存在 新規ならボットとの会話用チャンネルに隔離? 26/28
単調にみえる反応 大量のパターンを用意しても… キーワード反応型 ユーザーの発言のバリエーションが少ない → 反応も単調 時間に依存するもの ユーザーが使う時間がほぼ同じ → 反応もほぼ同じ
27/28
最後に ping pong のような単純なものから始める のがオススメ Twitter のような公開の場所は攻撃される可 能性もあがるので Slack などのクローズド
な場所で始めるのがオススメ アイデア次第で簡単なものでも便利だった り面白くなったり 28/28 Powered by Rabbit 2.2.1