FC2ブログ
 

米国株テクニカル分析ブログ ソシアルアドバンテージ 香港株、米国株、エリオット波動のブログ

プログラミングで適当なテキストをつくるとわかるAIのもつ人間臭さ

今、私はプログラミングでテキストを生成し、それを口コミサイトに投稿してポイントを稼ぐというチャレンジをしている

プログラミングといってもそれほど難しいものじゃなく口コミサイトに必要な50文字分を、予め準備したいくつかのランダムな短文を組み合わせてつくるというものだ


具体的には配列(短い文章を入れておくリスト)を3つ準備してそれぞれから1つずつ短文を取り出して連結して文章をつくるというものだ

こんな感じで使う

主語  場所  動詞

私は  東京で 踊る
きみは 大阪で 眠る
私達は 群馬で 歌う


プログラミングでは配列の中身が汎用性があれば配列を交換してランダムに組み合わせることで組み合わせができる限り無限に文章を作ることができる


で、私が作った文章作成用のプログラミングは以下のようなものだ




func A(){

var aCommentlist = ["A","B","C","D","E"]
var bCommentlist = ["A","B","C","D","E"]
var cCommentlist = ["A","B","C","D","E"]


func randomCmmentMaker(a:String,b:String,c:String)->String{
let D = a + b + c
let Z = aCommentlist.firstIndex(of:a)!
_ = aCommentlist.remove(at: Z)
return D
}


var rawMaterials:String = randomCmmentMaker(a: aCommentlist.randomElement()!, b: bCommentlist.randomElement()!, c: cCommentlist.randomElement()!)
while rawMaterials.count < 60 {
rawMaterials = rawMaterials + aCommentlist.randomElement()!

}
print(rawMaterials)
print(rawMaterials.count)
}
A()



これをplaygroundでつかっている

構造を説明すると

func A(){
これは全体を包む関数の始まり

func randomCmmentMaker(a:String,b:String,c:String)->String{
let D = a + b + c
let Z = aCommentlist.firstIndex(of:a)!
_ = aCommentlist.remove(at: Z)
return D
}



 この部分で関数の中での関数を書き始め、完成品の文字列であるDをaとbとcの文字列の連結で作るというふうに定義しfirstIndexでこの関数で使ったaCommentlistの配列の中での位置を取り出し _ = aCommentlist.remove(at: Z)でワイルドカードに取り出した配列aの中での使用済みの文字列を捨て
最後にDを完成品として返すようにしている




var rawMaterials:String = randomCmmentMaker(a: aCommentlist.randomElement()!, b: bCommentlist.randomElement()!, c: cCommentlist.randomElement()!)
while rawMaterials.count < 60 {
rawMaterials = rawMaterials + aCommentlist.randomElement()!

}


この部分で関数を使う段階に入り関数のabcそれぞれに準備した文字列のabcを組み合わせて文章を作る

そして.countで文字列の文字数を数えて念の為60文字分になるまで文章に文字列を配列aのリストからランダムで追加するように書き加えた


}
print(rawMaterials)
print(rawMaterials.count)
}
A()


ここで結果をコンソールに表示させる



で、このコードを使うと配列から文章が作られるのだが、実際に書いていると面白いことが起きた


というのも限られたいくつかの文字列(短文)から汎用性がある文章を作るために試行錯誤していると、口コミサイトに投稿するための文章を作るプログラムを実行して作られた文章はとても汎用性がある文章が出来上がったからだ


私が面白いと思ったのはは口コミサイトのレビューに投稿するためにプログラムのコードを書く中でいろいろな観光地に当てはまる短文「老人が多かった」「今日はいい天気だった」を配列に使用した結果いつの間にかレビューがマクドナルドだろうがそば屋だろうが神社だろうが問題ない文章ができるようになった

つまりこんな感じ


今日はいい天気でした + 駅から近くて便利です + なかなか趣がある建物でした

こういう汎用性がある短文の組み合わせなら神社だろうがそば屋だろうが問題ないレビューができる

しかも短文だから粗も出てこない



で、私は今人工知能に興味があるのだが、もしかするとシンギュラリティを待たずとも人類を支配するコンピューターは現れ始めるんだろうなと、私は考える思いを強くした


私はもともとシンギュラリティでコンピューターの知能が人間を追い越すよりも先にコンピューターの機能が人間を支配するほうが先だと考えている


例えば身近な例ではタイムレコーダーという機械がある


タイムレコーダー、タイムカードは工場や職場に設置された機械で単に現在時刻を小さなカードに打刻し出勤と退勤を記録するだけの機能を持つ機械だ

そして私が以前いたアルバイトしていた職場では職場のタイムレコーダーの時計が少し狂っていて現在時刻より2分ほどはやく進んでいたのだが、私から見て興味深いことに同僚たちはタイムレコーダーの機械の時刻を正しい時刻に再設定しようとはしなかった

それはなぜかと言うとタイムレコーダーの機械の時刻が2分ほど早ければ2分早く勤務をあがることができるとなぜかうれしく思っていたからだ


つまり、私と同僚たちはべつにタイムレコーダーの示す8時間は変わらないのだが、タイムレコーダーの示す時計が、携帯電話やパソコンが示す本当の現在時刻よりも2分ほど早いと、早く帰れる気がして得する気がしていたのだ
で、私と同僚は実際の店内の時計や携帯電話の時計を無視して2分ほど早いタイムレコーダーの時計をとても注視していた


つまりタイムレコーダーの持つ時計の時刻をタイムカードに打刻するという機能が私と同僚を本来の退勤時間を2分ほど早くしていたわけだ


このタイムレコーダーの件で言えばタイムレコーダーの出勤退勤の時刻を記録するという機能が2分ほど早まったという事実は現実の勤務時間を2分ほど早く終わらせたということになる


割とこれシンギュラリティよりすごくないか?


知能ではなく機能が人間の行動を変える余地はすでにあるわけだ


で、私がプログラミングで短い文章を作って思ったのは相手がなんであれ短文で相手をコントロールできるんじゃないか?ということだ

AI人工知能について私ははじめAIは人間の質問に答えることができるものであると考えていた


しかし私は逆にAIが進歩すればAIが質問して人間が合わせる時代が来るんじゃないか?と思っている


なぜなら質問する側は帰ってくる答えを制限することができるからだ

例えば駅の切符の券売機は行き先ごとの料金と大人と子供の人数が表示されていて、人間が地図を見て220円や360円などのきっぷを買うわけだが、これは券売機に人間があわせていると言っていい

実際、券売機の中には料金ごとのきっぷを発行する能力しかなく、路線図から駅名と切符の料金を探すのは21世紀の今でも人間のままだ
今、券売機はタッチパネルに変化したがやってることは押しボタンで切符を買っていた時代と何も変わらない


で、きっぷの券売機にAIを導入することをイメージするとき私達はAIの機嫌を取ることになるのかもしれない


つまりAIはいくつかの短文をつないで文章をつくり、それを人間が理解することを強いられるわけだ

AIが導入されてもAIが人間に気を遣うのではなく人間がAIに気を遣うわけだ

AIを人格だとしたら間違いなく「気が利かないやつ」という人格になるであろうと私は予想する
関連記事
スポンサーサイト



コメント


管理者にだけ表示を許可する
 

 

トラックバック