File size: 1,231 Bytes
0c354cf |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
from tokenizers import Tokenizer
from tokenizers.models import WordPiece
from tokenizers.pre_tokenizers import Whitespace
from typing import List
class JapaneseTokenizer:
def __init__(self, tokenizer_dir: str):
"""
初始化 JapaneseTokenizer。
:param tokenizer_dir: 包含 vocab.txt 的目录路径。
"""
# 加载 vocab.txt 到 WordPiece 模型
self.tokenizer = Tokenizer(WordPiece.from_file(f"{tokenizer_dir}/vocab.txt", unk_token="[UNK]"))
# 设置预分词器(按空格分词)
self.tokenizer.pre_tokenizer = Whitespace()
def tokenize(self, text: str) -> List[str]:
"""
将输入文本分词为 token 列表。
:param text: 输入文本。
:return: 分词后的 token 列表。
"""
output = self.tokenizer.encode(text)
return output.tokens
# 示例用法
if __name__ == "__main__":
# 假设模型文件位于 "./cl-tohoku/bert-base-japanese-v3"
tokenizer = JapaneseTokenizer("./cl-tohoku/bert-base-japanese-v3")
text = "日本語のテキストをトークン化します。"
tokens = tokenizer.tokenize(text)
print("Tokens:", tokens) |