🤠

オープンデータではじめるデータ構造化 〜生成AIでオープンデータを整理する〜

に公開

オープンデータではじめるデータ構造化 〜生成AIでオープンデータを整理する〜

こんにちは、マイクロベースのAI開発チームの「データ構造化」という取り組みについて、オープンデータを題材に紹介します。

「データ構造化」とは、ばらばらに記載された文章やPDF、報告書などの非構造化データを、コンピュータが扱いやすい形(CSVやデータベース)に変換することを指します。AIを活用することで、この作業を効率的かつ高精度に行えるようになってきました。マイクロベースにおいて、証明書や契約書といったドキュメントを機械学習に読込可能なデータセットに変換するサービスに取り組んでおり、これからデータ構造化に取り組まれる方向けに紹介いたします。

船舶事故報告書を題材に

今回取り上げるのは、国土交通省が公開している「船舶事故報告書」

この報告書には、事故の発生日時や場所、関係する船舶名、原因、再発防止策などが文章形式で記載されています。

https://jtsb.mlit.go.jp/jtsb/ship/index.php

船舶事故報告書

こうした報告書をそのまま読むのは人間にとっては容易ですが、統計的に分析したり、GIS(地図システム)に載せたりするには「構造化」されていることが必要です。

そこで、以下のようなポイントを意識してデータ化を行いました。

  • 発生場所:海上事故は住所が存在しないため、報告書に記載された緯度経度を直接抽出
  • 関係船舶:衝突や玉突き事故では複数の船舶が関与するため、最大6船舶まで記録できるスキーマを準備
  • 日付:和暦で書かれているケースも多いため、西暦に変換して保存
  • 自由記述:事故の概要、原因、再発防止策などは要約してテキスト化

生成AIによる構造化

以前はルールベースや正規表現で手作業に近い処理をしていましたが、現在は生成AI(LLM)を使ったアプローチを取り入れています。

例えば、報告書のPDFをAIに読み込ませて以下のように指示します:

「この報告書から、発生日時、発生場所、関係船舶、事故種類、原因、再発防止策を抽出し、JSON形式で出力してください。」

すると、AIが文章を解析して、事前に指定したスキーマに沿った形でデータを返してくれます。

シンプルな報告書なら小型モデル(例:Haiku)でも対応可能で、大規模モデルを使えばより複雑な文章も正確に抽出できます。

出力結果イメージ

構造化の結果は以下のようなCSVにまとまります。

ファイル名 発生日時 発生場所 事故種類 船舶名1 船舶名2 事故概要 原因 再発防止策
report_001.pdf 2023-05-12 14:30 北緯35°10′ 東経139°40′ 衝突 第五〇〇〇丸 第八〇〇〇丸 ○○航路上で衝突 見張り不足 夜間航行時の当直強化
report_002.pdf 2022-11-03 09:20 北緯34°20′ 東経135°30′ 転覆 第三〇〇〇丸 null 強風下で転覆 構造強度不足 点検体制の改善

このようにデータ化することで、事故の傾向分析や、地図上での可視化、再発防止策の比較検討などが容易になります。

考察

実際にやってみて感じたのは次の3点です。

  1. モデルごとの得意不得意がある

    短文の抽出は軽量モデルで十分ですが、長文の「事故の概要」や「原因」抽出では大規模モデルが安定。

  2. スキーマ設計が肝

    どの項目を抽出するかをあらかじめ定義しておかないと、AIが返す結果もバラつきが大きくなるため、事前設計が重要です。

まとめ

  • データ構造化は、非構造データを機械可読な形式に変換するプロセス
  • 船舶事故報告書のような公開データを題材にすることで、社会的にも意義のある活用が可能
  • 生成AIを使うと、従来より効率的に精度の高いデータ化が実現できる

最後に

私たちは「データ構造化 × 生成AI」をキーワードに、公共データや業務文書を整理・活用する技術を磨いています。

もしこの記事を読んで「こういう取り組みに関わってみたい」と思った方がいれば、ぜひ採用ページ をご覧ください。

microbaseテックブログ

Discussion