テービーテックのデータサイエンス

未経験リケジョがゼロからデータサイエンティストを目指す姿を記す奮闘記です。2019/12/05文系出身者が共同で更新を開始

TAG index

▲本日の関数==unicodedata.normalize()==

f:id:TBT_matsu:20200402152259p:plain

本日の関数:unicodedata.normalize()

こんにちは。
テービーテックの村松です。

本日ご紹介する関数は「unicodedata.normalize()」。
※※これまでご紹介した関数はこちら※※

どんな関数?

Unicodeの正規化を行います。
自然言語処理で表記揺れの統一をしたいときに利用します。

引数は?
unicodedata.normalize(form, unistr)

引数は、

  • form:正規化形式を指定します。'NFC'、'NFKC'、'NFD'、'NFKD' が指定可能です。
  • unistr:変換対象の文字列を指定します。

使ってみよう

input

ちょっと変わった文字の入ったサンプルで何が変わるか見てみましょう。

s = '神崎、D-Ⅲグループ、30㌔マラソン、③位'
コード
import unicodedata
print(unicodedata.normalize("NFKC", s))
##結果
神崎、D-IIIグループ、30キロマラソン、3

NFKC(Normalization Form Compatibility Composition)で
異体字:神→神
全角英数字:D・30→D・30
ローマ数字:Ⅲ→III
単記号:㌔→キロ
半角カタカナ:グループ・マラソン→グループ・マラソン
丸数字:③→3
に変わりました。

正規化形式の詳しくはこちらをご参照ください。

SNSなどのテキストを取得するときなどはこういったちょっと変わった文字表現が多用されてないか特に気を付けたいですね。
日本語はただでさえ使っている文字が多いので表記揺れを統一していくことに苦労しそうです・・・。
他にも色々な日本語特有の表記揺れ対策があるようなので今後も勉強していきたいですね。

もっと詳しく!

ドキュメントへ!!