ゼファーネットのロゴ

情報抽出に固有表現抽出(NER)を使用する方法

日付:

このブログでは、文書から構造化データ情報を抽出する方法である固有表現認識 (NER) について説明します。 自然言語処理を使用して、非構造化テキスト内で言及されている名前付きエンティティを構造化された事前定義されたカテゴリに分類します。

問題の定義は非常に簡単です。 会社の多数のワークフローに含まれる請求書、領収書、発注書などの文書があります。 これらの文書は人間のオペレーターによって手動でデジタル化され、ソフトウェア システムに入力されますが、時間がかかり、エラーが発生しやすくなります。 ディープラーニングを使用してこのデジタル化を自動化したいと考えています。

残念ながら、この問題の解決策はそれほど単純ではありません。 このブログでは、この問題を解決するために使用できるテクニックの概要と注意点を説明することを目的としています。 したがって、将来的には、自分の武器庫から何を選択すればよいか、どこから始めればよいかがわかります。 このブログでは、取得したデータの構造を理解することから始め、この問題を解決するために利用できるさまざまな手法を検討し、何が最適であるかについての見解を示します。 気に入っていただければ幸いです!

目次



OCRの問題を念頭に置いていますか? ドキュメントからデータを抽出したいですか? に向かいます ナノネット そして建てる OCR 無料のモデル!

データを理解する

まず、画像の OCR 結果を取得する必要があります。 テキスト機能だけでなくビジュアル機能も使用してみます。 OCR の大部分は解決済みの問題であると考えられ、Tesseract のような OCR API が多数あります。

異なる OCR エンジンは、異なる種類の出力を提供します。 たとえば、OCR 出力が情報のブロックで構成されているとします。 各ブロックはタイプに関連付けられます。 私たちにとって関連するものは、ブロック タイプ Text のものです。 ブロックタイプのテキストを含むすべてのブロックを抽出すると、テキストの各ブロックがどのように見えるかを確認できます。 テキストの各ブロック内には行があり、各行内には文字があります。 ブロック、ライン、および文字は、境界ボックス情報に関連付けられています。 Tesseractの場合は形式が異なり、行番号、段落番号でバウンディングボックス情報を取得できます。 テキストボックスだけでなく文字ボックスも取得することが可能です。 詳細については、こちらをご覧ください ブログ投稿.

を活用したパイプラインを構築できます バウンディングボックス情報 または、完全に以下のみに基づいてエンジンを構築することもできます。 ラインとブロックの情報。 ユースケースや扱う必要があるデータの種類に応じて、アプローチを変更する必要があります。

テンプレートマッチングとそれが機能しない理由

を構築するには テンプレートベースの OCR ソリューションでは、各フィールドが表す可能性のあるパターンのリストを作成し、記述する必要があります。 正規表現 それぞれに。 すべての行が次のように反復されます。 サーチ どの行 match どのパターンか。 どのパターンが一致するかに応じて、抽出された行がどのフィールドに属しているかを推測できます。 すべてのフィールドを抽出したら、最終的にそれらを将来使用できるように整理した形式にまとめることができます。 パターンマッチングのための優れたリソースを見つけることができます こちら.

上記のアプローチには次のような多くの制限があります。 レイアウト変更の影響を受けやすい複数行の項目と混同され、読み取れないコードが何行にもわたって構築された製品になってしまう危険性があります。 パターン マッチングは、高度に構造化されていないデータや、構造自体が頻繁に変化するデータにはお勧めできません。 また、一般化された請求書に使用できるパターンのリストを作成すること自体が困難な作業になる可能性があり、多くの場合、これはレイアウトに設定されている特定の種類のドキュメントに対して社内でツールが使用されている状況でのみ適用されます。

機械学習で問題を解決する

機械学習アプローチは、テキスト情報を抽出してプロセスを自動化するために、ドキュメント テンプレートの知識への依存を回避できる代替ソリューションを提供します。 これらのアプローチのいくつかを見て、それに関連する概念を理解して、問題に対するエンドツーエンドの解決策を説明していきます。

名前付きエンティティの認識

固有表現認識を使用すると、テキストのチャンクを評価し、そこからさまざまなエンティティ、つまりトークンのカテゴリに対応するだけでなく、可変長のフレーズに適用されるエンティティを見つけることができます。 モデルは、モデルがトレーニングされた分類カテゴリに従って、すべての関連するフレーズの開始と終了を考慮します。

