見出し画像

何となく知っておきたい、AI学習に適したテキストのデータフォーマット

こんにちは!オトーワンですっ!
今回は、例えばAIチャットボットを作るときなどに、重要なAIに学習あるいは、RAG(Retrieval-Augmented Generation)としてデータを外部に置くときのテキストのデータフォーマットについて、お話ししますね。では、いってみましょ~


プレーンテキスト:シンプルさが魅力

まず挙げられたのが、プレーンテキスト(.txt)です。これは最もシンプルで汎用性の高いフォーマットです。特別なツールがなくても扱えるため、人間にも機械にも読みやすいのが特徴です。

これはプレーンテキストの例です。
シンプルで読みやすいですが、構造化された情報の表現は難しいです。

ただし、構造化された情報を表現するのは難しいという欠点があります。そのため、単純なテキストデータの学習には適していますが、複雑な情報を扱う場合には不向きかもしれません。


マークダウン:読みやすさと書きやすさを両立

次に紹介されたのが、マークダウン(.md)です。これは軽量マークアップ言語の一種で、基本的な構造(見出し、リスト、強調など)を表現できます。GitHubなどの開発プラットフォームでよく使用されているフォーマットです。

# マークダウンの例

- 簡単に構造化できます
- **太字**や*斜体*も表現可能

1. 番号付きリストも作れます
2. 見出しやリストが使えるので便利です

マークダウンの利点は、読みやすく書きやすいことです。ただし、高度な構造化には限界があるため、複雑なデータ構造を必要とする場合は他のフォーマットを検討する必要があります。


JSON:プログラムとの相性が抜群

JSON(JavaScript Object Notation)は、キーと値のペアで情報を表現するフォーマットです。階層構造を表現できるため、複雑なデータも扱いやすいのが特徴です。

{
  "名前": "山田太郎",
  "年齢": 30,
  "趣味": ["読書", "旅行", "料理"],
  "住所": {
    "都道府県": "東京都",
    "市区町村": "渋谷区"
  }
}

プログラムでの処理が容易なため、チャットボットの開発現場でも重宝されています。ただし、大量のテキストデータを扱う場合は冗長になる可能性があるので注意が必要です。


YAML:人間にやさしい構造化データ

YAML(YAML Ain't Markup Language)は、人間にとって読み書きしやすいフォーマットです。JSONよりも簡潔に構造化データを表現できるため、設定ファイルなどでよく使用されています。

名前: 山田花子
年齢: 25
趣味:
  - スポーツ
  - 音楽
  - 絵画
住所:
  都道府県: 大阪府
  市区町村: 大阪市

ただし、インデントに依存する構造のため、エラーが起きやすいという欠点があります。使用する際は、適切なバリデーション(※)を行うことが重要です。
※データの正確性や妥当性を確認するプロセス、入力されたデータが期待される形式や条件を満たしているかをチェックし、エラーや不適切なデータを検出して、システムの信頼性と品質を保つ重要な手順のこと。


XML:柔軟性と拡張性が魅力

XML(eXtensible Markup Language)は、柔軟で拡張性が高いフォーマットです。複雑な階層構造を表現でき、スキーマ定義(※)も可能です。

<employee>
  <name>鈴木一郎</name>
  <age>35</age>
  <department>営業部</department>
  <skills>
    <language>英語</language>
    <language>中国語</language>
  </skills>
</employee>

ただし、冗長になりがちで、パースに時間がかかる場合があります。大規模なデータセットを扱う際は、処理速度に注意が必要です。
※データの構造や形式を事前に決めて記述すること。 データの型や制約を明確にし、一貫性を保つのに役立ちます。


CSV:表形式データの定番

CSV(Comma-Separated Values)は、カンマ","で区切るシンプルで扱いやすいフォーマットです。表形式データの表現に適しており、多くのツールやライブラリでサポートされています。

名前,年齢,職業,出身地
佐藤次郎,28,エンジニア,東京
田中美香,32,デザイナー,大阪
高橋健太,45,マネージャー,福岡

ただし、複雑な構造や階層的なデータの表現が難しいという制限があります。単純な表形式のデータを扱う場合には最適ですが、それ以上の複雑さを求める場合は他のフォーマットを検討しましょう。


HTML:ウェブコンテンツの構造化に特化

HTML(Hypertext Markup Language)は、Webコンテンツの構造化に使用されるフォーマットです。豊富なメタデータを含められるのが特徴です。

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>プロフィール</title>
</head>
<body>
    <h1>中村梨花</h1>
    <p>年齢: 29歳</p>
    <ul>
        <li>職業: グラフィックデザイナー</li>
        <li>趣味: 写真撮影</li>
    </ul>
</body>
</html>

ただし、タグが多いため、純粋なテキストコンテンツの抽出には前処理が必要になります。ウェブスクレイピング(※)などで得たデータを学習に使用する場合には、HTMLは避けられないフォーマットかもしれません。
※ウェブスクレイピングは、ウェブサイトから自動的にデータを抽出する技術です。プログラムを使って大量の情報を収集します。


最適なフォーマットの選び方

これらのフォーマットの中から、どれを選べばいいのでしょうか。エンジニアの方によると、以下の点を考慮して選択するのがよいそうです。

1.データの性質
扱うデータの複雑さや構造を考慮します。
2.処理の容易さ
使用するプログラミング言語やツールとの相性を確認します。
3.RAG(※)システムの要件
特定の検索システムや推論エンジンの要件に合わせます。

例えば、シンプルなQ&AデータセットであればプレーンテキストやCSVで十分かもしれません。一方、複雑な階層構造を持つ知識ベースならJSONやYAMLが適しているでしょう。
※AIが外部に格納されたデータを参照して回答を生成する手法をいいます。 大規模言語モデルと情報検索を組み合わせ、より正確で最新の情報を出力します。


チャットボット導入時のデータフォーマット選び

チャットボットの導入事例が増える中、性能を左右するのはAIの学習に使用するデータも重要になってきます。
自社、自身のニーズや既存のシステムとの親和性を考慮しつつ、最適なフォーマットを選択したいですよね?
データフォーマットの選択一つで、チャットボットの性能が大きく変わる可能性がありますから、大胆かつ、慎重に、システム側の仕様も考慮して選定していきましょう。

では、今日はこんなところで失礼いたします。さよなら、さよなら~

この記事が気に入ったらサポートをしてみませんか?