2007年5月15日

誤った判定 - 学校では教えてくれないバッドノウハウ英語 #13

学校では教えてくれないバッドノウハウ英語の13回は、誤った判定(間違った判定)に関する表現を取り上げたいと思います。

 
スパムフィルタによるスパムの判定や、メモリチェックツールによるメモリリークの判定など、コンピュータの世界では、ソフトウェアを用いて何かを自動で判定することがよくあります。

ここで問題となるのが、誤った判定です。スパムフィルタの例で言えば、「本当はスパムじゃないのにスパムと判定された(大切なメールがスパムフォルダに行ってしまった)」と「本当はスパムなのにスパムじゃないメールとして判別された(スパムが受信箱に入ってきた)」という2つの場合があります。

英語では前者の場合を false positive、後者の場合を false negative と呼びます。日本語では偽陽性、偽陰性となりますが、基本的に医学用語なので、日常的にはあまり聞かないと思います。一方、英語圏のプログラマは false positive, false negative ともにプログラミングに関する議論でよく使います。

プログラミングの文脈では false positiveは、誤った警告メッセージ(本来出るべきではないもの)が出たとか、誤ったパターン(本来マッチするべきではないもの)にマッチした、というときに使われます。

例)
I have fixed the bug so that we don't get false positive warnings.
誤った警告が出ないように、バグを直しといたよ。

The regex pattern would produce false positive matches.
その正規表現のパターンは誤ったマッチを生むかもね。

上の例のような場合、 false (誤った)というところが重要なので、 positive の方は省略しても意味は通じます。

一方、false negative の方は、本来出るべき警告が出なかったとか、本来マッチすべきパターンにマッチしなかった、というときに使います。感覚的に言えば「見逃してしまった」というときです。しかし、false positive と比べると出番はそれほど多くありません。

false positive の仲間

false positive とよく似た言葉に false alarm (誤った警報)があります。メーリングリストなどで問題を報告した後にそれが誤りであることが判明した場合、 Sorry for the false alarm などといって謝る場面はよくあります。

例)
The problem I reported yesterday went away after I installed the right binary. Sorry for the false alarm.
昨日に報告した問題は正しいバイナリをインストールしたら消えてしまった。誤った報告をしてしまってすまん。

もうひとつ、 false positive と関係の深い表現に red herring があります。こちらは「人の注意を他にそらすもの」という意味です。

意味深長なエラーメッセージが表示されて、これがエラーの原因に違いないと思いきや、実はぜんぜん関係ないところが原因だった、ということはよくあります。紛らわいエラーメッセージ出さないでよ、という場面です。

例)
I think the error message is a red herring.
そのエラーメッセージは紛らわしいけど関係ないと思うよ。

まとめ

今回は誤った判定に関する表現を紹介しました。false positive, false negative はどっちがどっちか混乱しやすいので(私もよく混乱します)、迷ったときの参考になればと思います。