抽出して入れたすべての行 データフレーム 代わりに、NER モデルを介して渡すことができます。 分類する 異なります 単語やフレーズ 各行で異なるものが見つかった場合、 請求書のフィールド.

  SpaCy NERのタグ 含ま DATE 請求書の日付については、 ORG ベンダー名については、 お金 価格と合計については、 製品 販売された商品については、 枢機卿 電話番号、請求書番号など。転移学習を適用し、次のような一般的な NLP ライブラリによって提供される NER モデルを再トレーニングできます。 SpaCy、NLTK、Stanford CoreNLP 新しいエンティティを語彙に追加し、モデルを再トレーニングします。 に基づいてパターンを検索することもできます。 POSタグ付け 正規表現または上記のツールのいずれかを使用します。

ここで重要なのは、 強力な NER タグ付けモデル。 そのためには、次の XNUMX つのことを確認する必要があります。

  • 単語および文字レベルの特徴をどのように表現するか
  • 予測を行うためにどのようなアルゴリズムとアーキテクチャが使用されているか。

NER タグ付けのトレーニング モデル

活用できます TF-IDF ベクタライザー、n グラムまたはスキップグラム 特徴表現を抽出するには、 グローブ Word2Vec 単語エンベディングの重みを転送し、Keras、Tensorflow、または PyTorch を使用してエンベディングを再トレーニングします。 使用する 埋め込み をキャプチャできるため、モデルの強度が大幅に向上します。 セマンティック情報 より良い。

次のような従来の機械学習アルゴリズムを使用してモデルを構築できます。 SVM と単純ベイズ 詳細に こちら、ディープラーニングアーキテクチャのような RNN、BiLSTM、CRF 行われているように こちら および こちら または使用して BERT/XLNetのような変圧器 完了したように こちら. この リポジトリには、すべてのトランスフォーマー アーキテクチャとサンプルが含まれています トレーニング NER タグ付けを含むいくつかの NLP タスク用の推論スクリプト。 サンプル スクリプトでは、テキストの要約に NER タグを利用していますが、タスクに合わせて再利用できます。

各ブロックが請求書フィールドに分類されたら、さまざまなブロックに存在するすべてのテキストをまとめて、結果を生成できます。 JSON または XML 形式.

出力を理解する

最終出力を作成する方法は、抽出されたフィールドをどのように見たいかによって異なります。 検討中 私たちは一行ずつ進んでいきます 私たちのパイプラインでは、抽出されたさまざまな名前付きエンティティを一種のグループにまとめると、より簡単になり、エラーが発生しにくくなります。 入れ子構造。 フレーズや単語に対する NER タグ付けを使用して導出された予測から、テキストのさまざまな行やチャンクがどのように抽出され、請求書フィールドにタグ付けされるかについては、推論評価セクションで説明されています。

たとえば、請求書に記載されている購入した商品を考えてみましょう。 各品目とその価格と数量をマッピングすることが重要です。 これを行うには、製品、価格、数量などのさまざまな名前付きエンティティを含む「在庫」というオブジェクトを作成します。 これは説明されている内容と似ています こちら as ネストされたエンティティ.

データセットの構築

これらすべての状況に対して、学習アルゴリズムの強度に加えて、 決定要因 私たちのモデルがどのように機能するかについては、 データの強さ モデルをトレーニングします。 を作成する必要があるかもしれません カスタムデータセット さまざまなフィールドと、これらのフィールドを表すフレーズについて説明します。 例えば、

「残高」フィールドは関連付けることができます

  • 「未払い残高」、
  • 「支払い期日」、
  • '額'、
  • 「支払われる金額」、
  • 「支払われます」、
  • 「未払い金額」など

この処理ができるのは 半自動的に OCR 出力を抽出し、チャンクを見つけることにより、 いくつかのキーワードを含むテキスト 「金額」、「期限」、「残高」など、パターンに一致するすべての請求書で見つかったすべてのフレーズを抽出します。 しかし 網羅的なリストを作成するのは通常難しい作業です そして私たちはそうしたいでしょう 単語埋め込みの使用を検討する およびドキュメントの埋め込み 特徴を抽出する これらのフレーズを抽出してフィールドにマッピングします。 したがって、新しいフレーズや単語に遭遇した場合は、単語の埋め込みを比較して、そのフィールドが正しいかどうかを確認できます。 意味情報が似ている 分類を行うためです。 これは、SpaCy ドキュメントで呼ばれるものに似ています。 エンティティリンキング ナレッジベースを使用します。

NER タグ付けモデルの評価

固有表現を抽出できる場合、通常は単語や語句をさまざまなフィールドに分類することによって行われます。 を見つけることに加えて、 精度 トレーニング中に固有表現の認識を知るには、何らかの方法も必要です。 タグ付けモデルが目に見えないデータに対してどのように機能するか。 次のセクションでは、トレーニング プロセスを評価する方法、継続的なトレーニング ループを評価する方法、推論パフォーマンスを測定する方法を見ていきます。

