始める無料で始める

spaCy の EntityRuler で RegEx を使う

正規表現(RegEx)は、複雑な文字列パターンによるルールベースの情報抽出に使われます。RegEx は、特定のパターンを検索したり、マッチした部分を他のパターンで置き換えたりできます。この演習では、与えられた text からメールアドレスを見つけるために、spaCyEntityRuler を使う練習をします。

spaCy パッケージはすでにインポートされています。\d を使うと、0〜9 のいずれかの数字にマッチするメタ文字のパターンを表現できます。

spaCy のパターンは属性として REGEX を使えます。この場合、パターンの形は [{"TEXT": {"REGEX": "<a given pattern>"}}] になります。

この演習はコースの一部です

spaCyで学ぶNatural Language Processing

コースを見る

演習の手順

  • EntityRuler で使う、8888888888 形式の電話番号にマッチするパターンを定義します。
  • 空の spaCy 英語モデルを読み込み、パイプラインに EntityRuler コンポーネントを追加します。
  • 作成したパターンを EntityRuler コンポーネントに追加します。
  • モデルを実行し、与えられた text について、エンティティのテキストと種類のタプルを出力してください。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

text = "Our phone number is 4251234567."

# Define a pattern to match phone numbers
patterns = [{"label": "PHONE_NUMBERS", "pattern": [{"TEXT": {"REGEX": "(____){____}"}}]}]

# Load a blank model and add an EntityRuler
nlp = spacy.____("en")
ruler = nlp.____("entity_ruler")

# Add the compiled patterns to the EntityRuler
ruler.____(patterns)

# Print the tuple of entities texts and types for the given text
doc = ____(____)
print([(ent.____, ent.____) for ent in doc.____])
コードを編集して実行