👋

【Python】書記素クラスターを扱う

2024/06/29に公開

Python で書記素クラスターを扱うには regex や PyICU を利用する。Debian 標準の Python の場合、apt パッケージが用意されている

sudo apt install python3-regex、python3-icu

mise や asdf などの開発環境ツールで導入した Python の場合、事前に C 言語の ICU パッケージを導入しておく必要がある

sudo apt install libicu-dev

venv でつくった仮想環境でモジュールを導入する

python3 -m venv .venv
source .venv/bin/activate
python -m pip install regex
python -m pip install pyicu

まず regex を使ってみる

>>> import regex
>>> str = 'ハ\u309Aハ\u309A'
>>> iter = regex.compile(r'\X').finditer(str)
>>> [m.group() for m in iter]
['パ', 'パ']

PyICU の場合、次のように書く

import icu

str = 'ハ\u309Aハ\u309A'
b = icu.BreakIterator.createCharacterInstance(icu.Locale())
b.setText(str)

i = 0
for j in b:
    print(str[i:j])
    i = j

少し書き換えてジェネレーターをつくる

import icu

def breakIter(str):
    b = icu.BreakIterator.createCharacterInstance(icu.Locale())
    b.setText(str)
    i = 0
    for j in b:
        yield str[i:j]
        i = j

str = 'ハ\u309Aハ\u309A'

for g in breakIter(str):
    print(g)

Discussion