NERトレーニング

私たちはトレーニングプロセスを評価するために、 データセットのテスト そしていくつかの重要な指標を見つける –

  • 正確さ: 正しい予測の割合 テストデータのサイズに合わせて作成されます。
  • 精度: 真陽性と予測陽性の合計の比率。
  • リコール: 真陽性と合計実際の陽性の比率。
  • F1 スコア: 精度と再現率の調和平均。

さまざまなユースケースを考慮する場合、さまざまな指標が優先されます。 請求書処理の場合、数値の間違いや項目の欠落が会社の損失につながる可能性があることを私たちは知っています。 これは、高い精度が必要であることに加えて、次のことを確認する必要があることを意味します。 お金関連フィールドの誤検知 は最小値であるため、高精度の値を目指すのが理想的かもしれません。 また、次のことを確認する必要があります。 請求書番号や日付などの詳細 これらは法的および法的な目的で必要であるため、常に正しく抽出され、実行されます。 コンプライアンスの目的、したがって、 高い再現率 これらのフィールドの値が優先される場合があります。

NER再トレーニング

文書のデジタル化は完全に自動化するのが困難な作業であり、100% の自動化を目指すことはほとんど現実的ではありません。 モデルが目に見えないデータに遭遇した場合、構築 ループ内の人間 人間がテキストから抽出した情報を確認し、予測を修正し、再トレーニングできるソリューションは、モデルの精度を継続的に向上させるのに役立ちます。 アルゴリズムエラーが発生する可能性のあるコストを最小限に抑える.

理想的には、数日/数週間/数か月間 (運用している規模に応じて) データを収集するパイプラインを設定し、この新しいデータでモデルを再トレーニングし、予測を評価してモデルが適切かどうかを確認する必要があります。改善したかどうか。

Microsoft Azure の DevOps パイプラインは次のようになります –

source

データセットのバージョン管理、書く 差分テスト そしてそれらをあなたの中に含めてください 継続的統合パイプライン 最も安定したアルゴリズムを展開し続けるのに役立ちます。 差分テストは、この場合、上で述べたメトリクスを評価し、再トレーニング前後のモデルを比較し、新しいモデルのデプロイが実行可能な選択肢であるかどうかを判断することを目的としています。 差分テストでは、再トレーニング後に劣ったモデルをデプロイすることはできません。

人的エラーとそのコストに関するメモ

請求書のデジタル化プロセスを自動化すると、人間の作業負荷と疲労に関連したエラーの可能性が軽減されますが、 間違った注釈 モデルにかかるコストが常に同じであるとは限りません. この 論文は計算について話しています 注釈のコスト (彼らは、誤って再アノテーションされたテキストの長さに基づくメトリックを使用します)、再トレーニングループで同じものを最小限に抑えようとします。 上記の論文で言及されている指標は、請求書処理のユースケースには適用できませんが、次のようなアルゴリズムを考案します。 コストが高くなる可能性があるため、再アノテーションが制限されます 予測の品質を長期間維持するのに役立ちます。

NER推論

XML データを行とチャンクに分割する方法を覚えていますか? OCR ソリューション、特に商用ソリューションは、業界で最も信頼性の高いデジタル ドキュメントの OCR 出力の XNUMX つを生成します。 多くの場合、チャンク全体が同じ請求書フィールドに属します。。 目に見えないドキュメントの場合、OCR 予測が十分に正確であり、ネストされたエンティティを処理する別の方法があると仮定すると (これについては次の段落で詳しく説明します)、次の方法を考案できます。 各チャンクの予測の信頼度を測定する NER タグ付けモデルによってもたらされる信頼性にただ依存するのではなく、

単語やフレーズの固有表現予測情報を外挿して、テキストから抽出された各チャンクや行に請求書フィールドを割り当てることができます。 我々はできる 自信を測る チャンク内で発生した各フィールドの名前付きエンティティ予測信頼度を集計することにより、チャンクごとに推定します。

単一フィールド予測のチャンク、メカニズムは非常に簡単です。 アン 平均 すべての名前付きエンティティの値 信頼スコア 返されます。

If 複数のフィールドが複数回出現する 同じチャンク内で、チャンク内に存在するフィールドの数と同じ数の信頼スコアを抽出します。 ここで定義する必要があるのは、 しきい値.

基本的な例でこれをやってみましょう。

ここでは、信頼度の閾値として 0.5 を選択します。
私たちのアルゴリズムが 2 つのフィールドを検出したとします。
フィールド 1 には 0.6 つの NE があり、信頼度スコアは 0.7 と XNUMX です。
フィールド 2 には 0.3 つの NE があり、信頼度スコアは 0.5、0.4、および XNUMX です。

