Instructions to use infly/inf-wse-v2-base-zh with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use infly/inf-wse-v2-base-zh with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("fill-mask", model="infly/inf-wse-v2-base-zh", trust_remote_code=True, device_map="auto")# Load model directly from transformers import AutoTokenizer, AutoModelForMaskedLM tokenizer = AutoTokenizer.from_pretrained("infly/inf-wse-v2-base-zh", trust_remote_code=True) model = AutoModelForMaskedLM.from_pretrained("infly/inf-wse-v2-base-zh", trust_remote_code=True, device_map="auto") - Notebooks
- Google Colab
- Kaggle
| from transformers.models.roformer.tokenization_roformer import (WordpieceTokenizer, whitespace_tokenize, | |
| RoFormerTokenizer) | |
| # Copied from transformers.models.roformer.tokenization_roformer.BasicTokenizer._is_chinese_char | |
| def _is_chinese_char(cp): | |
| """Checks whether CP is the codepoint of a CJK character.""" | |
| # This defines a "chinese character" as anything in the CJK Unicode block: | |
| # https://en.wikipedia.org/wiki/CJK_Unified_Ideographs_(Unicode_block) | |
| # | |
| # Note that the CJK Unicode block is NOT all Japanese and Korean characters, | |
| # despite its name. The modern Korean Hangul alphabet is a different block, | |
| # as is Japanese Hiragana and Katakana. Those alphabets are used to write | |
| # space-separated words, so they are not treated specially and handled | |
| # like the all of the other languages. | |
| if ( | |
| (cp >= 0x4E00 and cp <= 0x9FFF) | |
| or (cp >= 0x3400 and cp <= 0x4DBF) # | |
| or (cp >= 0x20000 and cp <= 0x2A6DF) # | |
| or (cp >= 0x2A700 and cp <= 0x2B73F) # | |
| or (cp >= 0x2B740 and cp <= 0x2B81F) # | |
| or (cp >= 0x2B820 and cp <= 0x2CEAF) # | |
| or (cp >= 0xF900 and cp <= 0xFAFF) | |
| or (cp >= 0x2F800 and cp <= 0x2FA1F) # | |
| ): # | |
| return True | |
| return False | |
| # Modified from transformers.models.roformer.tokenization_roformer.WordpieceTokenizer | |
| class ChineseWordpieceTokenizer(WordpieceTokenizer): | |
| def tokenize(self, text): | |
| """ | |
| Tokenizes a piece of text into its word pieces. This uses a greedy longest-match-first algorithm to perform | |
| tokenization using the given vocabulary. | |
| For example, `input = "unaffable"` wil return as output `["un", "##aff", "##able"]`. | |
| Args: | |
| text: A single token or whitespace separated tokens. This should have | |
| already been passed through *BasicTokenizer*. | |
| Returns: | |
| A list of wordpiece tokens. | |
| """ | |
| output_tokens = [] | |
| for token in whitespace_tokenize(text): | |
| chars = list(token) | |
| if len(chars) > self.max_input_chars_per_word: | |
| output_tokens.append(self.unk_token) | |
| continue | |
| is_bad = False | |
| start = 0 | |
| sub_tokens = [] | |
| while start < len(chars): | |
| end = len(chars) | |
| cur_substr = None | |
| while start < end: | |
| substr = "".join(chars[start:end]) | |
| if start > 0 and not _is_chinese_char(ord(substr[0])): # only add ## when not Chinese character | |
| substr = "##" + substr | |
| if substr in self.vocab: | |
| cur_substr = substr | |
| break | |
| end -= 1 | |
| if cur_substr is None: | |
| is_bad = True | |
| break | |
| sub_tokens.append(cur_substr) | |
| start = end | |
| if is_bad: | |
| output_tokens.append(self.unk_token) | |
| else: | |
| output_tokens.extend(sub_tokens) | |
| return output_tokens | |
| class ChineseRoFormerTokenizer(RoFormerTokenizer): | |
| def __init__( | |
| self, | |
| vocab_file, | |
| do_lower_case=True, | |
| do_basic_tokenize=True, | |
| never_split=None, | |
| unk_token="[UNK]", | |
| sep_token="[SEP]", | |
| pad_token="[PAD]", | |
| cls_token="[CLS]", | |
| mask_token="[MASK]", | |
| tokenize_chinese_chars=False, | |
| strip_accents=None, | |
| **kwargs, | |
| ): | |
| super().__init__( | |
| vocab_file=vocab_file, | |
| do_lower_case=do_lower_case, | |
| do_basic_tokenize=do_basic_tokenize, | |
| never_split=never_split, | |
| unk_token=unk_token, | |
| sep_token=sep_token, | |
| pad_token=pad_token, | |
| cls_token=cls_token, | |
| mask_token=mask_token, | |
| tokenize_chinese_chars=tokenize_chinese_chars, | |
| strip_accents=strip_accents, | |
| **kwargs, | |
| ) | |
| self.wordpiece_tokenizer = ChineseWordpieceTokenizer(vocab=self.vocab, unk_token=str(unk_token)) | |