
テキストから「英語フレーズだけ」を自動で拾い上げたい。
言うのは簡単だけど、やってみるとまぁまぁの地獄。
正規表現の罠にハマり、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でいきましょう!