はじめに
以前Whisperで、音声の文字起こしの方法について取り上げました。
今回から2回に分けて、文字起こしした文章の誤字の修正、句読点の追加をChatGPTにさせようという企画です。
ChatGPTにはトークンがあり、1回で出来ないことがあるので、今回は、まず文章を適切な範囲で分割するプログラムをPythonで作りたいと思います。
次回、それを使って、ChatGPTに自動的にリクエストを投げて、校正してもらいましょう。
文章を分割するプログラム。
今回は約1000トークン程度で分割するようにしています。本来もっと多くても大丈夫なのですが、次回のChatGPTを自動で呼ぶ際に、多いと途中で止まることがあるため、わざと少なくしています。
プログラムはこんな感じです。
import os import sys import chardet # テキストの文字コード判定関数 def detect_encoding(filepath): with open(filepath, 'rb') as f: rawdata = f.read() result = chardet.detect(rawdata) return result['encoding'] # メイン関数 def chatgpt_text_split(attach): for file in attach: # 結果ファイル名 file_name, file_extension = os.path.splitext(file) result_file = file_name + "_result" + file_extension # 文字分割スクリプト def split_text(text, length): return [text[i:i+length] for i in range(0, len(text), length)] # テキストファイルの読み込み enc = detect_encoding(file) print('文字コード:',enc) with open(file, "r", encoding=enc ) as file: text = file.read().replace('\n', '') splitted_texts = split_text(text, 1000) with open(result_file, "w") as file: for i, txt in enumerate(splitted_texts): if i != 0: file.write("\n" + "```" + "\n") file.write(txt) if __name__ == '__main__': chatgpt_text_split(sys.argv[1:]) print('ChatGPT用に内容を分割しました。細かいところは確認してください。')
使い方
このプログラムに、引数としてファイルパスを送ると、内容を分割してくれます。
ここだけ人間の目のチェックが必要になるのですが、分割される部分が、必ずしも文章の切れ目ではないため、切れ目を人目検して、微調整してください。
まとめ
次回は、この結果データを順番に読ませて、ChatGPTに文章の修正、校正をしてもらいましょう。