0
0

GiNZAで日本語の人名・住所を検出する

Posted at

Glue の PII Detection が漢字をスルーしちゃうので、GiNZA を試す。

GiNZA とは

日本語の自然言語ライブラリ。形態素解析をやってくれるらしい。

https://megagonlabs.github.io/ginza/
https://github.com/megagonlabs/ginza

インストール

pip でOK。上記 github によると、Python 3.8 以降が必要とのこと(自分の環境は3.12.3)。

% pip install ja_ginza --break-system-packages

サンプルコード

某 Claude 氏が生成してくれたものに手を加えて作ったもの。

ginza-test.py
import spacy

nlp = spacy.load('ja_ginza')
doc = nlp('山田太郎は東京都渋谷区に住んでいます。木村 花子は山口に住んでいましたが、現在は引っ越して桐生に住んでいます。山口は近々、仕事の都合で津に転居するという話です。あ、三重県の津市のことです。')

print("go!")

for ent in doc.ents:
	if ent.label_ == 'Person':
		print('人名:', ent.text)
	elif ent.label_ == 'City':
		print('住所:', ent.text)

実行

% python ginza-test.py
go!
人名: 山田太郎
住所: 東京都渋谷区
人名: 木村 花子
住所: 山口
住所: 桐生
人名: 山口
住所: 津市

考察

人名、住所とも案外綺麗に取れる。が、当たり前だが 100% ではない。

  • スペースが入っていても問題ない("木村 花子")
  • 地名と人名両方で使われる単語でも前後の文脈から判別してくれる("山口")
  • 「市」とか付いてなくても取れる("桐生")
  • 取れないものもある("津")

あとは置換えるなり、一般化するなりすればよいが、「検知は 100% ではないこと」は意識しておいた方がよさそう。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0