spaCy の固有表現認識器を使う
この演習では、spaCy の組み込み固有表現認識器を使って、検索クエリから人名・日付・組織名を抽出します。spaCy ライブラリはすでにインポートされており、英語モデルは nlp として読み込まれています。
extract_entities() という関数を定義しましょう。この関数は引数 message を受け取り、対象の固有表現の種類をキー、抽出した固有表現を値とする辞書を返します。対象の固有表現の種類は include_entities というリストに格納されています。
この演習はコースの一部です
Python でチャットボットを作る
演習の手順
dict.fromkeys()にinclude_entitiesを引数として渡し、固有表現を格納するための辞書entsを作成します。messageをnlpオブジェクトに渡して、spacyのドキュメントdocを作成します。- ドキュメント内の固有表現(
doc.ents)を反復処理します。 - 各固有表現の
.label_が対象のものかどうかを確認します。該当する場合は、その固有表現の.text属性をents辞書の対応するキーに代入します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Define included_entities
include_entities = ['DATE', 'ORG', 'PERSON']
# Define extract_entities()
def extract_entities(message):
# Create a dict to hold the entities
ents = ____
# Create a spacy document
doc = ____
for ent in ____:
if ____ in ____:
# Save interesting entities
ents[____] = ____
return ents
print(extract_entities('friends called Mary who have worked at Google since 2010'))
print(extract_entities('people who graduated from MIT in 1999'))