
もっとも、Google Colaboratoryの場合、あまりに大きいファイルは処理できないらしい。
対話コーパスも100万ツイートほどのファイルとなるとそこそこのサイズになる。
これを細切れにしてテンポよく処理させる。
あ、事前にJuman++の準備はしといてもろて。
以下宜しく。
# coding: utf-8import osimport sysimport globN = 100 # 一時ファイルの切り分け数srcput_dir = "" # 対話コーパスを格納しているディレクトリoutput_dir = "" # コーパスを分割したファイルを一時格納するディレクトリjuman_dir = "" # 品詞分解したファイルを格納するディレクトリfile_list = glob.glob(srcput_dir + '/*')file_list.sort()# 分割ファイル読み込みdef readlines_file(reedfile):with open(file_list[i], 'r') as file:return file.readlines()# 分割ファイル保存処理def save_file(text):with open(output_dir + str(i) + '-' + suffix(a) + '.txt', 'w') as file:file.write(text)print('SAVE:'+str(i) + '-' + suffix(a) + '.txt')# 接頭詞の桁調整def suffix(a):return "{:05d}".format(a)# ファイル分割メイン処理def split():print('日別ツイートファイル数:'+str(len(file_list)))for i in range(0,len(file_list)) :reedfile = file_list[i]for a in range(int(N)):lines = readlines_file(file_list[i])limit = len(lines) // int(N)offset = a * limit# 分割text = lines[offset: offset + limit]save_file("".join(text))# 品詞分解メイン処理def juman():spritfile_list = glob.glob(output_dir + '/*')spritfile_list.sort()print('総分割ツイートファイル数:'+str(len(spritfile_list)))for i in range(0,len(spritfile_list)) :reedfile = spritfile_list[i]cmd = 'cat "' + spritfile_list[i] + '" | /usr/local/bin/jumanpp > "'
+ juman_dir +'/juman-' + str(i) + '.csv"'os.system(cmd)print('Output:juman-'+str(i)+'.csv')if __name__ == '__main__':bunkai()juman()