LoginSignup
0
0

More than 1 year has passed since last update.

Python でテキストデータの会話文を1行に成型する

Last updated at Posted at 2021-11-29

テキストデータを自然言語処理する際に、会話文を抽出したかったが、テキストデータにおいて、1行に'「」'の対が複数あったり、逆に'「」'の対が複数行にまたがって存在していたりしており、成型がめんどうであった。
「」の対が1要素に収まっているリストを返す関数をメモ代わりに記載する。

# テキストファイルのパス
path = 'hogehoge.txt'

# 「」の対が1要素に収まっているリストを返す関数

def preprocessing(path):
    text = []
    with open(path, mode='r', encoding='utf-8') as f:
        for line in f.readlines():
            # text の list の要素に'「', '」'がそれぞれ1つ以下になるよう加工する
            line = line.replace('「','\n「')
            line = line.replace('」','」\n')
            if '\n' in line:
                line = line.split('\n')
                line = [l for l in line if l != '']
            else:
                line = [line]
            text.extend(line)

    # 「」の対が複数要素にまたがっているものを1つの要素に結合する
    document = []
    counter = 0
    stack = []
    for line in text:
        stack.append(line)
        if '「' in line:
            counter += 1
        if '」' in line:
            counter -= 1
        if counter == 0:
            stack = ''.join(stack)
            document.append(stack)
            stack = []

    return document

おそらくもう少し賢い書き方があるに違いないし、すべての場合に対応可能であるわけでは当然ないけれども、とりあえず目的は達成できたのでよしとする。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0