Slide 1

Slide 1 text

ChatGPTとNoteableによる科学技術情報分析 @hayataka 2023年5⽉31⽇

Slide 2

Slide 2 text

はじめに ChatGPTによって、プログラミングスキル関係なく、誰もが⾃然⾔語でデータ・テキストマイニングを実⾏できるようになった。 しかし、素のChatGPTに分析・集計をお願いしても、出⼒された数値が間違っていることが多い。したがって、分析作業をChatGPTにしてもらう には、出⼒結果の信頼性をどう担保するのかが課題だと感じていた。 そんな中、『ChatGPTプラグイン「Notable」だけでデータ分析コンペに挑戦してみた話[1]』という記事を読んだ。Noteable[2]というChatGPTの プラグインを活⽤すれば、上記の課題は解決し、より⾼度なことができるのではないかと考えた。 そこで本資料は、私が⽇々⾏っている科学技術情報分析を事例に、ChatGPT+Noteableでどんなことができるか、下記の分析プロセスごと に試した記録である。汚い状態のままであるが、実際のChatGPTとのやり取り[3]と⽣成されたスクリプト[4]も共有したい。 [1] ChatGPTプラグイン「Notable」だけでデータ分析コンペに挑戦してみた話 https://qiita.com/ot12/items/ba74fa150e160d94a71f [2] Noteable https://noteable.io/ [3] ChatGPTとのやり取り https://chat.openai.com/share/35cd3f1b-5e8d-4f7c-98c3-50ebd40d7a47 [4] Noteableによって⽣成されたスクリプト https://app.noteable.io/published/a50d12fa-3224-4419-9e1b-acaa9cfbb24d/arxiv_data_analytics 論⽂情報収集 書誌情報分析 テキストマイニング arXivから指定した検索条件にヒットするプレプリント情報を収集する。 時系列推移、カテゴリ集計、著者集計を実施する。 キーフレーズ抽出・集計、クラスタリングと解釈、 俯瞰可視化(⼆次元可視化)を実施する。 P2 P3-4 P5-7

Slide 3

Slide 3 text

論⽂情報収集:arXivからのプレプリント情報取得 • 最初はarXiv APIをそのまま叩きに⾏こうとしていたが、うまいクエリが⽣成できずにエラーになってしまった。そこで、arXiv APIのpythonラッパ ーであるarXivを使うように指⽰したところ、うまく実⾏された。 • 今回、ChatGPTを含むプレプリントを取得している。ブラウザでの検索でも、API経由でもどちらも600件程度(少しズレはある)。 ※⾃動⽣成されたクエリ ⽣成されたクエリは、指定条件に則っていないので、ちゃんと⾒直す必要がある。ただし、今回のケースでは 実質似た条件になる。検索している”ChatGPT”という単語は最近のものなので、全期間でも2021年以 降でも同じ。また検索対象がallでも、この単語が出るのは基本的にTitle, Abstractだと考えられるため。

Slide 4

Slide 4 text

書誌情報分析:時系列推移、カテゴリ集計 Submission_dateを使って、年⽉レベルで時系列推移を集計して、 折れ線グラフで出⼒してください。 Subjectsを集計して表形式で降順に出⼒してください。

Slide 5

Slide 5 text

書誌情報分析:カテゴリ別時系列推移、著者集計 Subjects上位10について、Submission_dateを使って、年⽉レベ ルで時系列推移を集計して、折れ線グラフで出⼒してください。 Authorsを集計し、上位10⼈を表形式で出⼒してください。

Slide 6

Slide 6 text

テキストマイニング:アブストラクトからのキーフレーズ抽出と集計 各レコードについて、Abstractに含まれるキーフレーズを抽出し、集 計してください。ここには、表形式で上位10個を表⽰してください。 指⽰代名詞、⼈代名詞を除いた場合の上位10キーフレーズを 教えてください。 • ⼿段を指定せずに依頼すると、はじめはnltkのrakeを利⽤していたが、途中回線が切れてしまった。やり直したら、SpaCyのTextacyを使い 始めた。時と場合によって、実⾏されるライブラリが異なることは注意。 • 元々、⽂献数で集計して欲しいと思っていたが、出現した回数を算出している様⼦。この辺りの集計単位はちゃんと指⽰しないといけない。 • 単純に聞くだけでは⼀般的な⾔葉が並ぶので、ストップワード設定などが必要。今回は試しに、代名詞を除外して欲しいと依頼してみた。 ただ、それでもthisが残ったりしているので取り切れていない。意味のあるキーフレーズだけを抽出するには⼯夫が必要。

Slide 7

Slide 7 text

