始める無料で始める

spaCy でカスタム固有表現を作成する

spaCy の標準の固有表現だけでは足りない場合は、spaCyEntityRuler() クラスを使って独自に作成できます。

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() のインスタンス rulernlp パイプラインに追加します。
  • 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_)
コードを編集して実行