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

関連情報#