BERT 固有表現認識 Python* デモ

ここでは、CONLL2003 で調整された BERT モデルを推論に使用する固有表現認識 (Named Entity Recognition (NER)) デモ・アプリケーションについて説明します。

どのように動作するか

起動時に、デモ・アプリケーションはコマンドライン・パラメーターを受け取り、モデルを OpenVINO™ ランタイムプラグインにロードします。また、ユーザーが指定した URL からデータを取得して、 “コンテキスト” テキストを設定します。テキストは名前付きエンティティーの検索に使用されます。

モデル API

このデモでは、Python* モデル API のモデルラッパー、アダプター、パイプラインを利用します。

統一された結果表現を備えたラッパーの汎用インターフェイスは、1 つのデモで複数の異なる固有表現認識モデルトポロジーをサポートします。

実行の準備

デモでサポートされるモデルリストは、<omz_dir>/demos/bert_named_entity_recognition_demo/python/models.lst ファイルにあります。このファイルは、モデル・ダウンローダーおよびコンバーターのパラメーターとして使用され、モデルをダウンロードし、必要に応じて OpenVINO IR 形式 (*.xml + *.bin) に変換できます。

モデル・ダウンローダーの使用例:

omz_downloader --list models.lst

モデル・コンバーターの使用例:

omz_converter --list models.lst

サポートされるモデル

  • bert-base-ner

注: 各種デバイス向けのモデル推論サポートの詳細については、インテルの事前トレーニング・モデルのデバイスサポートパブリックの事前トレーニング・モデルのデバイスサポートの表を参照してください。

実行中

-h オプションを指定してアプリケーションを実行すると、使用方法が表示されます。

usage: bert_named_entity_recognition_demo.py [-h] -v VOCAB -m MODEL -i INPUT
                                             [--adapter {openvino,ovms}]
                                             [--input_names INPUT_NAMES]
                                             [-d DEVICE]

Options:
  -h, --help            Show this help message and exit.
  -v VOCAB, --vocab VOCAB
                        Required. Path to the vocabulary file with tokens
  -m MODEL, --model MODEL
                        Required. Path to an .xml file with a trained model or
                        address of model inference service if using OVMS adapter.
  -i INPUT, --input INPUT
                        Required. URL to a page with context
  --adapter {openvino,ovms}
                        Optional. Specify the model adapter. Default is
                        openvino.
  --input_names INPUT_NAMES
                        Optional. Inputs names for the network. Default values
                        are "input_ids,attention_mask,token_type_ids"
  -d DEVICE, --device DEVICE
                        Optional. Target device to perform inference
                        on. Default value is CPU
  -nireq NUM_INFER_REQUESTS, --num_infer_requests NUM_INFER_REQUESTS
                        Optional. Number of infer requests.
  -nstreams NUM_STREAMS, --num_streams NUM_STREAMS
                        Optional. Number of streams to use for inference on
                        the CPU or/and GPU in throughput mode (for HETERO and
                        MULTI device cases use format
                        <device1>:<nstreams1>,<device2>:<nstreams2> or just
                        <nstreams>).
  -nthreads NUM_THREADS, --num_threads NUM_THREADS
                        Optional. Number of threads to use for inference on
                        CPU (including HETERO cases).
  --dynamic_shape       Optional. Run model with dynamic input sequence. If
                        not provided, input sequence is padded to max_seq_len

デモの入力

アプリケーションは、指定された URL の HTML ページからテキストを読み取ります。モデルとそのパラメーター (入力と出力) も重要なデモ引数です。モデルの入力順序は重要であるため、デモ・アプリケーションはコマンドラインで指定された入力が実際のネットワーク入力と一致するかチェックすることに注意してください。

デモの出力

アプリケーションは、入力テキスト内の各文について、認識された名前付きエンティティ (LOC - 場所、PER - 個人、ORG - 組織、MISC - その他) を出力します。
アプリケーションのレポート

  • レイテンシー: 入力データの処理に必要な合計処理時間 (語彙のロード、トークンとしてのコンテキストの処理から結果の表示まで)。

デモのコマンドライン例

次のコマンドでデモを試すことができます (Open Model Zoo からモデルがダウンロードされ、“–name bert*” で実行されたモデル・ダウンローダーで変換されたと仮定します)。

    python3 bert_named_entity_recognition_demo.py.py
            --vocab=<models_dir>/models/public/bert-base-ner/vocab.txt
            --model=<path_to_model>/bert-base-ner.xml
            --input_names="input_ids,attention_mask,token_type_ids"
            --input="https://en.wikipedia.org/wiki/Bert_(Sesame_Street)"

OpenVINO モデルサーバーの実行

OpenVINO モデルサーバーで提供されるモデルを使用してデモを実行することもできます。OVMS を使用したデモの実行については、OVMSAdapter を参照してください。

コマンド例:

    python3 bert_named_entity_recognition_demo.py.py
            --vocab=<models_dir>/models/public/bert-base-ner/vocab.txt
            --model=localhost:9000/models/bert
            --input_names="input_ids,attention_mask,token_type_ids"
            --input="https://en.wikipedia.org/wiki/Bert_(Sesame_Street)"
            --adapter ovms

長文テキストを含む文書の分類

元の “コンテキスト” (URL のテキスト) がモデル入力 (Bert-Base の場合は 128) に適合しない場合、デモはモデルを “コンテキスト” 内の最大文長に形成し、モデルが静的な形状で実行された場合は、すべての入力シーケンスを最大文長にパディングします。