From d80ac2fd2df4e7fb8a28acfa512bb11472b5cc99 Mon Sep 17 00:00:00 2001
From: liugz18 <57401541+liugz18@users.noreply.github.com>
Date: 星期四, 18 七月 2024 21:34:55 +0800
Subject: [PATCH] Rename 'res' in line 514 to avoid with naming conflict with line 365
---
funasr/tokenizer/sentencepiece_tokenizer.py | 33 +++++++++++++++++++++++++++------
1 files changed, 27 insertions(+), 6 deletions(-)
diff --git a/funasr/tokenizer/sentencepiece_tokenizer.py b/funasr/tokenizer/sentencepiece_tokenizer.py
index df98c2c..0b47a9f 100644
--- a/funasr/tokenizer/sentencepiece_tokenizer.py
+++ b/funasr/tokenizer/sentencepiece_tokenizer.py
@@ -5,27 +5,31 @@
import sentencepiece as spm
-from funasr.tokenizer.abs_tokenizer import AbsTokenizer
+from funasr.tokenizer.abs_tokenizer import BaseTokenizer
+from funasr.register import tables
-class SentencepiecesTokenizer(AbsTokenizer):
- def __init__(self, model: Union[Path, str], **kwargs):
- self.model = str(model)
+@tables.register("tokenizer_classes", "SentencepiecesTokenizer")
+class SentencepiecesTokenizer(BaseTokenizer):
+ def __init__(self, bpemodel: Union[Path, str], **kwargs):
+ super().__init__(**kwargs)
+ self.bpemodel = str(bpemodel)
# NOTE(kamo):
# Don't build SentencePieceProcessor in __init__()
# because it's not picklable and it may cause following error,
# "TypeError: can't pickle SwigPyObject objects",
# when giving it as argument of "multiprocessing.Process()".
self.sp = None
+ self._build_sentence_piece_processor()
def __repr__(self):
- return f'{self.__class__.__name__}(model="{self.model}")'
+ return f'{self.__class__.__name__}(model="{self.bpemodel}")'
def _build_sentence_piece_processor(self):
# Build SentencePieceProcessor lazily.
if self.sp is None:
self.sp = spm.SentencePieceProcessor()
- self.sp.load(self.model)
+ self.sp.load(self.bpemodel)
def text2tokens(self, line: str) -> List[str]:
self._build_sentence_piece_processor()
@@ -34,3 +38,20 @@
def tokens2text(self, tokens: Iterable[str]) -> str:
self._build_sentence_piece_processor()
return self.sp.DecodePieces(list(tokens))
+
+ def encode(self, line: str, **kwargs) -> List[int]:
+ self._build_sentence_piece_processor()
+ return self.sp.EncodeAsIds(line)
+
+ def decode(self, line: List[int], **kwargs):
+ self._build_sentence_piece_processor()
+ return self.sp.DecodeIds(line)
+
+ def get_vocab_size(self):
+ return self.sp.GetPieceSize()
+
+ def ids2tokens(self, *args, **kwargs):
+ return self.decode(*args, **kwargs)
+
+ def tokens2ids(self, *args, **kwargs):
+ return self.encode(*args, **kwargs)
--
Gitblit v1.9.1