2023年4月28日金曜日

【ダークパターン警察】ファイル01

やってはいけない「ダークパターン」.やりたくなる気持ちはわかるが,こういう設計はやめたほうがいい.そんな事案を収集する,新しいシリーズが始まりました.名付けてダークパターン警察.今回は,某英文校閲サービスの事案です.


さて,今日取り上げるのは,英文校閲サービスにおける注文時のインタラクションである.まずは次の図をみてほしい.

この図は「スタンダード英文校正」を選んで「次へ」ボタンを押したあとに出てくる画面の一部である.何が問題か?

オプションサービスである「再校正」サービスが,頼みもしないのに「追加済み」になっているのである.それゆえ,前の画面での見積額と,この時点での見積額が違っており,総計額でも数千円高い値段が提示されている.

うっかりすると,頼みもしないサービスを注文してしまうことになる.言葉を選ばずズバッと指摘すると,こういうの,リアルの商習慣では「押し売り」という.

それで,騙されるか!と「追加済み」ボタンを押すと,出てくるのが次のダイアログである.

おいおい,おーい!

これだと「削除」ボタンを押せないみたいじゃないか.構わず削除ボタンを押せば,押し売りサービスを無視できるとはいえ,これはひどい.

なんとなく惰性でこのサービスを使い続けているが,こんな設計のインタラクションを続けるようだと,少し,考えたほうがよいかもしれないな.

2023年4月23日日曜日

出鱈目をまことしやかに流布すべからず

 昨日「1ウタマロ = 3ドラムカン」の話を紹介した.その語源は昨日投稿したエントリのとおりだが,この「1ウタマロ」というキーワード,どのようなときに使うかといえば「驚いた,びっくりした」というときに,その驚愕の度合いを感覚的に示す際に使われたのであった.

例文を示そう.「こないだ交差点で,右から来た車に轢かれそうになったんだよ.0.8ウタマロくらいドキドキした」「先日の土砂降り,雷がひどかったじゃない?庭の木に落ちてさあ,雷が落ちた木,折れて倒れちゃったんだよ.もう3ウタマロ」などである.

1ウタマロが十分にびっくりしたときの単位なので,3ウタマロは,相当なものである.通常は,1ウタマロ以下で用いられることが多かった.そこで補助単位ドラムカンの出番である.

なにしろ3進数なので使い勝手が悪いことこのうえないのだが,ちょっと驚いたときなどこの補助単位のほうが使いやすい.「出会い頭で向こうの自転車にぶつかりそうになった.0.5ウタマロ?そんなでもなかったな.うーん,1ドラムカン」てな具合.

まあ,馬鹿馬鹿しい遊びである.バカな大学生が考えそうな,ちょっとした言葉遊びだ.

話はとりとめもなく続く.

痛みの単位はハナゲ

架空の単位で思い出すのは「痛みの単位はハナゲ」というジョークである.ずいぶん昔のことなので詳細は忘れてしまったが,ネットに残っている記録によると,95年にやゆよ記念財団という冗談を集めて発信しているサイト,いまでいえば虚構新聞社のようなサイトが発信したのが元ネタだとされている.

どういうジョークだったか.Wikipediaの当該項目から引用しよう.

国際標準化機構 (ISO) によって,人間の痛みの感じ方についての統一単位「ハナゲ」(hanage) が制定され,「長さ1センチの鼻毛を鉛直方向に1ニュートンの力で引っ張り,抜いたときに感じる痛み」が「1ハナゲ」と定義された,とするものである.

もちろんこれは全くの出鱈目である.

当時,面白いことを書くヤツがいるもんだなあと関心していたが,いかにも「それっぽく」書かれているので,釣られてしまう人が出た.当時の記憶を辿ると,会津大学の先生だったはずである.個人名は忘れた.その先生,間に受けて「日本からの提案が世界で標準化されるとは素晴らしい」というような真面目なコラムを,とあるメディアに寄せてしまった.

その後の顛末はほとんど覚えていない.確か,当該コラムは取り下げられ,その先生は赤っ恥を書いた,というような結末だった.昨今,フェイクニュースが社会問題となっているが,今から振り返ってみると「インターネット黎明期からすでにそのような問題は顕在化していたんだなあ」ということがわかる.

ところで「痛みの単位はハナゲ」というキーワードでググってみたら,産経新聞の「痛み学入門講座『ハナゲ』は客観的な単位」と題した記事がヒットした.2019年の記事である.この記事,「インターネット上にまことしやかに流されたニュースがある」とは書かれているものの,この書き方だと,本当のことだと信じちゃう読者がまた続出したんじゃないか?大丈夫か産経新聞.

