仮説フィルタリングコンテナーは、複数の Deep Learning アクティビティとExtraction Rules アクティビティを組み合わせるコンポーネントです。Deep Learning アクティビティの出力はExtraction Rules アクティビティに渡され、必要な値を選択するための条件が適用されます。
Deep Learning アクティビティは非常に高精度な field 抽出が可能ですが、状況によってはその出力を制御したい場合があります。そのため、1 つまたは複数の Deep Learning アクティビティをExtraction Rules アクティビティと組み合わせ、Deep Learning アクティビティで得られた値に条件を適用できます。
出力の制御は、ニューラルネットワークが単語全体を検出してしまう一方で必要なのはその一部のみである場合や、誤って取り込まれたノイズを除去したい場合に不可欠です。また、住所のような大きな field の一部を特定する際にも有用で、ニューラルネットワークが見落とす可能性のある要素を補完できます。さらに、同じ値が複数回出現する場合には、最適な仮説を選択できます。たとえば、ベンダー名が文書上に複数回印字されている場合、複数の候補の中から最も正確な抽出結果を選択できます。
このテクノロジーはプレビューとして提供されており、今後のバージョンで改善される予定です。
コンテナーを作成する
Deep Learning アクティビティがあるブロックをクリックし、Filter Hypotheses を選択します。すると、新しい 仮説フィルタリングコンテナーが作成され、選択した Deep Learning アクティビティがその中に配置されます。
Deep Learning アクティビティをさらに追加する(任意)
さらに Deep Learning アクティビティを 仮説フィルタリングコンテナーにドラッグします。これにより、2 つ以上の Deep Learning アクティビティの出力を組み合わせて比較できるようになります。たとえば、テキストの field とテーブルを同時に扱う場合は、2 つのアクティビティが必要になることがあります。
Extraction Rules アクティビティを追加する
コンテナーに Extraction Rules アクティビティを追加します。placeholder をクリックして新しいアクティビティを作成することも、既存のアクティビティをコンテナーにドラッグすることもできます。
Extraction Rules アクティビティを設定する
Deep Learning アクティビティで見つかった各値について、Deep Learning 検索要素 を追加し、そのプロパティを設定します。1 つの Deep Learning アクティビティのすべての output field を一度に追加できます。Deep Learning 検索要素 は、検索範囲を制限するすべてのプロパティと、element を見つける条件をサポートしています。
コンテナーをワークフローに接続する
仮説フィルタリングコンテナーの入力と出力を、文書処理ワークフロー内の他のブロックに接続します。仮説フィルタリングコンテナーの output field は、Extraction Rules アクティビティの output field と同じになります。
Deep Learning アクティビティの出力の制御をやめる場合は、コンテナー内の任意の場所をクリックし、Don’t Filter Hypotheses を選択します。コンテナーは分解されますが、アクティビティ自体は削除されず、変更後の文書処理ワークフローでも引き続き使用できます。
ここで示すのは、Hypothesis Filtering コンテナーの使用例のごく一部にすぎません。この機能を使ってニューラルネットワークの出力を制御し、field の抽出を微調整できる場面は他にも多数あります。どの調整が、扱っている documents に必要かを判断できるのは皆さま自身です。Deep Learning アクティビティの結果に調整が有益となるケースでは、その都度このテクノロジーをぜひお試しください。
以下の例では、同一のサンプル Skill を使用し、2 つの Deep Learning アクティビティの出力を Extraction Rules アクティビティに入力しています。
- Deep Learning アクティビティでテキストの field を抽出します。
- Deep Learning 2 アクティビティでテーブルを抽出します。
- 仮説フィルタリングコンテナーでそれらの結果を選択・統合します。
各検索要素は対応する Field にマッピングされます。
例 1: Deep Learning アクティビティで見つかった値を修正する
この例では、Deep Learning アクティビティが長すぎる文書番号の値を検出し、その値を修正するために新しい検索要素を作成します。
Deep Learning アクティビティで見つかった文書番号の値には、ダッシュ以降の部分が含まれています。
- Document_Number の値を修正するために、新しい検索要素を作成します。DocNumber_Corrected という名前のこの検索要素は、Document_Number 検索要素の領域内に配置し、文字数を制限する必要があります。
- 新しい要素の検索領域は、要素のコードに次の行を追加して、Document_Number の領域に一致するように制限します。
RestrictSearchArea: Document_Number.Region;
- 修正した検索要素は、文書番号を抽出するfieldにマッピングされます。
その結果、抽出された文書番号には、ダッシュ以降の部分は含まれません。
例 2: 複数回検出された値から 1 つを選択する
この例では、Deep Learning アクティビティは文書番号のすべての出現箇所を検出するように学習されていますが、Skill の最終結果としては文書番号の field は 1 つだけで十分です。これを実現するため、文書番号 field の Allow Multiple Items 設定を無効にし、文書番号の正しい出現箇所を選択する条件を設定します。
まず ラベル付け済みドキュメント セットを保存 してフォルダーに置くことを推奨します。ある field で Allow Multiple Items 設定を無効にすると、その field の余分な出現箇所はラベリングからすべて削除されます。Deep Learning アクティビティで学習されたモデルは引き続き機能しますが、変更して再学習する場合は元のドキュメント セットを読み込む必要があります。
- 文書番号 field で Allow Multiple Items 設定を無効にします (この設定は Manage Fields をクリックして開きます) 。
- 複数の出現箇所を持つ Document_Number 検索要素は 文書番号 field にマッピングできません。そのため、Deep Learning アクティビティの文書番号の出力から新しい Deep Learning 検索要素を作成し、文書番号 field にマッピングします。
- Deep Learning アクティビティで見つかった文書番号の複数の出現箇所をもとに仮説ツリーを構築し、そのうち 1 つだけを Document_Number 検索要素の値として選択します。
- 特定の出現箇所を見つけるため、Document_Number 検索要素に条件を追加します (この例では、文書番号の最上段の出現箇所を選択します) 。
例 3: 2 つの Deep Learning アクティビティの出力を組み合わせる
仮説フィルタリングコンテナーを使用すると、2 つ以上の Deep Learning アクティビティの結果を組み合わせ、相互に照合したり、同一アクティビティ内で結果を微調整したりできます。
この例では、テキストの field と表の両方を抽出するように 1 つの Deep Learning アクティビティを学習させることはできないため、2 つの Deep Learning アクティビティが必要でした。
条件として、Company_Address 検索要素は常に Goods_Table 検索要素の上に見つかるよう指定します。これにより、ページ下部に他の住所が印字されている場合でも、正しい住所が検出されます。