AI時代の正規表現② ~形式言語を用いる有用性~

ht-kittan
2025-07-22
2025-07-22

― 自然言語×正規表現のハイブリッドが生む生産性 ―

はじめに

AIとの対話は自然言語が中心ですが、時に形式言語――たとえば正規表現(Regular Expression)――を併用することで、より正確で効率的な指示が可能になります。

この記事では、

  • 自然言語と形式言語の違い

  • 両者を併用する利点

  • 実務で役立つ具体例
    を交えながら、AI時代における“人間の伝え方の質”の重要性を解説します。

自然言語と形式言語の違い

特徴

自然言語
(例:日本語・英語)

形式言語
(例:正規表現)
柔軟性 高い。曖昧な表現も可能 低い。明確なルールに従う
解釈の幅 多義的。
文脈によって変化する
一意的。
常に同じ動作をする
記述の難易度 誰でも使える 学習が必要
機械との相性 やや曖昧に伝わることも 精密に伝わる

🔍 例:自然言語だけ vs 形式言語を併用

自然言語だけ:

「メールアドレスだけ抜き出して」

これは人間にはわかりますが、AIにとっては「何をメールアドレスと判断すべきか」が曖昧です。

自然言語+形式言語(正規表現):

「正規表現 [\w\.-]+@[\w\.-]+\.\w+ に一致するメールアドレスを抜き出して」

→ AIは極めて高精度に、意図通りの結果を返してくれます。

 

自然言語「だけ」と自然言語+形式言語「併用」の違い

🎯 目的:「ログファイルからエラー行だけを抽出したい」

自然言語だけの場合:

「ログファイルからエラーを含む行を抽出して。たとえば 'ERROR' や 'Exception' など。」

→ AIは曖昧なルールで抽出を試みます。
→ エラーでない行まで拾ったり、漏れたりすることも。

自然言語+正規表現の場合:

「以下のログから、ERROR|Exception にマッチする行だけ抽出して」

^(.*(ERROR|Exception).*)$

→ 指示が明確になり、余計な結果や漏れを防げます。

実践例:CSVファイルから電話番号だけを抽出

名前,電話番号,メール
佐藤太郎,080-1234-5678,satou@example.com
田中花子,,tanaka@example.net
山本次郎,+81-90-9876-5432,yamamoto@example.org

🧍 人間がAIに自然言語で依頼する:

「電話番号が書かれている列から、すべての電話番号を抽出して」

→ 結果にブレが出やすく、+81の番号が漏れることも。

🤖 自然言語+正規表現で依頼:

「正規表現 (\+81|0)\d{1,4}-\d{1,4}-\d{4} に一致する電話番号をすべて抽出して」

国番号形式も含めて正確に抽出可能!

なぜ今「形式言語」なのか?

ChatGPTなどの生成AIは、自然言語の理解が得意です。しかし、曖昧な表現は解釈に差が出るリスクがあり、特に構造的な処理においては誤解を招きやすいのが現実です。

だからこそ、人間側が「形式言語」で補足してあげることで、AIが本来持つ力を最大限に引き出すことができます。


まとめ

  • 自然言語だけでは伝わりきらない処理も、正規表現などの形式言語を併用すれば一発で伝わる

  • エンジニアにとって、正規表現のような形式言語は「AIとの精密なインターフェース」。

  • 完璧に書けなくてもいい。「少しわかる・使える」だけで、AIから得られる結果が大きく変わります。

最後に

今後AIはますます賢くなっていくでしょう。しかし、「人間がどう伝えるか」の質は変わらず重要です。
自然言語の“やわらかさ”と形式言語の“鋭さ”を併せ持つことこそ、AI時代の新しいスキルセットです。

明日からぜひ、AIとの対話に“ちょっとだけ正規表現”を混ぜてみてください。
きっと、その威力を実感できるはずです。