Watson Natural Language Processing は、20 以上の言語で事前トレーニングされたモデルを提供します。 専門家のチームによってキュレーションされ、特定の言語ごとに品質が評価されます。 これらの事前トレーニングされたモデルは、ライセンスや知的所有権の侵害について心配することなく、実動環境で使用できます。
モデルのロードと実行
モデルをロードするには、まずその名前を知っておく必要があります。 モデル名は、モデルのタイプ (分類やエンティティー抽出など)、アルゴリズムのタイプ (SVM やトランスフォーマーなど)、言語コード、およびタイプ・システムの詳細をエンコードする標準規則に従います。
ニーズに合ったモデルを見つけるには、タスク・カタログを使用します。 Watson NLP タスク・カタログを参照してください。
ブロック・クラスrun()
メソッドでhelp()
を使用すると、特定のブロック・クラス (例えば、エンティティー・メンション・モデル) に対して予期される入力を見つけることができます。
import watson_nlp
help(watson_nlp.blocks.keywords.TextRank.run)
Watson Natural Language Processing は、ブロックとワークフローを通じて自然言語機能をカプセル化します。 各ブロックまたはワークフローは、以下の機能をサポートします。
load()
: モデルのロードrun()
: 入力引数に対してモデルを実行します。train()
: 独自のデータでモデルをトレーニングします (すべてのブロックとワークフローがトレーニングをサポートしているわけではありません)。save()
: 自分のデータでトレーニングされたモデルを保存します。
ブロック
以下の 2 つのタイプのブロックが存在します。
ワークフロー は、パイプライン内の入力ドキュメントに対して 1 つ以上のブロックを実行します。
入力文書を直接操作するブロック
入力文書を直接操作するブロックの例として、構文ブロックがあります。このブロックは、トークン化、見出し語化、品詞タグ付け、依存関係解析などの自然言語処理操作を実行します。
例: テキスト・スニペットでの構文分析の実行:
import watson_nlp
# Load the syntax model for English
syntax_model = watson_nlp.load('syntax_izumo_en_stock')
# Run the syntax model and print the result
syntax_prediction = syntax_model.run('Welcome to IBM!')
print(syntax_prediction)
他のブロックに依存するブロック
他のブロックに依存するブロックは、入力文書に直接適用できません。 これらは、先行する 1 つ以上のブロックの出力に適用されます。 例えば、「Keyword Extraction」ブロックは、「Syntax」および「Noun Phrase」ブロックに依存します。
これらのブロックはロードできますが、入力文書では特定の順序でのみ実行できます。 次に例を示します。
import watson_nlp
text = "Anna went to school at University of California Santa Cruz. \
Anna joined the university in 2015."
# Load Syntax, Noun Phrases and Keywords models for English
syntax_model = watson_nlp.load('syntax_izumo_en_stock')
noun_phrases_model = watson_nlp.load('noun-phrases_rbr_en_stock')
keywords_model = watson_nlp.load('keywords_text-rank_en_stock')
# Run the Syntax and Noun Phrases models
syntax_prediction = syntax_model.run(text, parsers=('token', 'lemma', 'part_of_speech'))
noun_phrases = noun_phrases_model.run(text)
# Run the keywords model
keywords = keywords_model.run(syntax_prediction, noun_phrases, limit=2)
print(keywords)
ワークフロー
ワークフローは、未加工ドキュメントから最終ブロックまでの事前定義エンドツーエンド・パイプラインであり、必要なすべてのブロックがワークフロー・パイプラインの一部としてチェーニングされます。
Entity Mentionsワークフローの呼び出し方の例については、このサンプルを参照してください:
import watson_nlp
# Load the workflow model
mentions_workflow = watson_nlp.load('entity-mentions_transformer-workflow_multilingual_slate.153m.distilled')
# Run the entity extraction workflow on the input text
mentions_workflow.run('IBM announced new advances in quantum computing', language_code="en")