ChatGPTは?

さて,まことしやかにしれっと嘘情報を出力するといえば,ChatGPTである.いや,「嘘」というと怒る人がいるので,正確ではない情報を出力する,と言い換えておこう.

なにしろ,質問の文章に対して最もそれっぽい文章を出力する,という原理に基づく機械であるから,これは,そもそも質問文として正確ではない情報を入力すれば,正確ではない情報が出てくるのは当たり前なのである.GPT3.5がGPT4になり,さらに改良されようとも,その基本は変わらないはずだ.

例えばこれ.

排他的バッグトリム理論について,ChatGPTは,懇切丁寧に教えてくれた.イャッッホォォォオオォオウ!素晴らしい.提唱者の私すら知らないことを……っていうか排他的バッグトリム理論って何だよぅ(排他的バッグトリム理論とは,私がいまテキトーに考えた,いかにもそれっぽい名前の「なんかカッコいい理論の名前っぽい架空のキーワード」である)w.

であるからして,ChatGPTにこの痛みの単位はハナゲの話を聞いてみて,反応はどうなるか,試してみたのである.また,いけしゃあしゃあと「痛みの単位であるハナゲについては」などとまくしたてるかと思いきや.

バッサリと真正面から正論で否定しやがった.さてはこいつ,やゆよ記念財団の件,しっかり学習してやがったな?

2023年4月22日土曜日

焚き火の思い出

 私が若かりし頃,まだ大学生でバカ丸出しだったころのお話です.山小屋のゴミ処理用に,ドラム缶で簡単な焼却炉を作りました.誰が言い出したか,そのままじゃ面白くない,ドラム缶なので3色に塗ろう,フランスの国旗みたいに,ということでペンキで赤白青に塗り分けたのです.そう,可燃性のペンキで!

さあ完成,ゴミを入れて,燃やしてみよう,とドラム缶の中に放り込んだゴミに火を点けるやいなや,一気に広がる紅蓮の炎.ドラム缶は炎に包まれました.それを後ろから見ていた後輩たちの誰が叫んだか「おー,う〜たまろ(歌麿)〜!」

あとに残ったのは見事に茶色く焼けこげたドラム缶だったもの.そのときの炎はドラム缶の3倍の高さに達し,あやうく山小屋に引き込んでいる電線を焼き切るのではと恐れをなしたものです.その後,「1ウタマロ = 3ドラムカン」という謎の単位が流行したとか,ペンキ塗ろうっていったの誰だっけ?お前じゃ!いやちゃうアイツやった!など責任のなすりつけあいが起こったとか,当時のエピソードは今でも語り草になっています.



2023年4月21日金曜日

2023立て看コレクション

立て看板,それは青春の象徴.大学にタテカンはつきもの,ということで,今年の面白タテカンを紹介したい.採取した場所は東京大学の駒場キャンパスである.さすが東大生というべきか,ユニークなタテカンがいくつも展示?されていた.これは!と思ったタテカンを紹介しよう.

まずはこれ.シンプルなタテカンだが,これは「STOP! UNDER20 DRINKING」のパロディですね.酒でも飲まんと聞いてられん,あるある.

アイデア:★★★★
技術:★
インパクト:★★★

続いて,これは管弦楽団の入団募集タテカン.写真だと分かりにくいかもしれないが,これ,造形がとてもうまい.全てのデザインが立体造形されていて,手が凝っている.中央のバイオリンも美しい.そしてすごく地味なのだが右下のQRコードも木彫りなのだ.

アイデア:★★
技術:★★
インパクト:★

技術が光るといえばこれも興味深い.劇団のタテカンである.大道具さんの面目躍如といったところか,っていうかこれタテカンなのか?

アイデア:★★
技術:★★★★★
インパクト:★★★

番外編.なんで早稲田の冒険部が駒場にタテカン出してるの?冒険心まる出しだなあ.さすが冒険部.

アイデア:ー
技術:ー
インパクト:ー

今年いちばん優秀だと思ったのがこれ.SDGsのパロディである.蛇足ながら解説すると,17個あるSDGsの項目に18番目としてタテカンの自由を追加せよ,というもの.東大だったのが惜しい.このタテカンこそ京大構内に設置してほしかった.

アイデア:★★★★★
技術:★★★
インパクト:★★★★

おまけ.新入生代表による感謝のタテカンである.こうやってタテカン文化が継承されていくのか.でも,これ本当に新入生が立てたタテカンなのかなあ?w

アイデア:ー
技術:ー
インパクト:ー


2023年4月20日木曜日

