🛠 ツール制作ログ

Pythonで英語フレーズ抽出を完全自動化!正規表現の罠とGPTの限界を超えた方法

Pythonで英語フレーズ抽出を完全自動化!正規表現の罠とGPTの限界を超えた方法

テキストから「英語フレーズだけ」を自動で拾い上げたい。

言うのは簡単だけど、やってみるとまぁまぁの地獄。

正規表現の罠にハマり、GPTに丸投げしても微妙に漏れたりダブったり。

最終的にスピード・正確性・お金ぜんぶ考えて、やっぱりPythonに戻ってきました。

今回は、私が英語フレーズ抽出を 「どこで沼って」「どう解決したか」 を全部さらします!

🐍 1. 英語フレーズ抽出を自動化したい!

最初の目的はシンプル。

コーチングのセッション文字起こしから「英語だけ」を抜き出して、どんなフレーズを話したか一覧化したい

単語じゃなくて、3単語以上の塊で、「長めの文章(10単語以上)」は別で保存して分析に回す。

つまり欲しいのは👇の2つ。

  • ✅ 3単語以上の短フレーズ
  • ✅ 10単語以上の長文

こういうのが自動でポンっとJSONにまとまれば、成長ログもステップアップログも全部自動化できるじゃん!

という夢を描いてスタートしました。

💥 2. Pythonで正規表現地獄にハマる

最初は「正規表現で英語っぽい文字列を拾えばいいでしょ!」と軽く考えてました。

re.findall(r"[A-Za-z][A-Za-z\s']+", text)

これで英語単語と空白を含む塊を抽出して、split して単語数を数えて…はい完了!

のはずが、現実は甘くない。

  • 🧵 日本語に混じる英語を拾いきれない
  • 🧩 1単語だけのゴミが混ざる
  • 📌 長文と短フレーズが二重カウントされる
  • 🔄 ちょっとした改行でフレーズが切れる

もう 「理想と結果のギャップ地獄」 でした。

条件を変えては漏れ、足せばゴミが増え、1回抽出してGPTで整理しても、結果が毎回ブレブレ。

このとき私はまだ知りませんでした。

正規表現は強いけど、完璧なテキストは人間の頭のほうが早いと…。

🤝 3. GPTに丸投げ → スピード感は最高、でも完璧じゃない

正規表現地獄で心が折れかけた私は、「そうだ、GPTくんにお願いしよう!」と切り替えました。

やり方はシンプルで、クリーン済みテキストをまるっとGPTに投げて、「3単語以上の英語フレーズと、10単語以上の長文を抽出して!」って頼むだけ。

結果、めちゃくちゃ速いし、初回からそれっぽい出力をしてくれました。

だけど…。

  • ✅ 英語以外の日本語フレーズも混ざる
  • ✅ ロングとフレーズが被ってる
  • ✅ セッションごとに漏れや表記ゆれが起こる

一発で理想形にするのは、プロンプトを死ぬほど調整しないと無理だと悟りました。

結局、速いけど安定しない。

あとAPI代が地味に痛い。

📌 じゃあ、どうした?

結論、GPTの強みは確認用に回して、核はPythonで固めよう!

に落ち着きました。

🐍 4. いろいろ考えた結果、Pythonで再構築

GPTの柔軟さとスピード感は最高だったけど、

  • 「フレーズ抽出の正確性」
  • 「毎回のコスト」
  • 「再現性」

この3つを同時に満たすのはやっぱり難しかった。

そこで私が出した結論はシンプル。

  • 👉 コアの抽出はPythonで完全自動化する!
  • 👉 GPTは必要なところだけ最終チェックに回す!

正規表現の沼から学んだことを活かして、以下の方針で再構築しました。

  • ✅ 3単語以上の英語フレーズだけを抽出
  • ✅ 10単語以上の長文をフレーズから除外
  • ✅ ロングとフレーズが被らないようにする
  • ✅ 誤字や変な単語はPython側で補正しておく
  • ✅ 必要ならGPTで最終整形

これにより、どのセッションを投げても抜け漏れゼロ!手直しゼロ!毎回同じ品質!が実現できました。

📌 結果、最強の分業スタイル

今では

  • Python → 抽出&整形(超正確)
  • GPT → 確認&微調整(柔軟&要約)

という最高にシンプルで速い流れになっています。

📌 5. 失敗から学んだシンプル&Fastの大切さ

今回の英語フレーズ抽出プロジェクトで一番の収穫は、「複雑=高性能」ではない ということ。

最初は正規表現をこねくり回して、GPTに丸投げして、またPythonに戻って…と、手段が目的化していた部分が多かったんです。

でも最終的に役立ったのは、

  • 必要最小限の条件だけに絞ったシンプルな正規表現
  • 余計な加工をせず、GPTとの分担も明確化
  • 結果を即JSON化して再利用できる形に保存

という「シンプルで早い(Simple & Fast)」アプローチでした。

👉 複雑にしない。必要なことだけを最短で形にする。これが一番強い!

🚀 6. 次にやるべきアップデート

無事に「3単語以上の英語フレーズ抽出 & 10単語以上のロングセンテンス除外」まで安定稼働できるようになったので、次のアップデートで考えているのはこんな感じです。

具体的なアップデート案

  • 🎯 ダブルカウント防止をさらに強化
    例えば、微妙にスペースが異なるだけの同一フレーズを完全に除外する仕組みを追加する。
  • 📊 抽出結果の自動可視化
    JSONに保存するだけじゃなく、結果を一目でチェックできる可視化ダッシュボードをPythonだけで作る。
  • 🤖 GPTの役割を最適化
    完全にGPTに投げるのではなく、文の解釈が必要な部分だけをGPTにピンポイントで任せる形に整理する。
  • 💾 n8n連携で自動更新
    セッションごとに保存しているJSONをn8nでポータルに自動反映する。

🚀 今後のゴール

ここまで来たら、「英語フレーズ抽出 ➔ コーチングメモ生成 ➔ ポータル自動更新」の全フローを完全自動で回すのが目標です。

やっぱりSimple & Fastでいきましょう!

  • この記事を書いた人

SHIRAN

「コードは知らない。でも作れる。」AIとツールで便利を生む非エンジニア。挫折も経験しながら、今は作る楽しさを発信中。詳しくはこちら

-🛠 ツール制作ログ