spaCy でカスタム固有表現を作成する
spaCy の標準の固有表現だけでは足りない場合は、spaCy の EntityRuler() クラスを使って独自に作成できます。
EntityRuler() を使うと、独自のエンティティを作成して spaCy のパイプラインに追加できます。
まず、EntityRuler() のインスタンスを作成し、現在のパイプラインである nlp を渡します。
次に、そのインスタンスで add_patterns() を呼び出し、エンティティとしてラベル付けしたいテキストの pattern を含むディクショナリを渡します。
パターンを設定したら、add_pipe() を使って nlp パイプラインに追加できます。
Acme はテクノロジー企業なので、パターン "smartphone" に "PRODUCT" というエンティティタグを付けることにします。
spaCy はインポート済みで、call_4_channel_2.wav file) から書き起こしたテキストを含む doc がすでに用意されています。
この演習はコースの一部です
Pythonで学ぶ音声言語処理
演習の手順
spacy.pipelineからEntityRulerをインポートします。"pattern"キーの値として"smartphone"を追加します。EntityRuler()のインスタンスrulerをnlpパイプラインに追加します。docに含まれるエンティティの属性を出力します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Import EntityRuler class
from spacy.pipeline import ____
# Create EntityRuler instance
ruler = EntityRuler(nlp)
# Define pattern for new entity
ruler.add_patterns([{"label": "PRODUCT", "pattern": ____}])
# Update existing pipeline
nlp.add_pipe(____, before="ner")
# Test new entity
for entity in doc.____:
print(entity.text, entity.label_)