Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ChatGPTとNoteableによる科学技術情報分析

hayataka
May 31, 2023

 ChatGPTとNoteableによる科学技術情報分析

ChatGPTとNoteableプラグインを使って、科学技術情報分析ができるかを試した記録と所感メモです。本資料では、下記の分析プロセスにおける活用を試しています。

1. 論文情報収集
arXivから指定した検索条件にヒットするプレプリント情報を収集する。

2. 書誌情報分析
時系列推移、カテゴリ集計、著者集計を実施する。

3. テキストマイニング
キーフレーズ抽出・集計、クラスタリングと解釈、 俯瞰可視化(二次元可視化)を実施する。

汚いままですが、実際のChatGPTとのやり取りや、生成されたスクリプトも資料の中でURLを公開しています。参考になれば幸いです。

noteでも簡単な説明と補足・追加コメントをまとめました。
https://note.com/hayataka88/n/ndfd913dab62f

hayataka

May 31, 2023
Tweet

More Decks by hayataka

Other Decks in Science

Transcript

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

    View Slide


  2. はじめに
    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

    View Slide


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

    View Slide


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

    View Slide


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

    View Slide


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

    View Slide


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

    View Slide


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

    View Slide


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

    View Slide


  10. 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を使ったテキストマイニ
    ングの⽅法

    View Slide