huggingface/tokenizersのnormalizerの継承関係
実装はRust
生成されたpyiファイルを見た
どれもNormalizerクラスを継承
normalizeメソッドとnormalize_strメソッドを持つ
使う上でのインターフェースが揃っている!
(Protocolでも実装できるかも)
NFCやLowercaseなど具体のNormalizer
具体Normalizerとして、Sequence
Allows concatenating multiple other Normalizer as a Sequence.
他の(具体)Normalizerを結合したもの
(内部にNormalizerたちを持つのだと推測。Rust実装読みたい)
class Sequence(Normalizer):
インターフェースは揃えている
BertNormalizer
class BertNormalizer(Normalizer):
継承しているのはNormalizer
一案として、Sequenceインスタンスを属性に持つことで実装できそう
初期化時のフラグに応じてSequenceを初期化しているんじゃないか
Sequenceの継承ではなく、Sequenceへの委譲
compositeパターン?
単体のNormalizerでも複数のNormalizerを束ねていても同じインターフェース