PR

ChatGPTとPythonを使ってnote記事のテキストデータを分析するための5ステップ

PC
この記事は約8分で読めます。

noteで10分間日記という毎日投稿の日記を書いていた時期があります。

むにくん|note
10分間日記を書く、パンやさんみならいLv.6(自称) 兼 随筆家もどきLv.2(自称) 思いついたときに思いついたことを書くので、支離滅裂でも気にしないのが長所です。 ブログもあります。

今はお休みしていますが、続けるかどうかはまだ決めてません。その材料として、データ分析をかけてみたのですが、その方法論は役に立ちそうだなと思ったので、ブログ記事として残しておくことにしました。

スポンサーリンク

noteのデータを分析する方法

noteでは記事データをXML形式のファイルとしてダウンロードすることができます。

今回の記事では、ダウンロードしたXMLファイルを元に、テキストの内容を分析した方法を書き残しておきますので、参考に参考にしていただけると嬉しいです。

それではステップごとに書いていきますね。

ステップ1:記事データのダウンロード

まずは、noteからXML形式で記事データをダウンロードして、デスクトップ等の任意の場所に保存します。

データのダウンロード方法については、下記リンク先に詳細がありますので参照してください。(公式)

https://www.help-note.com/hc/ja/articles/16143464838681-エクスポート機能の使い方

ステップ2:記事データの確認

XMLファイルをテキストエディタやコードエディタなどで開いて、生のデータを確認します。

このステップは結構大切です。生のデータを確認する癖をつけておいた方があとあと効いてくると思います。プログラミングとか全然わからんっていう場合でも、構造化されたデータであるということは気付けると思います。

使用するエディタによっては構造によって色分けされる場合もあるので、それだとなおわかりやすいですね。

今回はnoteのデータを使うので、続くステップでやっていけば大丈夫だと思いますが、他のテキストデータの場合は処理の方法は変える必要がある場合があります。

でも、迷ったら基本、即ChatGPTに相談すればいいです。

ステップ3:XMLデータをChatGPT(GPT-4 Turbo)に読み込み、基本的なクリーニングをしてJSON形式で保存

ChatGPTのData Analysis機能を使って、基本的なクリーニングをしてもらいます。その後、JSON形式で保存し、ダウンロード用のリンクを作ってもらいます。

具体的なプロンプトはこのような感じにしました。

プロンプト例

下記の手順で、アップロードしたXMLファイルを読み込んで必要なデータを抽出し、処理を実施してください。

1.タイトルと本文の抽出:<title>と<content:encoded>の部分をXMLファイルから抽出し、JSON形式で保存。

2.ハイパーリンクの除去:抽出したテキストからハイパーリンク(https://を含む)を除去し、JSON形式で保存。

3.HTMLタグの除去:テキストからHTMLタグを除去し、JSON形式で保存。

これで、データクリーニングの第一段階は完了です。生データに合わせて色々変更してみてください。

ステップ4:JSONのデータから不要部分とハッシュタグを削除

ChatGPTを使って、コードを書いてもらいます。

プロンプトはこのような感じ。

プロンプト例

PythonでJSONファイルをクリーニングするためのコードを教えてください。pythonでの処理手順は次のようにお願いします。

  • JSONファイルを読み込む。
  • 特定のキーワードを含む文章を除去する。
  • ハッシュタグを除去する。
  • 処理結果を新しいJSONファイルに保存する。

出力されるコードは下記のような感じです。

import json
import re

def remove_sentences_using_keywords(file_path, keywords_to_remove, output_file_path):
    # JSONファイルを読み込む
    with open(file_path, 'r', encoding='utf-8') as file:
        articles = json.load(file)

    # 特定のキーワードを含む文章を除去する
    for article in articles:
        for start_keyword, end_keyword in keywords_to_remove:
            pattern = re.escape(start_keyword) + '.*?' + re.escape(end_keyword)
            article['content'] = re.sub(pattern, '', article['content'], flags=re.DOTALL)
        
        # ハッシュタグを除去する(この行を追加)
        article['content'] = re.sub(r'#\S+', '', article['content'])

    # 処理結果を新しいJSONファイルに保存する
    with open(output_file_path, 'w', encoding='utf-8') as file:
        json.dump(articles, file, ensure_ascii=False, indent=4)

# 使用例
file_path = 'path_to_your_input_file.json'
output_file_path = 'path_to_your_output_file.json'
keywords_to_remove = [
    ('start_keyword1', 'end_keyword1'),
    ('start_keyword2', 'end_keyword2')
    # ここに他のキーワードペアを追加
]

remove_sentences_using_keywords(file_path, keywords_to_remove, output_file_path)

関数を定義して、記事ごとに処理を実施するようになっています。細かいところは自分にもよくわからないところがあります。でも使えちゃいます。

ヒント

file_path = ‘path_to_your_input_file.json’ →元ファイルのパスを入れる

output_file_path = ‘path_to_your_output_file.json’ →出力したいファイルのパスを入れる

start_keyword1,end_keyword1 →削除したい文章の最初と最後のキーワードペア。複数可

とりあえず上の3点に該当する部分だけを変えれば、コピペで使えると思います。コード自体は特別なものではなく、至って一般的なものです。

ステップ5:データのクリーニングが済んだJSONファイルをChatGPTに読み込ませ、分析

データのクリーニングが済んだら、下記のようなプロンプトで分析してもらいます。

プロンプト例

あなたは書籍の編集者です。

この著者の文章の内容や構成について、アドバイスするとしたらどのようにするでしょうか?具体的に3点、考えてみてください。

また、この人に対して文章から感じる「強み」についても、具体的に3つ教えてください。

と、まあ、目的に応じて煮るなり焼くなりしてください、という感じですね。

ちなみにどのような結果だったかというと・・・それは、別の記事にして紹介しますね。興味があれば、ぜひ見ていただけると嬉しいです。

さらにMeCabなどを使うこともできる

ChatGPTでは簡単な自然言語分析をしてもらうことはできますが、自然言語処理の方法としてTF-IDFだったりMeCabだったりという既存のものを使うことができません。

そのため、データクリーニング後のデータをさらにいろいろと分析したい場合は、別途、ローカルやクラウドなどに開発環境をインストールし、それらを利用するための環境をインストールする必要があります。

環境によってインストールと活用の方法は違うと思いますので、各自お調べください。

おわりに

今回は自分がやってみた分析の方法を紹介しました。

ソフトウェアエンジニアでもない、ましてやコンピュータサイエンスもよくわかってないド文系の自分にも、このような解析が簡単にできてしまうなんて、すごい時代ですよね。

途中で詰まったら、ChatGPTに質問したら解決に近づくことができます。ChatGPTの環境でも実行できない場合、ローカル開発環境などを用意しておく必要があるということです。

プログラミングとか全然、という方でも、基本的な仕組みと構文を読むことができれば、あとはChatGPTでコードを生成してもらえばOKです。

そんな感じで色々と試してみてはいかがでしょうか。可能性は無限にありそうだ。

それでは、ここまでお読みいただきありがとうございました!へば!!


↓ちなみに、僕は初心者の頃、下記の本で勉強しました。文法と動かし方がわかれば、あとはChatGPT等の生成AIを使ってコードを動かしまくるのが上達のコツだと思います。わからんところはChatGPTに聞けばいいです。

コメント

タイトルとURLをコピーしました