01
静かに間違う
エラーは出ない。きれいな数字が、堂々と出てくる。
実際に起きたこと9件
- データ収集
7,678円が、999円になった
全国の店舗の料金を自動で集めるプログラムを作ったときの話です。出てきた一覧に「999円」という数字がありました。実際の料金は7,678円です。
原因は、ホームページの中で「¥」の記号が、人間に見える形とは違う書き方で入っていたこと。機械はそれを金額と読めず、代わりに近くにあった「999円キャンペーン」の文字を拾っていました。
エラーは一度も出ていません。私が「この業界で999円は安すぎる」と知っていたから気づけただけです。
- データ収集
「一番安いプラン」に、子ども向けコースが出てきた
大人向けの店舗を探すために、料金の安い順に並べる処理を作りました。1位に出てきたのは、子ども向けのスクールでした。
データは1円も間違っていません。全部そう書いてあります。ただ、大人が自分用の店を探しているときに、子ども向けを出しても意味がない。
機械は「安い順に並べる」という指示を、完璧に守りました。守った結果が、使えない答えでした。
- データ収集
駅名を取ったら、別の駅までついてきた
店舗の住所から最寄り駅を取り出す処理での話です。「◯◯駅から徒歩1分」という文章から「◯◯駅」だけを取るつもりでした。
ところが「◯◯駅から徒歩1分の駅前店」のような住所だと、後ろにある「駅前店」の「駅」まで読み進んでしまう。区切りの目印にした文字が、取り出したい文字自身に入っていたのが原因です。
- データ収集
駅名が、途中で真っ二つに割れた
「我孫子」駅 が「我孫子 駅」になっていました。元の文章に入っていた鉤括弧を、空白に置き換えていたためです。
削除すべきところを、置き換えていた。それだけです。ただ、見た目が惜しいだけなので、一覧をざっと眺めても気づけません。
- データ収集
駅名に、路線名が丸ごとくっついた
「東武東上線中板橋駅」という表記から駅名を取ろうとして、そのまま全部を駅名にしてしまった例です。
文字列としては何も間違っていません。ただ、これは駅名ではない。
- 集計ツール
お金の出入りが、1日ずれて記録された
毎月の取引を自動で集計するツールでの話です。金額は合っています。日付だけが1日違っていました。
海外の時刻をそのまま使っていたのが原因でした。1件ずつ眺めても気づけず、実際の記録と突き合わせて初めて分かりました。
- 集計ツール
同じ画面の中で、合計が合わなかった
上に出ている合計と、下の一覧を足した数字が違っていました。
どちらの計算も、それ自体は正しい。集計に含める範囲の前提が、上と下で違っていました。
- 集計ツール
ある日の損益だけ、桁が違った
人間が見て「これはおかしい」と気づいた例です。機械は最後まで何も言いませんでした。
極端な値だったから気づけました。もう少し自然な数字だったら、そのまま通していたはずです。
- データ収集
東京の駅と、福岡の駅が1つになった
「赤坂駅」は東京にも福岡にもあります。駅名だけで扱っていたので、2つが1つにまとまってしまいました。
都道府県と組にして、初めて区別できます。同じ名前が全国にあることを、最初は想定していませんでした。
なぜ気づけないのか
止まってくれれば気づけます。でもこの型は、最後まで動いて、それらしい結果を返します。画面には何の警告も出ません。だから「合っているかどうか」を確かめる動機が、そもそも生まれない。
なぜ起きるのか
機械は書いてあるとおりに読みます。ただ、人間が画面で見ている文字と、データの中に入っている文字は、同じとは限りません。その差が、そのまま結果の差になります。
この型を防ぐには
やることは3つです。渡す相手が、それぞれ違います。
① 覚えておくこと
AIに数字を集めさせたら、一番大きい値と一番小さい値だけ、自分の目で見る。間違いは極端な値に出る。
② AIに渡すこと — 作業を頼むときに、これも一緒に貼る
データを集めたら、最後に必ず次を報告してください。 1. 集めた件数と、取得できなかった件数 2. 各項目の最大値と最小値、そしてその元になったページのURL 3. 明らかに外れている値があれば、その一覧 取れなかった項目は、推測や平均値で埋めないでください。空欄のままにして、空欄がいくつあるかを報告してください。
「3」を入れておくと、機械が自分で異常値を挙げてくれます。そして最後の1文が一番大事です。これがないと、それらしい数字で埋められます。
③ 自分で確かめること — いま動いているものが、この型になっていないか
手元の自動集計を1つ開いて、最大値と最小値だけ確認してください。真ん中は、だいたい合っています。