77import warnings
88from typing import Union
99
10- from transformers import (
11- CamembertTokenizer ,
12- pipeline ,
13- )
14-
1510from pythainlp .tokenize import word_tokenize
1611
1712_model_name = "wangchanberta-base-att-spm-uncased"
18- _tokenizer = CamembertTokenizer .from_pretrained (
19- f"airesearch/{ _model_name } " , revision = "main"
20- )
21- if _model_name == "wangchanberta-base-att-spm-uncased" :
22- _tokenizer .additional_special_tokens = ["<s>NOTUSED" , "</s>NOTUSED" , "<_>" ]
13+ _tokenizer = None
14+
15+
16+ def _get_tokenizer ():
17+ """Get the tokenizer, initializing it if necessary."""
18+ global _tokenizer
19+ if _tokenizer is None :
20+ from transformers import CamembertTokenizer
21+
22+ _tokenizer = CamembertTokenizer .from_pretrained (
23+ f"airesearch/{ _model_name } " , revision = "main"
24+ )
25+ if _model_name == "wangchanberta-base-att-spm-uncased" :
26+ _tokenizer .additional_special_tokens = ["<s>NOTUSED" , "</s>NOTUSED" , "<_>" ]
27+ return _tokenizer
2328
2429
2530class ThaiNameTagger :
@@ -33,11 +38,13 @@ def __init__(self, dataset_name: str = "thainer", grouped_entities: bool = True)
3338 * *thainer* - ThaiNER dataset
3439 :param bool grouped_entities: grouped entities
3540 """
41+ from transformers import pipeline
42+
3643 self .dataset_name = dataset_name
3744 self .grouped_entities = grouped_entities
3845 self .classify_tokens = pipeline (
3946 task = "ner" ,
40- tokenizer = _tokenizer ,
47+ tokenizer = _get_tokenizer () ,
4148 model = f"airesearch/{ _model_name } " ,
4249 revision = f"finetuned@{ self .dataset_name } -ner" ,
4350 ignore_labels = [],
@@ -226,4 +233,4 @@ def segment(text: str) -> list[str]:
226233 if not text or not isinstance (text , str ):
227234 return []
228235
229- return _tokenizer .tokenize (text )
236+ return _get_tokenizer () .tokenize (text )
0 commit comments