
前回は、Knowledge Graphの概要や作り方についてお話ししました。今回から数回に分けて、化学分野のKnowledge Graph作成の実践方法を、サンプルコードを交えながらご紹介します。
実践には、Pythonの基礎知識と、エラー発生時に生成AI等を活用して対処ができる能力が求められますが、内容は比較的単純ですので、Python初心者でも挑戦できると思っています。お時間のある際に、ぜひお試しください。
初回は、実施内容の全体像を説明します。
生成AIとブレストしながら全体像を固める
生成AIの活用
将棋の藤井竜王・名人の「初手、お茶」は、将棋界で最も有名なプロトコールの一つですが、私たちも何か新しいことを始める際に、「初手、生成AI」が一般的になりつつあります。
と今回、私はGeminiを利用しましたが、普段お使いの生成AIツールで問題ありません。
例えば、次のようにGeminiに問いかけます。
Wikidataのようなオープンデータを利用して、化学分野のKnowlege Graphを作ろうと思っています。一緒に、考えてもらえますか?
すると、相手も質問を返してくるので、以下のように答えます。
類義語や略語の検索精度が上がるようなものをつくりたいです。
Pythonが使えるので、APIでデータをダウンロードしたいと思っています。
このように、対話を重ねることで、具体的な方針を固めていきます。こちらから質問を投げかけるのも有効です。
詳細は割愛しますが、生成AIとの会話の結果、次のような方針を決定しました。
辞書のスコープ:高分子化学に特化する(のちに有機化学、無機化学などに拡張)
- Wikidataから抽出するデータ:
- 化学物質の名称(日本語、英語の両方)
- 化学物質の同義語、類義語(慣用句とIUPAC名も類義語とみなす)
- 上位と下位概念
- 出力する辞書の形式:CSV形式
- データ抽出・加工ツール:Python
生成AIとのブレーンストーミングは、アイデアを整理し、新たな視点を得る上で非常に有効でした。
Wikidataのデータ確認
方針が固まったら、コーディング前にWikidataのサイトで具体的なデータを確認します。
これは、必要なデータがWikidataのサイトに存在するかどうかを確認するための重要なステップです。
例として、ポリエチレン
のページを示します。このページには、類義語や略号、カテゴリ名、親カテゴリ情報、部分構造情報など、様々なデータが格納されています。
Wikidataでポリエチレンを検索した画面
引用元:https://www.wikidata.org/wiki/Q143429
化学物質の名称、説明、類義語は、それぞれ、Label
、Description
、Also known as
に格納されていることが分かります。
上位概念はinstance of
やsubclass of
で確認できます。その他にも、化学構造式やCAS Resistry Numberなどの情報が存在します。
この確認作業を通して、Wikidataを情報源として安心して利用できることが分かりました。
Python環境の準備
ここでは、私のWindows PCでの実行環境をご紹介します。今回は仮想環境を構築して作業を行いました。
仮想環境を構築しなくても、Pythonやパッケージのバージョンが記載と異なっていても、基本的には動作するはずです。しかし、予期せぬエラーを防ぐために、仮想環境の構築とバージョンの統一をお勧めします。
Python環境の準備に不安を感じる方は、生成AIに質問してみてください。何度でも気軽に質問できますので、納得いくまで確認するようにしましょう。
まず、pyenvをインストールし、python-3.7.4をインストールします。
pyenv install 3.7.4
次に、今回のKnowledge Graph専用の仮想環境を作成します。
python3.7 -m venv venv
作成した仮想環境を有効化します。
venv\Scripts\activate # windows
source venv/bin/activate # Mac, Linux
最後に、必要なパッケージをインストールします。
pip install pandas==1.3.5 requests==2.31.0
パッケージのインストールは、必ず、仮想環境を有効化した状態で行ってください。これにより、仮想環境内で指定したパージョンのパッケージを利用できるようになります。
これで、準備は完了です。
次回は、本格的なコーディング作業について説明します。
次回予告
化学分野のKnowledge Graph作ってみた第3回
- SPARQL queryに慣れる
- テストコードを書いてみる
Profile