Excel で作った表で誤字を一括修正 (Google Colab)

この記事およびコードは Gemini 1.5 Pro を使用して作成しています。

音声認識で議事録作成は楽になったけど、誤字の修正が面倒くさい… 特に、人名や専門用語など、毎回修正するのは本当に大変ですよね。

そこで今回は、Google Colaboratory (Colab) と Excel を使って、この面倒な作業を自動化する方法を紹介します。Google Colaboratory(Colab)は、ブラウザ上でコードを書いて実行できる、機械学習の学習やデータ分析に便利な無料のクラウドサービスです。環境構築が不要で、誰でも簡単にPythonを始められます。難しい設定は一切不要、ブラウザ上でコードを貼り付けるだけでOKです。

最初に

このタスクをこなしてくれるGPTを作成しました。無料版でもデータ分析が可能になったので、回数制限に気をつけながら使用できると思います。「何から始めたらいい?」から指示に従って進めてください。

https://chatgpt.com/g/g-oBq9SnKDY-replace-text

手順

  1. 修正ルールを Excel で作成: 誤認識しやすい単語と正しい表記を Excel ファイルにリストアップします。
  2. Colab でコードを実行: 以下のコードをコピー&ペーストして実行!
  3. ファイルをアップロード: Excelファイルと修正したいテキストファイルをアップロードします。
  4. 修正完了!: Colab が自動で修正、ダウンロードできます。

1. 誤字修正ルールをエクセルで作成

A列に修正して欲しい文字列、B列に正しい表記を Excel ファイルにリストアップします。.xlsxファイルとして、PCの任意の場所に保存して下さい。

修正ルールファイル (Excel) の例

A列B列
難因性内因性
神奇的心気的
〜〜(修正して欲しい文字列)〜〜(正しい文字列)

作成が完了したら任意の名前、任意の場所で、.xlsxで保存してください。

2. Colab でコードを実行

以下のGoogle Colabをご自身のDriveにコピーを保存後してください。

GoogleColabについてもっと知りたい方は、東京大学 数理・情報教育研究センターが公開している「Pythonプログラミング入門」[1]東京大学 数理・情報教育研究センター. Python プログラミング入門. https://utokyo-ipp.github.io/

https://colab.research.google.com/drive/1PHlm5I7RKGSgA07_FKkPMpXAqzSbAwog?usp=sharing

コピーが完了したら、左のボタンを押してコードを実行してください。

実行後まもなく下に①置換ルールのエクセルファイル、②置換したいテキストファイルをアップロードを行なうボタンがでてくるのでファイルをアップロードしてください。

ファイル形式が違うと、再アップロードするように説明がでてきます。

置換が完了したら自動的にダウンロードが始まります。

Colab で実行する .ipynb コード

import openpyxl
from google.colab import files
import shutil
import os
import glob

# --- フォルダ作成 ---
os.makedirs('input', exist_ok=True)
os.makedirs('output', exist_ok=True)
os.makedirs('replace_rule', exist_ok=True)
# ----------------------

# --- 置換ルールファイルのアップロード ---
while True:
  print("置換ルールを書いたエクセルファイル(.xlsx)をアップロードしてください")
  uploaded = files.upload()
  for filename in uploaded.keys():
    if not filename.endswith(".xlsx"):
      print("ファイルの拡張子が違うようです。もう一度ファイルをアップロードしてください。")
      break
  else:
    shutil.move(filename, f"/content/replace_rule/{filename}")
    break
# ----------------------

# --- 置換対象ファイルのアップロード ---
while True:
  print("置換したいテキストファイル(.txt, .srt)をアップロードしてください")
  uploaded = files.upload()
  for filename in uploaded.keys():
    if not filename.endswith((".txt", ".srt")):
      print("ファイルの拡張子が違うようです。もう一度ファイルをアップロードしてください。")
      break
  else:
    shutil.move(filename, f"/content/input/{filename}")
    break
# ----------------------

# --- 設定 ---
excel_path = glob.glob("replace_rule/*.xlsx")[0] # replace_rule ディレクトリ内のExcelファイルを指定
input_folder = 'input'                 # 修正したいファイルがあるフォルダ名
output_folder = 'output'                # 修正後のファイルを保存するフォルダ名
# ----------------------

# Excelファイルを読み込み、置換ルールを辞書に格納
wb = openpyxl.load_workbook(excel_path)
sheet = wb.active
replace_dict = {}
for row in sheet.iter_rows(min_row=2, values_only=True):
    if row[0] is not None and row[1] is not None:  # セルの値がNoneでないことを確認
        replace_dict[str(row[0])] = str(row[1])

# テキストファイルと字幕ファイルを一括処理
for file_path in glob.glob(os.path.join(input_folder, '*.txt')) + glob.glob(os.path.join(input_folder, '*.srt')):
    with open(file_path, 'r', encoding='utf-8') as f:
        text = f.read()

    # 置換ルールに基づいてテキストを修正
    for key, value in replace_dict.items():
        text = text.replace(key, value)

    # 修正後のテキストをファイルに保存
    output_file_path = os.path.join(output_folder, os.path.basename(file_path))
    with open(output_file_path, 'w', encoding='utf-8') as f:
        f.write(text)

    # --- ファイル個別ダウンロード ---
    files.download(output_file_path)
    # ----------------------

print("置換が完了しました!")Code language: PHP (php)

自分のローカルPCでPythonで実行する場合

準備

1. Pythonをインストール

