日々気まぐれログ

やったりやらなかったり。  

ツギクルバナー 小説『夢次元機アルマエレンシア』連載中です。
 よろしくお願いします。

Twitterで集めた対話コーパスを分割して品詞分解するやつ

colab-logo-1Juman++で品詞分解するやつ。


もっとも、Google Colaboratoryの場合、あまりに大きいファイルは処理できないらしい。
対話コーパスも100万ツイートほどのファイルとなるとそこそこのサイズになる。
これを細切れにしてテンポよく処理させる。

あ、事前にJuman++の準備はしといてもろて。
以下宜しく。

# coding: utf-8

import os
import sys
import glob

N = 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()

識別子を付け忘れたコーパスにあとから付与するやつ

colab-logo-1

ディープラーニングでAIチャットボットを作るには
Twitterなんかで対話コーパスをつくるわけだけども、
発言とそのリプに識別子を付けておいたほうが良い。
というか、収集した後に気づいた。
……ので、後からつけるやつ。

奇数行のヘッダにREQ、偶数行のヘッダにRESをつけてるだけなので
デリミタとかはうまくやってクレメンス。以下宜しく。




#coding:utf-8
#識別子を付け忘れたコーパスファイルにあとから付与するやつ

  import pandas as pd
  import re
  sourcefile_name = "未処理ファイルのパス"
  outputfile_name = "処理後ファイルのパス"

 # 元ファイル
  df = pd.read_csv(sourcefile_name, encoding="utf_8")
  df.insert(0, 'Head', 'value')
  df['Head'] = "REQ:"
  df.loc[0::2, 'Head'] = 'RES:'
  # 中間ファイル
  df.to_csv(outputfile_name)
with open(outputfile_name, encoding="utf_8") as f:
    data_lines = f.read()
    data_lines = data_lines.replace(",Head,", "REQ:").replace(":,", ":")
    text = re.sub("[0-9]+,","", data_lines)
with open(file_name, mode="w", encoding="utf_8") as f:
    f.write(text)


Google ColaboratoryでJUMAN++使って品詞分解をするやつ


colab-logo-1

いくらか速いらしいのでGoogle Colaboratoryで使用したい。
簡単に使うにはやはりひとまとめの何かが欲しい。



wget https://github.com/ku-nlp/jumanpp/releases/download/v2.0.0-rc3/jumanpp-2.0.0-rc3.tar.xz
tar xvf jumanpp-2.0.0-rc3.tar.xz
cd /content/jumanpp-2.0.0-rc3
sudo apt-get install libprotobuf-dev libprotoc-dev protobuf-compiler
cmake /content/jumanpp-2.0.0-rc3/
make install
jumanpp SOURCE.txt > OUTPUT.csv




さて、どうだろう。
ぼちぼちゲームライターやってます。なお、このブログやTwitterでの発言は私個人のものであり、各掲載媒体様は無関係であります。予めご承知おきくださいませ。
うちの同人誌
amazon.co.jp