GiNZA(9) - 固有表現抽出

固有表現抽出は、文章から「人名」「場所」「組織名」などの固有名詞や「日付」「時間」などの数値表現を抽出する処理です。

エンティティ分析と呼ばれることもあります。

固有表現抽出

固有表現抽出を行うソースコードは次のようになります。

[Google Colaboratory]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import spacy
from spacy import displacy
nlp = spacy.load('ja_ginza')
doc = nlp('武元さんと渋谷で夕食をご一緒しましょう。')

# 固有表現抽出
for ent in doc.ents:
print(
ent.text + ', '+ # テキスト
ent.label_ + ',' + # ラベル
str(ent.start_char) + ',' + # 開始位置
str(ent.end_char)) # 終了位置

# 固有表現抽出の強調表示
displacy.render(doc, style='ent', jupyter=True)

固有表現はEntityクラスとして取得します。

Entityクラスの主なプロパティは以下の通りです

  • ent.text
    テキスト
  • ent.label_
    ラベル
  • ent.start_char
    開始位置
  • ent.end_char
    終了位置

実行結果は以下の通りです。

[実行結果]

15行目の固有表現抽出の強調表示を実行することで少しグラフィカルに表示され、テキストとラベルの関係が見やすくなっています。

次回は、Wikipediaを用いた固有表現抽出データセットでの学習を行います。