ChatGPT記事への反応を定量分析

 2ヶ月ほど前の話なのだが「ChatGPTでプログラマはお払い箱になるのか」という記事を書いたところ,珍しくバズり,いつもの数十倍以上のアクセスがあった.はてブのホッテントリにも載ったので,ブコメが100件近く(正確にいうと94件)ついた.

最近,学生がわりと高性能な日本語センチメント分析器(感情分析器)を見つけてきたので,ちょっとした手遊びとして,94件のブコメをざっとスクレイピングして分析器にかけてみた.っていうか,「人々はエシカル消費をどう捉えているか」で紹介した,学生がやっているエシカル消費に関する研究で作ったスクリプトを援用してみた,というわけである.

分析結果

さて,結果はどうなったか.

センチメント分析

まず,94件の内訳を紹介する.ポジティブが18件,ネガティブが29件,ニュートラルが47件となった.ここでは,ポジティブは肯定派,ネガティブは否定派,ニュートラルは中立派ととらえておこう.ポジティブが最も少ない結果となったが,まあ,記事の内容そのものが,プログラマを代替することはないのでは?という否定的なものだったせいか.

次に,それぞれのコメントをポジティブ群,ネガティブ群,ニュートラル群に分けて,簡単なテキスト分析をしてみた.ここではポジティブおよびネガティブ群の結果を紹介する.

ワードクラウド

グループに分けたコメントからワードクラウドを作成してみた.ワードクラウドは,文章中に現れる単語群を,その出現頻度の高さに応じて単語の大きさを大小させることで,どんな言葉が使われているかを視覚的に表す可視化手法である.

以下に紹介するのは,コメントを形態素解析し,名詞,動詞,形容詞などを抽出したものに基づいて作成したワードクラウドである.なお名詞に関しては,連続して出現する名詞は一つの名詞として繋げる,いわゆる「名詞の連接処理」を加えている.

ポジティブ群から紹介しよう.「プログラマ,AI,書く,くれる」というキーワードが大きく示されている.AIがプログラマの代わりに書いてくれる,というようなコメントが目立ったということか.実際,18件のコメントを眺めてみると,AIがプログラムを書いてくれるのでプログラマは楽をできるとか,使い方を工夫すれば十分に使えるなど,そのようなコメントが並んでいる.

次はネガティブ群のそれである.

「chatbot,お払い箱,人,AI,自分」という単語が大きく表示されている.これはどう解釈すべきだろうか.残念ながら,このワードクラウドから引き出せる情報は少ない.ネガティブ群29件のコメントを全部眺めてみると,その多くは「いやお払い箱にはならんやろ?」というものである.このセンチメント分析器の精度はけっこう高いなあと感心した.

共起ネットワーク図

同じような分析ではあるが,共起ネットワーク分析もやってみた.共起ネットワーク図とは,やはり単語の出現頻度でその大きなものを大きなノードとして表し,さらに,同じ段落のなかに入っている(これを「共起」という)頻度が高いものはエッジで結ぶ,その結果をグラフとして表すというものである.なお,ここでいうグラフとは,皆さんお馴染みの棒グラフや折れ線グラフというグラフではなく,数学のグラフ理論でいうところのグラフ,ノードと呼ばれる点や丸で表された図形を,エッジと呼ぶ線で繋いだ図のことである.

こちらも,ポジティブ群から紹介しよう.

対象とするデータのサンプルサイズが小さいので,いささかシンプルなグラフになっているのはご容赦いただきたい.「プログラマは他にやることができる」(右下)とか,「うまいこと使って作業効率を上げる」(上)とか,そのような話題が見出せる.

ネガティブ群はどうか.

「chatgptは嘘をつく」「セキュリティ的に無理」というような共起関係(中心あたり)が目に付く.右上の「正しい,使える,出る」という単語群は,一見,肯定的な意見のようにもみえるが,元データに立ち戻って確認してみると,「出てきたものが正しいが判定できないと使えない」とか「正しさが保証できるコードが出ないと使えない」とか,そのようなものであった.

2023年4月19日水曜日

人々はエシカル消費をどう捉えているか

「エシカル消費」という概念をご存知だろうか.倫理的消費ともいい,倫理的に適切な消費行動かどうかという概念である.具体的には,フェアトレード(発展途上国との公正な取引)とか,フードロス(食品廃棄)の削減,再生エネルギー,地産地消などである.身近なところではマイバックとかリサイクルとか,節電や節水などもその範疇に入るだろう.

