データを準備し、カスタム NER のスキーマを定義する方法

カスタム NER モデルを作成するには、それをトレーニングするための高品質なデータが必要です。 この記事では、スキーマの定義と共に、データの選択と準備を行う方法について説明します。 スキーマの定義は、プロジェクト開発ライフサイクルの最初のステップであり、実行時にテキストから抽出するためにモデルが必要なエンティティの種類またはカテゴリを定義します。

スキーマの設計

スキーマは、実行時にモデルがテキストから抽出する必要があるエンティティの種類やカテゴリを定義します。

  • データセット内のドキュメントを確認して、その形式と構造を理解します。

  • データから抽出するエンティティを特定します。

    たとえば、サポート電子メールからエンティティを抽出する場合は、"顧客名"、"製品名"、"要求日"、"連絡先情報" を抽出する必要がある場合があります。

  • エンティティ型のあいまいさを回避します。

    あいまいさは、選択したエンティティ型が互いに似ている場合に発生します。 スキーマがあいまいであればあるほど、より多くのラベル付きデータを使用したエンティティ型の識別が必要になります。

    たとえば、法的な契約からデータを抽出する場合、"第一当事者の名前" と "第二当事者の名前" を抽出するには、両当事者の名前が似ているので、あいまいさを解決するためにより多くの例を追加する必要があります。 あいまいさを回避することで、時間と労力を節約し、より良い結果を得ることができます。

  • 複雑なエンティティを避けます。 複雑なエンティティは、テキストから正確に選択するのが難しい場合があります。複数のエンティティに分割することを検討してください。

    たとえば、"住所" の抽出は、より小さなエンティティに分解されていない場合は困難です。 アドレスの表示方法には非常に多くのバリエーションがあります。アドレスを分解せずに全体として抽出するようにモデルに教えるには、多くのラベル付けされたエンティティが必要になります。 ただし、"Address" を "Street Name"、"PO Box"、"City"、"State"、"Zip" に置き換えた場合、モデルではエンティティごとに必要なラベルが少なくなります。

データの選択

モデルをトレーニングするデータの品質は、モデルのパフォーマンスに大きく影響します。

  • ドメインの問題空間を反映した実際のデータを使用して、モデルを効果的にトレーニングします。 合成データを使用すると、最初のモデル トレーニング プロセスを加速できますが、実際のデータとは異なる可能性が高く、使用したときにモデルから得られる効果が少なくなることがあります。

  • 実際の分布から大きく離れることなく、可能な限りデータ分散のバランスを取ります。 たとえば、さまざまな形式や言語で提供される可能性がある法的ドキュメントからエンティティを抽出するためにモデルをトレーニングする場合は、実際に見られるような多様性を示す例を提供する必要があります。

  • モデルのオーバーフィットを回避するために、可能な限り多様なデータを使用します。 トレーニング データの多様性が低いと、実際のデータに存在しない場合がある偽の相関関係をモデルが学習する可能性があります。

  • データ内のドキュメントが重複しないようにします。 重複するデータは、トレーニング プロセス、モデル メトリック、モデルのパフォーマンスに悪影響を及ぼす可能性があります。

  • データの取得場所を検討します。 1 人の人物、1 つの部署、またはシナリオの一部からデータを収集する場合は、モデルが学ぶべき重要な多様性が欠落している可能性があります。

Note

ドキュメントで複数の言語が使われている場合は、プロジェクトの作成[複数言語を有効にする] オプションを選択し、[言語] オプションをドキュメントの主要な言語に設定します。

データ準備

プロジェクトを作成するための前提条件として、トレーニング データをストレージ アカウントの BLOB コンテナーにアップロードする必要があります。 トレーニング ドキュメントの作成とアップロードは、Azure から直接行うことも、Azure Storage Explorer ツールを使って行うこともできます。 Azure Storage Explorer を使用すると、より多くのデータをすばやくアップロードできます。

.txt ドキュメントのみを使用できます。 データが他の形式の場合は、CLUtils 解析コマンドを使用してドキュメント形式を変更できます。

注釈付きデータセットをアップロードするか、注釈の付いていないデータセットをアップロードし、Language Studio でデータにラベル付けすることができます。

テスト セット

テスト セットを定義するときは、トレーニング セットに存在しないドキュメントの例を必ず含めてください。 テスト セットの定義は、モデルのパフォーマンスを計算するための重要な手順です。 また、テスト セットに、プロジェクトで使用されるすべてのエンティティを表すドキュメントが含まれていることを確認します。

次のステップ

まだ作成していない場合は、カスタム NER プロジェクトを作成します。 カスタム NER を初めて使用する場合は、クイック スタートに従ってサンプル プロジェクトを作成することを検討してください。 また、プロジェクトを作成するために必要な内容について詳しくは、ハウツー記事を参照してください。