CONTENTS コンテンツ

ポケモン図鑑の説明文を生成しよう!(5)

生成AIを使おう!

2024.06.12

 生成AIで架空のポケモンを作るためのデータベースを作っています。前回はChatGPTに作らせたコードを走らせてデータベースファイルが生成された。が、中身を見たらどうも空っぽい。原因を調べていこう。

入力:

作成したデータベースの中身は空でした。
取得したいテキスト部分のソースを閲覧すると以下ような記述(略)になっていました。
ソースデータがコードで想定した形式と異なっていることでデータが空になった可能性はありますか?

出力:

データベースの中身が空であった理由は、HTMLソースのフォーマットがコードの想定と異なっているためである可能性が高いです。ご提供いただいたソースコードの一部を基に、コードを修正してみましょう。

まず、指定された「ポケモンずかんの説明文」の部分を取得するために、適切なHTMLパーシングロジックを組み込みます。

以下の修正済みのコードをお試しください:(コード略)

変更点の説明

  1. HTMLソースの構造に基づいた修正:
    • description_section = pokemon_soup.find_all('span', {'id': 'ポケモンずかんの説明文'})で「ポケモンずかんの説明文」セクションを見つける。
    • find_next_siblings()メソッドを使って、説明文が含まれる次の要素を取得する。
    • 説明文が含まれるタグが見つかるまでループし、次のセクション(<h2>タグ)に到達したら終了する。
  2. 説明文の取得と保存:
    • 説明文が見つかった場合にのみ、データベースに保存する。

この修正により、指定された「ポケモンずかんの説明文」セクションのデータを正しく取得し、データベースに保存できるはずです。

 相変わらずデータの中身は空。データが空の理由として、
①データの取得ができていない
②取得したデータのデータベースへの書き込みができていない
③データベースは正しく構築されているけど、それを見る方法が悪いため空に見えている
のどれか。まず①から見てみよう。

入力:

相変わらずデータは空でした。原因を特定するため、以下のようにコードを修正しようと思います。
・全国ナンバーの範囲を。0001~0010から0001のみに変更する
・説明文を取得できた場合、取得した説明文をプリントする

出力:

修正点の説明

  1. 全国ナンバーの範囲を変更:
    • valid_numbers = ['0001']に変更し、全国ナンバー0001(フシギダネ)のみを対象とする。
  2. 説明文を取得できた場合にプリント:
    • 説明文が取得できた場合にprint(f"Description for {pokemon_name}: {description}")を実行して、説明文をプリントする。
    • 説明文が取得できなかった場合にはprint(f"No description found for {pokemon_name}")を実行する。

これで、特定のポケモン(0001)のみを対象とし、説明文を取得できた場合にその内容をプリントすることで、問題の特定が容易になります。

 走らせてみたところ、「No description found for フシギダネ」と返ってきた。この返答をChatGPTにまた投げ…というキャッチボールをして、無事データベースにデータが格納された。されたはいいが、修正家庭やそもそも出来上がったコードが全くわからないので、一旦立ち止まって解読をしよう

次回に続く

この記事をシェアする