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