noteで10分間日記という毎日投稿の日記を書いていた時期があります。
今はお休みしていますが、続けるかどうかはまだ決めてません。その材料として、データ分析をかけてみたのですが、その方法論は役に立ちそうだなと思ったので、ブログ記事として残しておくことにしました。
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形式で保存し、ダウンロード用のリンクを作ってもらいます。
具体的なプロンプトはこのような感じにしました。
これで、データクリーニングの第一段階は完了です。生データに合わせて色々変更してみてください。
ステップ4:JSONのデータから不要部分とハッシュタグを削除
ChatGPTを使って、コードを書いてもらいます。
プロンプトはこのような感じ。
出力されるコードは下記のような感じです。
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)
関数を定義して、記事ごとに処理を実施するようになっています。細かいところは自分にもよくわからないところがあります。でも使えちゃいます。
とりあえず上の3点に該当する部分だけを変えれば、コピペで使えると思います。コード自体は特別なものではなく、至って一般的なものです。
ステップ5:データのクリーニングが済んだJSONファイルをChatGPTに読み込ませ、分析
データのクリーニングが済んだら、下記のようなプロンプトで分析してもらいます。
と、まあ、目的に応じて煮るなり焼くなりしてください、という感じですね。
ちなみにどのような結果だったかというと・・・それは、別の記事にして紹介しますね。興味があれば、ぜひ見ていただけると嬉しいです。
さらにMeCabなどを使うこともできる
ChatGPTでは簡単な自然言語分析をしてもらうことはできますが、自然言語処理の方法としてTF-IDFだったりMeCabだったりという既存のものを使うことができません。
そのため、データクリーニング後のデータをさらにいろいろと分析したい場合は、別途、ローカルやクラウドなどに開発環境をインストールし、それらを利用するための環境をインストールする必要があります。
環境によってインストールと活用の方法は違うと思いますので、各自お調べください。
おわりに
今回は自分がやってみた分析の方法を紹介しました。
ソフトウェアエンジニアでもない、ましてやコンピュータサイエンスもよくわかってないド文系の自分にも、このような解析が簡単にできてしまうなんて、すごい時代ですよね。
途中で詰まったら、ChatGPTに質問したら解決に近づくことができます。ChatGPTの環境でも実行できない場合、ローカル開発環境などを用意しておく必要があるということです。
プログラミングとか全然、という方でも、基本的な仕組みと構文を読むことができれば、あとはChatGPTでコードを生成してもらえばOKです。
そんな感じで色々と試してみてはいかがでしょうか。可能性は無限にありそうだ。
それでは、ここまでお読みいただきありがとうございました!へば!!
↓ちなみに、僕は初心者の頃、下記の本で勉強しました。文法と動かし方がわかれば、あとはChatGPT等の生成AIを使ってコードを動かしまくるのが上達のコツだと思います。わからんところはChatGPTに聞けばいいです。
コメント