市井の人々はエシカル消費に関してどのような態度をとっているのだろうか.皆さんはどうですか?飯尾ゼミのメンバーで,それに着目して分析を進めた2年生(現3年生)のグループがいて,ちょっと面白い結果が出たので(一部だけ)ここで紹介したい.

彼ら彼女らの興味は,エシカル消費およびその具体的なテーマに関して,Twitterではどんなツイートがなされているのだろうか,というものである.さらに,収集したツイートに対してセンチメント分析(感情分析)を行い,ポジティブなツイート群の特徴や,ネガティブなツイート群の特徴を調べた.

ここではその一部を紹介する.次の図は,ネガティブ群のデータに基づいて作成した共起ネットワーク図である.

いくつか面白いトピックが現れているが,注目すべきは右下の「紙ストロー」を中心とするクラスタであろう.この「紙ストロー」,とにかく評判が悪い.ネガティブ感満載である.ポジティブ群にもいくつか現れているが,そのほとんどが「料理が美味しかった!ただ,紙ストローがねぇ……」というようなものである.

さて,研究の具体的な方法や,他の分析結果については,6月の春季HCD研究発表会で,学生が発表予定である.乞うご期待!

2023年4月18日火曜日

iDS演習第2回のソースコード

データの導入

import pandas as pd
df0 = pd.read_excel('ethical_tweets_original.xlsx')
df0 = df0.drop(df0['Unnamed: 0'], axis=1)
df0

リツイートと広告ツイートの排除

df1 = df0.drop(df0[df0['retweet']].index)
df2 = df1.drop(df1[df1['advertise']].index)
df2

キーワードとツイート内容の列だけのデータフレームにする

df3 = df2[['keyword', 'tweet']]
df3

{ キーワード,ツイート内容 } の dict に変換する

tweets = df3.to_dict(orient='records')
tweets

センチメント分析の下準備(1)

!pip install transformers
!pip install transformers['ja']
!pip install sentencepiece
!pip install ipadic

センチメント分析の下準備(2)

from transformers import pipeline, AutoModelForSequenceClassification
from transformers import BertJapaneseTokenizer, BertTokenizer, BertForSequenceClassification

# パイプラインの準備
model = AutoModelForSequenceClassification.from_pretrained('koheiduck/bert-japanese-finetuned-sentiment')
tokenizer = BertJapaneseTokenizer.from_pretrained('cl-tohoku/bert-base-japanese-whole-word-masking')
classifier = pipeline("sentiment-analysis",model=model,tokenizer=tokenizer)

センチメント分析をして極性とスコアを返す関数を定義し,取得したツイートに適用する

def classify(tw):
result = classifier(tw)[0]
return (result['label'], round(result['score'], 4))

col_names = ['label','score','keyword','tweet']
df = pd.DataFrame(columns=col_names)

for tw in tweets:
(label, score) = classify(tw['tweet'])
new_row = pd.DataFrame([[label,score,tw['keyword'],tw['tweet']]],
columns=col_names)
df = pd.concat([df,new_row],axis=0)

df

インデクスが全部0でおかしいので,それを修正

df = df.reset_index().drop('index', axis=1)
df

簡単なテキストマイニングをしてみる.その準備(1)

#GiNZAのインストール
!pip install ginza
!pip install ja_ginza

#Matplotlib日本語化のインストール
!pip install japanize-matplotlib

#GraphViz関連のインストール
!apt install libgraphviz-dev
!pip install pygraphviz

#日本語フォントのインストール
!apt-get -y install fonts-ipafont-gothic
!rm ~/.cache/matplotlib/fontlist-v310.json

簡単なテキストマイニングをしてみる.その準備(2)

import pandas as pd
import spacy
import ginza
import math
import matplotlib.pyplot as plt
from itertools import combinations, dropwhile
from collections import Counter, OrderedDict
import numpy as np
from networkx.drawing import nx_agraph
import networkx as nx
import japanize_matplotlib

STOPWORDS = ['\n', 'o', '\u3000', '\n\u3000','\u3000\n',
'お','す','り','ご','いる','ある','ない','こと',
'なる','ござる','する','いう','言う','思う']

nlp = spacy.load('ja_ginza')
ginza.set_split_mode(nlp, 'C')

@によるメンションを削除する関数を定義

def remove_at_mention(text):
words = text.split()
return ' '.join([ x for x in words if x[0] != '@' ])

単語を抽出する関数の定義

