はじめに
以前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に文章の修正、校正をしてもらいましょう。