TPTブログ

テックポート株式会社のブログです。 技術情報や製品・サービス情報、 また未経験社員がデータサイエンティストを 目指す奮闘記など、更新していきます。

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

もっと詳しく!

ドキュメントへ!!