def extract(s):
text = list(s)[0]
text = remove_at_mention(text) # @xxx... を取り除く
doc = nlp(text)
retvar = []
for sent in doc.sents:
noun = ''
for token in sent:
if token.lemma_ in STOPWORDS: continue
if token.pos_ in ['NOUN', 'PROPN', 'NUM']:
noun = noun + token.lemma_
elif noun != '':
retvar.append(noun)
noun = ''
if token.pos_ in ['ADJ', 'INTJ', 'ADV', 'VERB']:
retvar.append(token.lemma_)
if len(noun) > 0: retvar.append(noun)
return retvar

単語に分割した結果を新たな列として追加されたデータフレームを作成

df['words'] = df[['tweet']].apply(extract, axis=1)
df

共起ネットワーク図を書くコードの定義

def conet(df, outfile, min_count=3, edge_th=0.12):
# jaccard係数を計算する(回答の単語登場数:3以上、jaccard係数:0.12以上)
jaccard_coef = []
pair_all = []

words_array = [ set(x) for x in list(df['words']) ]
for chunk in words_array:
tmp_pair = list(combinations(chunk, 2))
for i, pair in enumerate(tmp_pair): tmp_pair[i] = tuple(sorted(pair))
pair_all += tmp_pair
pair_count = {x: count for x, count in Counter(pair_all).items() if count >= min_count}

word_count = Counter()
for chunk in words_array: word_count += Counter(chunk)
for pair, count in pair_count.items():
jaccard_coef.append(count / (word_count[pair[0]] + word_count[pair[1]] - count))
jaccard_dict = OrderedDict()
for (pair, count), coef in zip(pair_count.items(), jaccard_coef):
if coef >= edge_th: jaccard_dict[pair] = coef

# グラフの描画
G = nx.Graph()
G.add_nodes_from(sorted(set([j for pair in jaccard_dict.keys() for j in pair])))
for pair, coef in jaccard_dict.items(): G.add_edge(pair[0], pair[1], weight=coef)

plt.figure(figsize=(15, 15))
seed = 0
np.random.seed(seed)
pos = nx_agraph.graphviz_layout(G, prog='neato',
args='-Goverlap="scalexy" -Gsep="+6" -Gnodesep=0.8 -Gsplines="polyline" -GpackMode="graph" -Gstart={}'.format(seed))

values = nx.pagerank(G).values()
nx.draw_networkx_nodes(G, pos, node_color=list(values), cmap=plt.cm.terrain, alpha=1.0, node_size=[100000*v for v in values],
edgecolors='black')
nx.draw_networkx_labels(G, pos, font_family='IPAexGothic', font_size=24)
nx.draw_networkx_edges(G, pos, alpha=0.7, edge_color='black', width=[d['weight'] * 8 for (u, v, d) in G.edges(data=True)])

plt.axis('off')
plt.tight_layout()
plt.savefig(outfile, bbox_inches='tight')

クラス分けする

df_nega = df[df['label'] == 'NEGATIVE']
df_posi = df[df['label'] == 'POSITIVE']
df_neut = df[df['label'] == 'NEUTRAL']

共起ネットワーク図を描く(ネガティブ群)

conet(df_nega, 'nega.png')

共起ネットワーク図を描く(ポジティブ群)

conet(df_posi, 'posi.png')

ワードクラウドを作ってみる

import wordcloud

path_to_font='/usr/share/fonts/truetype/fonts-japanese-gothic.ttf'

def mk_wc(word_array):
wc = wordcloud.WordCloud(width=1000, height=600,
background_color='white', font_path=path_to_font)
wc.generate(' '.join(word_array))
plt.imshow(wc)
plt.axis('off')

import itertools

def mk_wc_from_df(df):
mk_wc(list(itertools.chain.from_iterable(df['words'])))

ワードクラウドを描く(ネガティブ群)

mk_wc_from_df(df_nega)

ワードクラウドを描く(ポジティブ群)

mk_wc_from_df(df_posi)

2023年4月11日火曜日

ネットメディアとマスメディアの蜜月について

電子情報通信学会の英文論文誌,IEICE Trans. Info. & Sys. の4月号に,次の論文が採録されている(オープンアクセスなので,興味がある方はリンクをクリックすれば本文を読めます).

Iio, J., (2023). How Many Tweets Describe the Topics on TV Programs: An Investigation on the Relation between Twitter and Mass Media, IEICE Transactions on Information and Systems. E106.D(4), 443-449.

この論文は「ツイッターで人々が話題にしているトピックにはTV関連の話題が多く含まれている」ということを定量的に示したものである.具体的には「ツイッターのトレンドに現れるトピックのおよそ20〜25%はTV関連のトピックである」ということを,TWtrendsシステム(Iio, 2019)のデータとEPG(電子番組表)のデータを付き合わせて明らかにしたものだ.

