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