TadaoYamaokaの開発日記

個人開発しているスマホアプリや将棋AIの開発ネタを中心に書いていきます。

ChatGPTでHacker Newsから人工知能に関連する人気記事を抽出する

人工知能に関するニュースは、最初に英語で発信されることが多い。
Hacker Newsは、人工知能を含む計算機科学に関するニュース記事を投稿するサイトとして英語圏で人気がある。

Hacker Newsはタイトルのみが並んだシンプルな見た目で、どれが人工知能に関連するホットな記事か見分けるのが難しい。
そこで、Hacker NewsのREST APIを使い、人気順に並べ替えて、人工知能に関連する記事かをChatGPTで判定するようにした。

結果は、Google Sheetsに出力するようにした。
一連の処理は、Google Apps Scriptで実装した。

Hacker News REST API

Hacker Newsの記事一覧は、REST APIで取得できる。
APIの仕様は、こちらにある。
GitHub - HackerNews/API: Documentation and Samples for the Official HN API

人気記事は、
https://hacker-news.firebaseio.com/v0/topstories.json
で、取得する。
最大500記事のID一覧が取得される。

各記事は、IDを元に、
https://hacker-news.firebaseio.com/v0/item/< id >.json
で取得する。
取得されるのは、「記事ID」、「スコア」、「日時」、「タイトル」、「URL」などである。

Hacker Newsから記事一覧を取得する処理

Google Apps Scriptで、Hacker Newsから記事一覧を取得してGoogle Sheetsに保存する処理は、こちらのコードを参考にした。
Hacker Newsを日本語訳してSlackに通知(Google Apps Script) · GitHub

スプレッドシートは、あらかじめ作成して、1行目に列名を記述しておく必要がある。

参考にしたコードになかったが、以下の処理を追加した。

タイトルをGoogle翻訳

スプレッドシートの関数でタイトルを翻訳するようにした。

=GOOGLETRANSLATE("<タイトル>", "en", "ja")
scoreの更新

1日以上経過した記事のscoreを更新するようにした。

score順にソート

処理の最後に、ソートする処理を追加した。
SpreadSheetsSQLには、ソートする機能はないが、privateのプロパティにアクセスして、ソートするようにした。

sheetObj.sheet_.sort(3, false);

ChatGPTで人工知能に関連する記事か判定する

REST APIで記事のタイトルが取得できるので、タイトルを元に人工知能に関連する記事か判定する。
記事のURLから記事の内容を取得して判定する方が多くの情報から判断できるが、課金が膨らみそうなため、使用する情報はタイトルのみとした。

Google Apps Scriptで、OpenAI APIを使用する処理は、こちらの記事を参考にした。
【忘備録】SlackチャンネルにChatGPTを組み込んでみた!【Google Apps Script】 | 情報学部生の気ままなブログ

人工知能に関連する記事か判定する方法

systemロールのcontentを「Answer Yes or No if the article is related to artificial intelligence(人工知能に関連する記事かをYesかNoで答えよ)」として、userロールのcontentに、記事のタイトルを設定して、YesかNoが返却されることを期待してリクエストする。

結果に、Yesが含まれているかを文字列検索して、含まれていれば人工知能に関連する記事と判断する。

なお、プロンプトを設計する際は、PlayGroundを使うと便利である。
https://platform.openai.com/playground

ソースコード

実装したソースコードは以下の通り。
スプレッドシートのIDと、OpenAI API Keyは、Apps Scriptのプロパティから取得するようにしている。
※コードにバグがあり想定外に課金される可能性も否定できないので、使用する際は自己責任でお願いします。

実行結果

実行結果のスプレッドシートの例を示す。
スプレッドシートにscore順に出力されて、related_ai列にTRUE/FALSEで人工知能に関連する記事かが出力されている。

まとめ

海外の人工知能に関連するニュースを効率的に確認できるように、Hacker Newsから人工知能に関連する人気記事を自動的に抽出する仕組みを実装した。
人工知能に関連する記事かの判定には、ChatGPT(OpenAI API)を活用した。

ChatGPT以前であれば、このような判定には教師データを準備してモデルを構築する必要があった。
大規模言語モデルを使うと、個別タスクごとのモデルの学習が不要になり、プロンプトの工夫のみで様々なタスクが可能になる。
モデルの学習やファインチューニングは、過去の技術になりつつあると思う。