論文は「(The result of this study) implies codependency between Internet media and mass media.(本研究の結果から,ネットメディア(ソーシャルメディア)とマスメディアの共依存が認められる)」と結ばれている.しかし,実際には,SNS側からのマスメディア依存度は定量的に示したものの,マスメディアがネットにどれだけ依存しているかは論文では明示的には示していない.

しかし,昨今のマスメディア,とくにTVの報道番組やワイドショーなどを見ていると,ネット依存であることは明らかであろう.その証拠がこれである.

Twitterで「突然のご連絡 テレビ」などとキーワードを入れて検索すると,出るわ出るわ.「突然のご連絡 ラジオ」や「突然のご連絡 新聞」などでもたくさん出てくる.

いやはや,まあ「突然のご連絡」するな,とはいわないが,それを契機に自分たちでさらに取材,深掘りするならともかく,その後,視聴者ご提供の動画などといって垂れ流して終わりというケースが散見されるのはいかがなものか.いささか安易な番組作りをしていないか?と苦言も呈したくなる.まあ,余計なお世話か.

参考文献

Iio, J., (2019). TWtrends ― A Visualization System on Topic Maps Extracted from Twitter Trends, IADIS International Journal on WWW/Internet, 17(2), 104-118

2023年4月10日月曜日

iDS演習成果発表会2023・冒頭挨拶の書き起こし

みなさん,おはようございます.これ,中継しているんですよね,録画してるんですか……,してる.はい,わかりました.じゃあ,あまり変なことは喋れませんね(会場笑).

まあ,いまのは冗談ですが,はえある第1回の成果報告会ということで,会場も,素晴らしいところで,天気ももう,雲ひとつないいい天気ですね.本当に,恵まれた,成果発表会になったと思います.

10分間挨拶をせよ,ということで私もどうしたものかと,最近流行りのChatGPTに相談してみました.ということで,普段,私はこういうあんちょこを見ながら挨拶することはないんですが,今日は特別で,ChatGPTに,「AIデータサイエンス演習(iDS演習)で10分間の挨拶をしなければなりません.挨拶文を考えてください」という相談をしてみました.ちょっと読み上げますね.彼,彼女ですか?ChatGPTの答えは次のようなものでした.

だそうです.すごいですよね.もう,なんか,私が考える挨拶文なんかよりはるかにすばらしい文章が綴られていました.ただ,たいへん残念なことにですね,私が読み上げた長さは3分くらいなので,「10分間の挨拶をお願いします」とお願いしたのにこれで終わってしまうというのは,もう少し頑張ってほしかったと思う次第です.

まあ,いずれにしてもですね,ChatGPT,これ,皆さん人工知能で,AIの応用ということで,いま,すごくもてはやされていますが,私の考える,私見ではありますが,あれはたんなる道具であってですね,そこに人格を見出してどうのこうのという話は,ちょっと違うのかな,まあ,そのへんの話は,このあと,皆さんの発表が終わったあとの,教員のトークセッションでもう少し深くご紹介したいと思いますが,そういうようなことを考えています.皆さんも,そういうことを理解できるように,勉強を進めていただきたいと願うところです.

それで,あとはChatGPTにばっかり頼っていてもしょうがないので,私の言葉で補足いたしますと,いくつか補足することがございます.

まず,この会場,素敵な会場ですね,先ほど樫山先生にお伺いしたところ,こけらおとしのイベントだということで,我々としても大変嬉しく存じます.この素敵な会場を使わせていただいたことに御礼申し上げます.

それから,順不同にいきますと,今回は新3年生,2年生の発表ですので,外部からご参加されている皆様は,そこはお手柔らかにということで,まだ2年生,そして,3年,4年とあと2年間,勉強を続けていきますので,そこは割り引いて,暖かく見守っていただければと思います.

あと,実行委員会の皆さんですね.実行委員会の皆さんが,精力的に準備を進めてくださって,今日のこの時間に至っています.本当に感謝します.ありがとうございます.

また,挨拶というか注意事項です.皆さんにお願いがございます.私のゼミではいつも言っていることですが,こういう発表会というのは,発表する人が,わーっと発表して終わり,ではありません.発表する人が,なぜ発表するのか,そして,皆さんはなぜそれを聞くのか.

それはですね,発表する人と聞いている人の,コミュニケーションの場である,ということをきちんと考えてくださいということです.すなわち,発表に対して,聞いている皆さんは真摯に聞いて,かつ,その内容について,わからないことがあったらきちんとメモをとる,そして,どんどん突っ込んであげる.そのあとの発表のあとはQ&Aのセッションがありますから,どんどん質問を出してください.質問じゃなくて感想とかコメント,何でもいいですね.一方的に発表するだけでは発表会の意味がありませんので,聞いている人たちはどんどん質問をしてください.

