Source code for pyiqa.archs.qrealign.qwen3_5_src.tokenization_qwen3_5

# Copyright 2024 The Qwen team, Alibaba Group and The HuggingFace Inc. team. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""Tokenization classes for Qwen3.5."""

from tokenizers import Regex, Tokenizer, decoders, normalizers, pre_tokenizers
from tokenizers.models import BPE

from ...tokenization_utils_tokenizers import TokenizersBackend
from ...utils import logging


logger = logging.get_logger(__name__)

PRETOKENIZE_REGEX = r"""(?i:'s|'t|'re|'ve|'m|'ll|'d)|[^\r\n\p{L}\p{N}]?[\p{L}\p{M}]+|\p{N}| ?[^\s\p{L}\p{M}\p{N}]+[\r\n]*|\s*[\r\n]+|\s+(?!\S)|\s+"""


[docs] class Qwen3_5Tokenizer(TokenizersBackend): model_input_names = ["input_ids", "attention_mask"] model = BPE def __init__( self, vocab: str | dict[str, int] | None = None, merges: str | list[str] | None = None, vocab_file=None, merges_file=None, unk_token: str = "<|endoftext|>", bos_token=None, eos_token: str = "<|endoftext|>", pad_token: str = "<|endoftext|>", add_prefix_space=None, **kwargs, ): self.add_prefix_space = add_prefix_space if add_prefix_space is not None else False self._vocab = ( vocab if vocab is not None else { "<|endoftext|>": 0, } ) self._merges = merges or [] self._tokenizer = Tokenizer( BPE( vocab=self._vocab, merges=self._merges, dropout=None, unk_token=None, continuing_subword_prefix="", end_of_word_suffix="", fuse_unk=False, byte_fallback=False, ) ) self._tokenizer.decoder = decoders.ByteLevel() self._tokenizer.normalizer = normalizers.NFC() self._tokenizer.pre_tokenizer = pre_tokenizers.Sequence( [ pre_tokenizers.Split( Regex(PRETOKENIZE_REGEX), behavior="isolated", invert=False, ), pre_tokenizers.ByteLevel( add_prefix_space=self.add_prefix_space, use_regex=False, ), ] ) super().__init__( vocab_file=vocab_file, merges_file=merges_file, unk_token=unk_token, bos_token=bos_token, eos_token=eos_token, pad_token=pad_token, add_prefix_space=add_prefix_space, **kwargs, )
__all__ = ["Qwen3_5Tokenizer"]