まだインストールしていない場合は、Python公式ウェブサイトからダウンロードしてインストールしてください。

コマンドプロンプト/ターミナルを開いて、

  • Windows: Windowsキーを押して「cmd」と入力し、Enterキーを押します。
  • Mac: Spotlight検索 (虫眼鏡アイコン) をクリックし、「ターミナル」と入力してEnterキーを押します。
python -V

と入力して、

Python 3.12.3Code language: CSS (css)

などと表示されていればPythonは既にインストールされています。

2. 必要なライブラリをインストール

以下のコマンドを実行して、必要なライブラリをインストールします。

   pip install openpyxl
  • 同じディレクトリに置換ルールの.xlsxを格納する「replace_rule」フォルダと、置換したいテキストデータを格納する「input」フォルダを作成して、それぞれデータを格納してください
  • 以下のフォルダ構成を作成します。
任意のフォルダ
   ├── replace_text.py
   ├── replace_rule
   │   └── replace_rules.xlsx  # 置換ルールを定義したExcelファイル(名前は任意)
   ├── input
   │  └── (修正したい.txtファイルと.srtファイルを置く) 
   ├── output (自動で生成)
   │  └── (修正後の.txtファイルと.srtファイルが格納される) 
   └── done (自動で生成)
       └── (元ファイルは処理後にこちらに移動) Code language: CSS (css)

以下をコピーしてreplace_text.pyという名前で保存してください。

import openpyxl
import os
import glob
import shutil

# --- 設定 ---
excel_folder = 'replace_rule'  # 置換ルールを定義したExcelファイルがあるフォルダ名
input_folder = 'input'         # 修正したいファイルがあるフォルダ名
output_folder = 'output'        # 修正後のファイルを保存するフォルダ名
done_folder = 'done'           # 処理済みのファイルを移動するフォルダ名
# ----------------------

# Excelファイルのパスを取得
excel_files = glob.glob(os.path.join(excel_folder, '*.xlsx'))
if not excel_files:
    print("エラー: replace_rule フォルダに .xlsx ファイルが見つかりません。")
    exit()
excel_path = excel_files[0]

# Excelファイルを読み込み、置換ルールを辞書に格納
wb = openpyxl.load_workbook(excel_path)
sheet = wb.active
replace_dict = {}
for row in sheet.iter_rows(min_row=2, values_only=True):
    if row[0] is not None and row[1] is not None:
        replace_dict[str(row[0])] = str(row[1])

# 出力フォルダと処理済みフォルダが存在しない場合は作成
os.makedirs(output_folder, exist_ok=True)
os.makedirs(done_folder, exist_ok=True)

# テキストファイルと字幕ファイルを一括処理
for file_path in glob.glob(os.path.join(input_folder, '*.txt')) + glob.glob(os.path.join(input_folder, '*.srt')):
    with open(file_path, 'r', encoding='utf-8') as f:
        text = f.read()

    # 置換ルールに基づいてテキストを修正
    for key, value in replace_dict.items():
        text = text.replace(key, value)

    # 修正後のテキストをファイルに保存
    output_file_path = os.path.join(output_folder, os.path.basename(file_path))
    with open(output_file_path, 'w', encoding='utf-8') as f:
        f.write(text)

    # 処理後のファイルを done フォルダに移動
    shutil.move(file_path, os.path.join(done_folder, os.path.basename(file_path)))

print("置換が完了しました!")Code language: PHP (php)

実行手順

1. コマンドプロンプト/ターミナルを開く:

  • Windows: Windowsキーを押して「cmd」と入力し、Enterキーを押します。
  • Mac: Spotlight検索 (虫眼鏡アイコン) をクリックし、「ターミナル」と入力してEnterキーを押します。

2. スクリプトのあるディレクトリに移動

コマンドプロンプト/ターミナルで、cd コマンドを使ってreplace_text.pyファイルがあるディレクトリに移動します。

   cd /path/to/your/directory  

(例: cd /Users/Documents/任意のディレクトリ)

Windowsは右クリック -> 情報でディレクトリの場所が表示されると思います。

Macも右クリックしてメニューを出した状態で「option」ボタンを押すと、「コピー」のところが「…のパス名をコピー」となりますので、これでパス名を取得することが可能です。

もしくはMacであれば、「任意のディレクトリ」を右クリック > サービス > フォルダに新規ターミナルで、パスを指定したうえでターミナルを開くことができます。この場合は上述の

cd /path/to/your/directory

は不要です。

3. スクリプトを実行: 以下のコマンドを実行します。

   python replace_text.pyCode language: CSS (css)

処理が完了すると、 outputフォルダに修正後のファイルが作成されます。doneファイルが自動で生成され、元ファイルはこちらに移動されます。

まとめ

Colab と Excel を使えば、簡単に議事録や字幕ファイルの誤字修正を自動化できます。”議事ロガー”の皆さん、この方法を試して、議事録作成をもっと楽に、そして正確にしてみてください。

おまけ

2024年5月25日現在、個人的なAI利用頻度としてGemini 1.5 Pro/Flash > GPT-4o > Claude-3 という感じで使っています。Google AI Studio が無料枠があり、大量コンテクストが扱えるのがとても大きいです。長文要約タスクに関してはClaude-3 Opus が一つ飛び抜けている印象があります。コード生成については Gemini 1.5 Pro/Flash とGPT-4oを併用して使っています。

References

References
1 東京大学 数理・情報教育研究センター. Python プログラミング入門. https://utokyo-ipp.github.io/

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


上部へスクロール