さっき,今井さんの説明 ※1 のあとで,えーとなんだっけ,沖縄だか九州だか,「確実に行けるにはどうしたらいいんですか?」という質問が出るかなと期待していたんですが,誰も質問してない.そういう,発表する人たちは丁寧に発表する,それから,聞いている人たちは,きちんと質問をして,活発な質疑応答で盛り上がる,まあ,これは日本人があまり得意としないところではありますけれども,これからはグローバルな社会ですので,ぜひですね,そういうスキルも身につけて,どんどんと成長していっていただきたい,というふうに思う次第です.

だいたい10分間になりましたかね ※2,ちょっと時計をみていないのですが……,まあ,じゅうぶん喋ったと思いますので,このへんで,冒頭の挨拶を終わりといたします.今日一日,楽しんでやりましょう!


※1 開催前のアナウンスで,沖縄や九州にインターンシップに行けるという説明があった

※2 10分に届かず.7分強のスピーチでした orz

2023年4月7日金曜日

チューリングテストをパスしたChatGPT

人工知能に関するトピックの一つに「チューリングテスト」というものがある.ITmediaのAI・機械学習の用語辞典からその解説を引用する.

チューリングテスト(Turing test)とは,機械(=人工知能)の能力が,人間が行う「知的活動」と同等,もしくはそれと区別がつかないほどであるかを確かめるためのテストである.もっと簡単にいうと,機械(=人工知能)が人間の模倣をして,それに人間が気付かないかどうかをテストすることだ.

具体的には,壁の向こう側に置かれた応答機械もしくは人間に対して質問を投げかけ,それが人間なのか機械なのか区別つかないような返答が戻ってきたとき,それが機械による反応であればそれを人工知能と認めよう,というものである.

揶揄ってゴメン

ところで,ChatGPTは大規模言語モデル(LLM)を用いた文章生成マシンであり,確率的に最も「それっぽい」文章を作成する機械である.したがって,意味的に正しくない回答を出力する可能性はある,と,本家からも断り書きが出ている.

しかし,人工知能と銘打って世間に広まっているため「なんでも正しく答えてくれる機械」と誤解が浸透している.そこに警鐘をならすべく(という建前で)私は彼(彼女?)の珍回答をいくつか紹介している.いや,まあ,本音をいえば,たんに面白がっているだけだけど.

たとえばこれ.

中大兄皇子の隠し子が平家の源流になっているなんて話は聞いたことがない.私が,思いつきで勝手にでっち上げたフレーズである.しかし,ChatGPTはしれっと,息を吐くようにデタラメを並べる.

意地悪な私は,さらに畳み掛けてみた.

もはや支離滅裂である.いったん嘘をつき始めるともう退けなくなっちゃって,ニッチもサッチもいかなくなるという人間のありがちなサガを超えた,これもひとつのシンギュラリティ?なんて思っちゃうくらいだもの.

まあ,それにしてもうまいこと文章を作るものだと,その点は感心する.

怒る人がいる

ところがである.こういうことをして遊んでいると,それに対して怒る人が現れた.こういう遊びはけしからんだとか,新技術を否定するのはよくないだとか,まあ,そんな感じ.「ChatGPTから期待通りの回答が返ってこないことによってChatGPTは馬鹿だっていうのはどうなのか?」というご批判もいただいた.

私も「馬鹿」という言葉遣いはあまりよくないかなと反省するところではあるが,機械であることを認識しているからこそ,多少,乱暴な言葉を使うのである.そもそも,ChatGPTを開発している皆さんは素晴らしいとリスペクトしているし,彼らが馬鹿であろうはずがない.

それゆえに,こういう上手な使い方もあるよという紹介もしている.

人格をうっすら認めているのでは?

新技術を否定するのはよくない(別に全否定しているわけじゃないんだけど……)というご批判はともかく,馬鹿といっちゃイカンだの,揶揄ったらイカンだの,なぜそのようなご批判を受けるのだろう?と考えていたら,どうも皆さん,無意識のうちにChatGPTに人格を認めているのではなかろうか,という結論に至った.

そう考えると,けしからんというのも納得がいくのである.かくいう私も,機械だと分かってはいながらも,いくつかの記事で「誤り上手」だの「頑固者」だの,人格を想定しているような表現で扱っていた(次図).

すなわち,はからずもChatGPTはチューリングテストを既にパスしているのではと考えられるのである.