明らかに、フィールド 2 の平均信頼度はしきい値を下回っているため、ブロックは信頼度 1 でフィールド 0.65 として分類されます。

0.5 番目のフィールドの信頼スコアが 0.5、0.6、XNUMX の場合はどうなるでしょうか?

これは、0.58 つのフィールドがしきい値を超えることを意味します。 この場合、XNUMX つのフィールドが一緒にネストされたフィールド テンプレートに分類されるかどうかを確認します。 たとえば、品目は製品と価格で構成されます。 その場合は、すべての信頼値を集計し、信頼度 (この場合は XNUMX) を持つ行項目をブロックの予測フィールドとして返します。

このようなネストされたフィールド テンプレートに一致しない場合は、最初のしきい値処理の例で行ったように、単純に信頼性の高いフィールドを返します。

より複雑なブロック推論値の計算と、それに対応するメトリクスを考案することもできます。 加重平均 しきい値を設定するアプローチではなく、異なるエンティティ間の関係が、ユースケースやより頻繁に遭遇する可能性のあるデータに応じたルールによって定義されるか、または次の方法を使用して学習できるアプローチです。 関係抽出 行われている方法 こちら.

エンベディングと CNN の使用

Tesseract OCR 私たちに提供します 境界ボックス 請求書で検出されたテキストのすべての部分、すべての行、およびすべての文字の情報。 これは私たちに豊かさをもたらします 空間情報 残念ながら、これは上記のすべてのアプローチで活用されていません。 この空間情報は、 グリッド形式の OCR テキスト を使用して 畳み込みネットワーク さまざまな名前付きエンティティが空間情報とどのように相関するかを学ぶため こちら.

グリッド付きテキストは、提案された方法で形成されます。 グリッド位置マッピング という原理でグリッドが生成されるメソッドです。 テキストの相対的な空間関係を維持する 元のスキャンされたドキュメントの画像。 豊富なセマンティック情報がグリッド化されたテキストからエンコードされます。 一番最初に ステージ 畳み込みニューラル ネットワークの 単語埋め込みレイヤー。 これにより、文書の空間情報だけでなく意味論的な情報にもアクセスできるようになり、実際に領収書や請求書についても、 このモデルは、NER タグ付けベースのアプローチよりも優れたパフォーマンスを示しています。。 著者らは、この目的のために空間ピラミッド ベースの CNN アーキテクチャを使用しています。

グラフ畳み込みネットワークの使用

の考え方 情報抽出のために空間情報と意味情報を結合する に適用されています この 紙も。 の グラフ埋め込み によって生成された グラフの畳み込み 文書内のテキストセグメントのコンテキストを要約します。 テキスト埋め込みと組み合わせる 標準を使用したエンティティ抽出用 BiLSTM-CRFモデル.

ここでそれぞれ 単語 としてモデル化されています とその空間的関係 隣の言葉 としてモデル化された エッジ。 グラフ内のすべてのノードはラベルに関連付けられています。この場合、ラベルは請求書のフィールドになります。 ノードのラベルを予測する グラウンドトゥルースなしで。 アブレーション研究により、グラフ埋め込みのみが使用された場合にはフィールド抽出はそれほど影響を受けなかったが、単語埋め込みのみが使用された場合にはパフォーマンスが大幅に低下したことが明らかになりました。

まとめ

私たちは、請求書から関連フィールドを抽出するためのいくつかの異なる機械学習アプローチを検討しました。これには、すぐに使用できる NER タグ付け方法、機械学習分類子とその深層学習アーキテクチャを使用した独自の NER タグ付けモデルのトレーニングが含まれます。 また、単語の埋め込みとともに空間情報を利用した、テキストからの情報抽出のためのいくつかの方法についても検討しました。 カスタム データセットの作成と、トレーニング手順および推論手順の評価について話し合いました。 私たちは継続的な学習ループに注目し、それに関するいくつかのベスト プラクティスについて話しました。

Nanonetを使用したOCR

  Nanonetsプラットフォーム OCRモデルを簡単に構築できます。 データをアップロードし、注釈を付け、トレーニングするようにモデルを設定し、XNUMX行のコードを記述したり、GPUを心配したり、ディープラーニングモデルに適したアーキテクチャを見つけたりせずに、ブラウザーベースのUIを介して予測を取得するまで待機できます。

Nanonets for Automationの使用を開始する

今すぐモデルを試すか、デモをリクエストしてください!

今すぐやってみて下さい

出典: https://nanonets.com/blog/named-entity-recognition-ner-information-extraction/

スポット画像

最新のインテリジェンス

スポット画像