テキストマイニング:クラスタリングと解釈 Abstractに基づいて、各レコードをクラスタリングし、 各クラスタがどんなテーマなのかを教えてください。 ⼿段を指定せずに依頼すると、TF-IDFでベクトル化し、k-meansで5つにクラスタリングした。ただし、クラスタを解釈する際、改めて⽂章を単 語に分けて、頻度上位の単語を⾒ていたので⼀般的な⽤語しかなく、解釈ができていなかった。そこで、解釈する際はTF-IDFを参考にするよ うに伝えると、参照する単語群とその解釈が変わった。また、各クラスタの解釈を⼀⾔に要約してもらうことも可能であった。 各クラスタのテーマを考える際は、TF-IDFの⾼ い単語から類推してください。 上記の各クラスタの解釈を、それぞれ ⼀⾔で表すとどうなりますか?

Slide 8

Slide 8 text

テキストマイニング:俯瞰可視化(⼆次元可視化) Abstractを⽤いて、レコード同⼠の類似性に基づ て、⼆次元可視化をしてください。なお、ここには 対話的に表⽰できる図を表⽰してください。具体 的にはプロットにマウスオーバーすると、Titleと arxiv_idが表⽰されるようにしてください。 • ⼿段を特定せずに⼆次元可視化の依頼をすると、ベクトル化にはTF-IDF、可視化にはT-SNE法が利⽤されていた。「doc2vecでベクトル 化してUMAPで可視化したい」などと依頼することも可能だと思う。(少なくともUMAPで依頼して実⾏できることは確認済み)。 • 対話的可視化は⼿段の指⽰がないとplotlyを利⽤していた。これもBokehでやって欲しいなどと依頼すればできるだろう。 • ストップワードや各種パラメータの設定によって、より良い俯瞰可視化をしないといけない。きっとこれもプロンプトでできてしまうのではないかと 思う。⾯倒な場合は、⽣成されたコードを直に触って⼿直ししてしまっても良いだろう。

Slide 9

Slide 9 text

おわりに 最後に雑多な所感をまとめておく。 • 本資料で実施した実験⾃体は1.5時間程度。知識がない⼈が1から⾃⼒でプログラミングしてやるのと⽐べると、断然早いと思う。 • ChatGPTによって、プログラミングができない⼈でも、データへのアクセスやデータ・テキスト分析が容易にできるようになった。 • ⼀定レベルのエラーは⾃動的に修復・実⾏してくれる。このエラー回復能⼒はありがたい。 • 素のChatGPTだけでは分析・集計は任せられないが、Noteableを活⽤すればスクリプトを⽣成して実⾏してくれるので、信頼性と確認の しやすさが増した。ただ、⽣成されたコードが依頼したものと違うことがあるので、⾃分で確認できる⼒は必要である。 • みんなが⾔う通り、「⾃分のやりたいことがある」、「それを的確な指⽰を出せる」、「出⼒結果を確認してフィードバックや⾃分で修正できる」、 「結果を考察・解釈できる(考察・解釈もAIと対話的に⽀援してもらえる)」ことは、⼈間側にとって⼤切なことだと感じた。そのためには、 データ分析、アルゴリズム、プログラミング等の知識が重要であることは変わらない。 • プログラミングを使ったデータ分析にチャレンジしたいけど、なかなか⼿を出せてなかった⼈にとって良い学習環境である。⾃分のやりたいことを ChatGPT + Noteableで⽣成してもらい、スクリプトを⾒て勉強するのは良いのではないか。 • こちらから⼿段を提⽰せずに、逆に良い⼿段を提案して欲しいと依頼すると、どこまでより良いものを作り上げてくれるのか。「試⾏錯誤の⾃ 動化」能⼒に興味がある。 • arXivだけでなく、APIを提供している他の科学技術情報DBも試してみたい。例えば、PubMed、Lens、OpenAlex、Semantic Scholarな ど。特許系DBも試してみたいので、API取得できるものをご存知の⽅は教えてください。

Slide 10

Slide 10 text

Appendix • 科学技術情報分析におけるChatGPTを使った処理について、これまで試したことはnoteやtwitterで発信していた[1-3]。他の⽅も 『ChatGPTを使ったテキストマイニングの⽅法』といった記事[4]を公開しており、ChatGPT×テキストマイニングの関⼼は強そうだと感じた。 • ⼀⽅で、素のChatGPTでは結果への信頼性に課題があると思ったので、下図のような実験をしてみた。⽂章から出現頻度の⾼い名詞を 取得するようにChatGPTに依頼してみると、GPT4では形態素解析できないと⾔いつつ処理されたが、結果の数値がおかしい。⼀⽅、 Noteableはコード⽣成して処理しているので結果は正確で、⽣成されたコードも⾒れて安⼼。そこで、Noteableを⾊々と試したいと思い、 本資料のような実験を⾏った。 [1] 論⽂の所属機関情報からの国名・組織名抽出 - GPT for Sheetsの活⽤(note) [2] NISTEP(科学技術・学術政策研究所)の調査研究における ChatGPTの活⽤アイディア(note) [3] ChatGPTによるプレイヤー別キーワード集計(Twitter) [4] Marketing Junction, Inc.:ChatGPTを使ったテキストマイニ ングの⽅法