ちょっとググってみたら,「音声検索とマーケティング|SiriやAlexaは家族の一員になれるか」なんて記事も見つけた.家族の一員ですよ!チューリングテストなんて,もう,はるか昔の考え方なのかと思ってしまうほどである.いやはや,たいへんな時代になったものだ.

2023年4月5日水曜日

プログラマの皆さん向け「ChatGPTの上手な使い方」

ChatGPTは抽象的な質問をすると抽象的な回答しか答えてこないし,そもそもその原理からして固有名詞に弱いという指摘もある.プログラムをスクラッチから書いてとお願いしても,結局のところ仕様を細かくくどくどしいまでに記述しなければならないので,そのような使い方はあまり効果的ではないという話は,以前にも「ChatGPTでプログラマはお払い箱になるのか」で示したとおりである.

だが,次のような使い方はとても効果的だ.

「pandasのDataFrameから特定の文字列を含むレコードを取り出すにはどうしたらよいか知りたい」という状況を考えてみよう.うまくできることは知っているが,久しぶりにDataFrame弄ったので,具体的なやり方を忘れてしまった,という状況である(実は,実際に昨日,学生といろいろ作業していてこのような場面に直面した).

そのまま,ChatGPTに聞いてみた.なお,英語で尋ねているのは,そのほうが正確な答えがくるのかな?と考えただけなので,たぶん日本語でも大丈夫だろう.

Cirtainly! などと得意げに答えてきたChatGPT,はてさてこのコードが正しく動作するか,Google Colaboratoryに突っ込んで試してみよう.Copy codeボタンでコピーし,Colabのコードセグメントにペーストして実行するだけである.

たしかにきちんとできている.ブラボー.ここまで3分かからない.このようなアシスタント的使い方は効果的だろう.なお,ChatGPTは間違ったコードもしれっと吐くので,きちんと確かめるというプロセスは重要である.鵜呑みにしないようにね!

2023年4月4日火曜日

ChatGPTがいくら進化しようとも……

ChatGPTで知的生産の方法が大きく変わる,ホワイトカラーの職が数多く奪われる,はたまた,いまのバージョンはまだ精度が悪いけれど,どんどん改良されて人間と同等になる,など,生成系AIに関するさまざまな意見が交わされている.しかし,私はさほど悲観的には考えていない.何が正しくて何が正しくないかを判断する主体が人間である以上,見た目の精度は多少は上がったとしても越えられない壁があるからである.

これまでにも「ChatGPTでプログラマはお払い箱になるのか」等の記事でいろいろ指摘してきたように,人間の営みが人間主体で行われる以上,ChatGPTが置き換えられる作業は限定的であると断言できる.先日,ラジオで「ChatGPTは医師を置き換える可能性はあるが看護師は置き換えない.身体性に欠けているからである」というコメントがしたり顔で報じられていたが,そういうことではない.

次の例を考えれば,分かりやすいだろう.

例として,大学での教育を挙げよう.知識伝達型,講義形式の授業はChatGPTで不要になる,というような意見も聞こえるようになった.本当にそうだろうか?

極論を言うと,知識伝達型,講義形式の授業はChatGPTで不要になるならば,ChatGPT以前に不要にできているはずなのである.すなわち,学生は自分で教科書を読んで勉強し,自分ひとりで学習すればよい.学習者としてそれができるならば.

従前から,教室に集まり,講義が行われているのは,自律的に学習を一人で進めることのできる学生はさほどいないからだ.もちろん,自律的な学習者は皆無ではあるまい.そのような学生もいるにはいるだろう.しかし,多くの学生にとって,教室,講義,教員,演習といった各種の学習支援装置が必要だからこそ,大学での教育が成立しているのである.

そう考えると,おそらく大学教員がAIを脅威に感じなければならないタイミングは,ChatGPTの高度化などではなく,ママジンが実現されたとき,ではなかろうか.ママジンは感情を持つ,というか,設定では感情を持っているように高度に振る舞うことができる,かな.人間の感情,ときには理不尽かつ非合理な様相を見せるその「感情というもの」を,それっぽく見せられるようになったときに,いよいよ引導を渡されるのではと想像する.

大学での教育に限らず,知的生産の職場でも同様の議論が可能であろう.もちろん,それ故にChatGPTを否定しているのではなく,ChatGPTをうまく活用する方法はいくらでもあるだろう.そのようにAIをうまく活用できるひとが,今後は活躍していくようになるのかもしれない.そのためには,やはり技術や情報を鵜呑みにするのではなく,批判的に考えること,クリティカルシンキングが重要なのである.