livedoorニュースコーパスのファイルをデータフレームにまとめる

前回の記事でダウンロードしてきたlivedoorニュースコーパスのデータを扱いやすいようにデータフレームまとめてしまいます。

ファイルの中には、URL、日時、記事タイトルがあって、そのあとに記事本文が続く構成になっていますが、
それぞれ属性が違うので別列に取り出しています、

このブログでは再帰的なファイルの探索はglobを使うことが多かったのですが、
パスからファイル名やディレクトリ名を取り出して使いたかったので、pathlibの方を使いました。

では早速ですがコードの紹介です。


import pandas as pd
import pathlib

df = pd.DataFrame(columns=["category", "url", "time", "title", "text"])

for file_path in pathlib.Path("./text").glob("**/*.txt"):
    f_path = pathlib.Path(file_path)
    file_name = f_path.name
    category_name = f_path.parent.name

    # 特殊ファイルはスキップ
    if file_name in ["CHANGES.txt", "README.txt", "LICENSE.txt"]:
        continue

    with open(file_path, "r") as f:
        text_all = f.read()
        text_lines = text_all.split("\n")
        url, time, title, *article = text_lines
        article = "\n".join(article)

        df.loc[file_name] = [category_name, url, time, title, article]

# インデックスに使用していたファイル名を列の1つにする。
df.reset_index(inplace=True)
df.rename(columns={"index": "filename"}, inplace=True)

# ファイルに保存
df.to_csv("./livedoor_news_corpus.csv", encoding="utf-8_sig", index=None)

思っていたより短く簡単なコードであっさりできてしまったので前回の記事に含めておけばよかったですね。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です