Transformers documentation
Tokenizer
Tokenizer
Tokenizer có trách nhiệm chuẩn bị đầu vào cho mô hình. Thư viện chứa các tokenizer cho tất cả các mô hình. Hầu hết các tokenizer có sẵn ở hai phiên bản: một bản triển khai hoàn chỉnh bằng Python và một bản “Fast” dựa trên thư viện Rust 🤗 Tokenizers. Các bản triển khai “Fast” cho phép:
- tăng tốc đáng kể, đặc biệt khi thực hiện token hóa theo lô và
- các phương thức bổ sung để ánh xạ giữa chuỗi gốc (ký tự và từ) và không gian token (ví dụ: lấy chỉ số của token chứa một ký tự cho trước hoặc khoảng các ký tự tương ứng với một token cho trước).
Các lớp cơ sở PreTrainedTokenizer và PreTrainedTokenizerFast triển khai các phương thức chung để mã hóa các đầu vào chuỗi thành đầu vào mô hình (xem bên dưới) và khởi tạo/lưu trữ các tokenizer python và “Fast” từ một tệp hoặc thư mục cục bộ hoặc từ một tokenizer được huấn luyện trước do thư viện cung cấp (tải xuống từ kho lưu trữ AWS S3 của HuggingFace). Cả hai đều dựa vào PreTrainedTokenizerBase, nơi chứa các phương thức chung.
PreTrainedTokenizer và PreTrainedTokenizerFast do đó triển khai các phương thức chính để sử dụng tất cả các tokenizer:
- Tokenizing (chia chuỗi thành các chuỗi token con từ), chuyển đổi chuỗi token sang id và ngược lại, cũng như mã hóa/giải mã (tức là tokenizing và chuyển đổi sang số nguyên).
- Thêm các token mới vào từ vựng theo cách độc lập với cấu trúc bên dưới (BPE, SentencePiece…).
- Quản lý các token đặc biệt (như mask, beginning-of-sentence, v.v.): thêm chúng, gán chúng cho các thuộc tính trong tokenizer để dễ truy cập và đảm bảo chúng không bị tách trong quá trình tokenization.
BatchEncoding chứa kết quả đầu ra của các phương thức mã hóa của PreTrainedTokenizerBase (__call__, encode_plus và batch_encode_plus) và được kế thừa từ một từ điển Python. Khi tokenizer là một tokenizer thuần Python, lớp này hoạt động giống như một từ điển Python tiêu chuẩn và lưu trữ các đầu vào mô hình khác nhau được tính toán bởi các phương thức này (input_ids, attention_mask…). Khi tokenizer là một tokenizer “Fast” (tức là được hỗ trợ bởi tokenizers library của HuggingFace), lớp này cung cấp thêm một số phương thức căn chỉnh nâng cao, có thể được sử dụng để ánh xạ giữa chuỗi gốc (ký tự và từ) và không gian token (ví dụ: lấy chỉ số của token chứa một ký tự nhất định hoặc phạm vi các ký tự tương ứng với một token nhất định).
Tokenizer đa phương thức
Ngoài ra, mỗi tokenizer có thể là một tokenizer “đa phương thức”, nghĩa là tokenizer sẽ lưu trữ tất cả các token đặc biệt liên quan như một phần của thuộc tính tokenizer để dễ truy cập hơn. Ví dụ, nếu tokenizer được nạp từ một mô hình thị giác-ngôn ngữ như LLaVA, bạn sẽ có thể truy cập tokenizer.image_token_id để lấy token hình ảnh đặc biệt được dùng làm ký tự thay thế.
Để bật các token đặc biệt bổ sung cho bất kỳ loại tokenizer nào, bạn cần thêm các dòng sau và lưu tokenizer. Các token đặc biệt bổ sung không nhất thiết phải liên quan đến chế độ (modality) và có thể là bất kỳ thứ gì mà mô hình thường cần truy cập. Trong đoạn mã bên dưới, tokenizer tại output_dir sẽ có quyền truy cập trực tiếp vào ba token đặc biệt khác.
vision_tokenizer = AutoTokenizer.from_pretrained(
"llava-hf/llava-1.5-7b-hf",
extra_special_tokens={"image_token": "<image>", "boi_token": "<image_start>", "eoi_token": "<image_end>"}
)
print(vision_tokenizer.image_token, vision_tokenizer.image_token_id)
("<image>", 32000)PreTrainedTokenizer
lớp transformers.PythonBackend
< source >( **kwargs )
Tham số
- model_max_length (
int, tùy chọn) — Độ dài tối đa (tính bằng số token) cho các đầu vào của mô hình transformer. Khi tokenizer được tải bằng from_pretrained(), giá trị này sẽ được đặt thành giá trị được lưu cho mô hình liên quan trongmax_model_input_sizes(xem ở trên). Nếu không có giá trị nào được cung cấp, mặc định sẽ là VERY_LARGE_INTEGER (int(1e30)). - padding_side (
str, tùy chọn) — Bên mà mô hình cần được áp dụng padding. Nên chọn giữa [‘right’, ‘left’]. Giá trị mặc định được lấy từ thuộc tính lớp có cùng tên. - truncation_side (
str, tùy chọn) — Bên mà mô hình cần áp dụng cắt bớt. Nên chọn giữa [‘right’, ‘left’]. Giá trị mặc định được lấy từ thuộc tính lớp có cùng tên. - chat_template (
str, tùy chọn) — Chuỗi mẫu Jinja sẽ được dùng để định dạng các danh sách tin nhắn chat. Xem https://huggingface.co/docs/transformers/chat_templating để biết mô tả đầy đủ. - model_input_names (
list[string], tùy chọn) — Danh sách các đầu vào được chấp nhận bởi bước truyền trực tiếp (forward pass) của mô hình (ví dụ"token_type_ids"hoặc"attention_mask"). Giá trị mặc định được lấy từ thuộc tính lớp có cùng tên. - bos_token (
strhoặctokenizers.AddedToken, tùy chọn) — Một token đặc biệt đại diện cho đầu câu. - eos_token (
strhoặctokenizers.AddedToken, tùy chọn) — Một token đặc biệt đại diện cho kết thúc của một câu. - unk_token (
strhoặctokenizers.AddedToken, tùy chọn) — Một token đặc biệt đại diện cho một token ngoài từ vựng. - sep_token (
strhoặctokenizers.AddedToken, tùy chọn) — Một token đặc biệt dùng để phân tách hai câu khác nhau trong cùng một đầu vào (ví dụ được BERT sử dụng). - pad_token (
strhoặctokenizers.AddedToken, tùy chọn) — Một token đặc biệt được sử dụng để làm cho các mảng token có cùng kích thước nhằm phục vụ mục đích tạo batch. Sau đó, nó sẽ bị bỏ qua bởi các cơ chế chú ý (attention) hoặc quá trình tính toán loss. - cls_token (
strhoặctokenizers.AddedToken, tùy chọn) — Một token đặc biệt đại diện cho lớp của đầu vào (ví dụ được sử dụng bởi BERT). - mask_token (
strhoặctokenizers.AddedToken, tùy chọn) — Một token đặc biệt đại diện cho một token bị che (được sử dụng bởi các mục tiêu tiền huấn luyện mô hình ngôn ngữ có che, như BERT). Sẽ được liên kết vớiself.mask_tokenvàself.mask_token_id. - extra_special_tokens (list of
strhoặctokenizers.AddedToken, optional) — Một danh sách các token đặc biệt bổ sung dành riêng cho model. Thêm chúng vào đây để đảm bảo chúng bị bỏ qua khi giải mã vớiskip_special_tokensđược đặt thành True. Nếu chúng không thuộc từ vựng, chúng sẽ được thêm vào cuối từ vựng. - split_special_tokens (
bool, tùy chọn, mặc định làFalse) — Xác định xem các token đặc biệt có nên được tách ra trong quá trình tokenization hay không. Việc truyền tham số này sẽ ảnh hưởng đến trạng thái nội bộ của tokenizer. Hành vi mặc định là không tách các token đặc biệt. Điều này có nghĩa là nếu<s>làbos_token, thìtokenizer.tokenize("<s>") = ['<s>]. Ngược lại, nếusplit_special_tokens=True, thìtokenizer.tokenize("<s>")sẽ trả về['<','s', '>'].
Lớp cơ sở cho tất cả các tokenizer chậm.
Kế thừa từ PreTrainedTokenizerBase.
Xử lý tất cả các phương thức dùng chung cho việc phân tách token và các token đặc biệt, cũng như các phương thức tải xuống/đặt vào bộ nhớ đệm/tải các bộ phân tách token được huấn luyện trước, cũng như thêm token vào từ vựng.
Lớp này cũng chứa các token được thêm vào theo cách thống nhất trên tất cả các tokenizer, nhờ đó chúng ta không cần phải xử lý các phương pháp bổ sung từ vựng cụ thể của các cấu trúc từ điển cơ bản khác nhau (BPE, sentencepiece…).
Thuộc tính lớp (được ghi đè bởi các lớp kế thừa)
- vocab_files_names (
dict[str, str]) — Một từ điển có các khóa là tên tham số__init__của từng tệp từ vựng mà mô hình yêu cầu, và các giá trị tương ứng là tên tệp để lưu tệp liên quan (chuỗi). - pretrained_vocab_files_map (
dict[str, dict[str, str]]) — Một từ điển của các từ điển, trong đó các khóa cấp cao là tên từ khóa__init__của từng tệp từ vựng cần thiết cho mô hình, các khóa cấp thấp làshort-cut-namescủa các mô hình được huấn luyện trước, với các giá trị liên quan làurlcủa tệp từ vựng được huấn luyện trước tương ứng. - model_input_names (
list[str]) — Danh sách các đầu vào được kỳ vọng trong bước truyền thẳng (forward pass) của mô hình. - padding_side (
str) — Giá trị mặc định cho phía mà mô hình cần được áp dụng padding. Phải là'right'hoặc'left'. - truncation_side (
str) — Giá trị mặc định cho phía mà mô hình cần áp dụng cắt bớt. Phải là'right'hoặc'left'.
__call__
< source >( text: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = Nonetext_pair: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = Nonetext_target: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = Nonetext_pair_target: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = Noneadd_special_tokens: bool = Truepadding: bool | str | PaddingStrategy = Falsetruncation: bool | str | TruncationStrategy | None = Nonemax_length: int | None = Nonestride: int = 0is_split_into_words: bool = Falsepad_to_multiple_of: int | None = Nonepadding_side: str | None = Nonereturn_tensors: str | TensorType | None = Nonereturn_token_type_ids: bool | None = Nonereturn_attention_mask: bool | None = Nonereturn_overflowing_tokens: bool = Falsereturn_special_tokens_mask: bool = Falsereturn_offsets_mapping: bool = Falsereturn_length: bool = Falseverbose: bool = Truetokenizer_kwargs: dict[str, Any] | None = None**kwargs ) → BatchEncoding
Tham số
- text (
str,list[str],list[list[str]], tùy chọn) — Chuỗi hoặc lô các chuỗi cần được mã hóa. Mỗi chuỗi có thể là một chuỗi ký tự hoặc một danh sách các chuỗi ký tự (chuỗi đã được tiền mã hóa). Nếu các chuỗi được cung cấp dưới dạng danh sách các chuỗi ký tự (tiền mã hóa), bạn phải đặtis_split_into_words=True(để loại bỏ sự mơ hồ với một lô các chuỗi). - text_pair (
str,list[str],list[list[str]], tùy chọn) — Chuỗi hoặc lô các chuỗi cần được mã hóa. Mỗi chuỗi có thể là một chuỗi ký tự hoặc một danh sách các chuỗi ký tự (chuỗi đã được tách token trước). Nếu các chuỗi được cung cấp dưới dạng danh sách các chuỗi ký tự (đã tách token trước), bạn phải đặtis_split_into_words=True(để loại bỏ sự mơ hồ với một lô các chuỗi). - text_target (
str,list[str],list[list[str]], tùy chọn) — Chuỗi hoặc lô các chuỗi cần được mã hóa dưới dạng văn bản đích. Mỗi chuỗi có thể là một chuỗi ký tự hoặc một danh sách các chuỗi ký tự (chuỗi đã tách token). Nếu các chuỗi được cung cấp dưới dạng danh sách các chuỗi ký tự (đã tách token), bạn phải đặtis_split_into_words=True(để loại bỏ sự mơ hồ với một lô các chuỗi). - text_pair_target (
str,list[str],list[list[str]], tùy chọn) — Chuỗi hoặc lô các chuỗi cần được mã hóa dưới dạng văn bản đích. Mỗi chuỗi có thể là một chuỗi ký tự hoặc một danh sách các chuỗi ký tự (chuỗi đã tách token). Nếu các chuỗi được cung cấp dưới dạng danh sách các chuỗi ký tự (đã tách token), bạn phải đặtis_split_into_words=True(để loại bỏ sự mơ hồ với một lô các chuỗi). - tokenizer_kwargs (
dict[str, Any], tùy chọn) — Các kwargs bổ sung để truyền cho tokenizer. Chúng sẽ được gộp với các tham số tường minh và các kwargs khác, trong đó các tham số tường minh có độ ưu tiên cao hơn. - add_special_tokens (
bool, tùy chọn, mặc định làTrue) — Có thêm các token đặc biệt khi mã hóa các chuỗi hay không. Điều này sẽ sử dụng hàmPretrainedTokenizerBase.build_inputs_with_special_tokensbên dưới, hàm này xác định các token nào được thêm tự động vào các id đầu vào. Điều này hữu ích nếu bạn muốn thêm các tokenboshoặceosmột cách tự động. - padding (
bool,strhoặc PaddingStrategy, tùy chọn, mặc định làFalse) — Kích hoạt và kiểm soát padding. Chấp nhận các giá trị sau:Truehoặc'longest': Lấp đầy (pad) đến độ dài của chuỗi dài nhất trong batch (hoặc không lấp đầy nếu chỉ cung cấp một chuỗi duy nhất).'max_length': Đệm (pad) đến độ dài tối đa được chỉ định bằng tham sốmax_lengthhoặc đến độ dài đầu vào tối đa mà mô hình chấp nhận được nếu tham số đó không được cung cấp.Falsehoặc'do_not_pad'(mặc định): Không đệm (tức là có thể xuất ra một lô với các chuỗi có độ dài khác nhau).
- truncation (
bool,strhoặc TruncationStrategy, tùy chọn, mặc định làFalse) — Kích hoạt và kiểm soát việc cắt ngắn. Chấp nhận các giá trị sau:Truehoặc'longest_first': Cắt ngắn xuống độ dài tối đa được chỉ định bằng tham sốmax_lengthhoặc xuống độ dài đầu vào tối đa chấp nhận được của mô hình nếu tham số đó không được cung cấp. Thao tác này sẽ cắt ngắn theo từng token, loại bỏ một token từ chuỗi dài nhất trong cặp nếu một cặp chuỗi (hoặc một lô các cặp) được cung cấp.'only_first': Cắt ngắn xuống độ dài tối đa được chỉ định bằng tham sốmax_lengthhoặc xuống độ dài đầu vào tối đa mà mô hình chấp nhận được nếu tham số đó không được cung cấp. Thao tác này chỉ cắt ngắn chuỗi đầu tiên của một cặp nếu một cặp chuỗi (hoặc một lô các cặp) được cung cấp.'only_second': Cắt ngắn xuống độ dài tối đa được chỉ định bằng tham sốmax_lengthhoặc xuống độ dài đầu vào tối đa mà mô hình chấp nhận được nếu tham số đó không được cung cấp. Thao tác này chỉ cắt ngắn chuỗi thứ hai của một cặp nếu một cặp chuỗi (hoặc một lô các cặp) được cung cấp.Falsehoặc'do_not_truncate'(mặc định): Không cắt bớt (tức là có thể xuất ra batch với độ dài chuỗi lớn hơn kích thước đầu vào tối đa cho phép của mô hình).
- max_length (
int, tuỳ chọn) — Kiểm soát độ dài tối đa được sử dụng bởi một trong các tham số cắt/giữ chỗ (truncation/padding).Nếu không được đặt hoặc được đặt thành
None, tham số này sẽ sử dụng độ dài tối đa định trước của mô hình nếu một trong các tham số cắt/giữ chỗ yêu cầu độ dài tối đa. Nếu mô hình không có độ dài đầu vào tối đa cụ thể (như XLNet), việc cắt/giữ chỗ đến độ dài tối đa sẽ bị vô hiệu hóa. - stride (
int, tùy chọn, mặc định là 0) — Nếu được đặt thành một số cùng vớimax_length, các token tràn ra được trả về khireturn_overflowing_tokens=Truesẽ chứa một số token từ cuối của chuỗi bị cắt ngắn được trả về để tạo ra một phần chồng lấn giữa các chuỗi bị cắt ngắn và các chuỗi tràn ra. Giá trị của đối số này xác định số lượng token chồng lấn. - is_split_into_words (
bool, tùy chọn, mặc định làFalse) — Cho biết đầu vào đã được tiền xử lý token hay chưa (ví dụ: đã tách thành các từ). Nếu đặt thànhTrue, bộ phân tích token sẽ giả định rằng đầu vào đã được tách thành các từ (chẳng hạn, bằng cách tách theo khoảng trắng) và sẽ tiến hành phân tích token cho chúng. Điều này hữu ích cho NER hoặc phân loại token. - pad_to_multiple_of (
int, tùy chọn) — Nếu được đặt, chuỗi sẽ được đệm đến một bội số của giá trị được cung cấp. Yêu cầupaddingphải được kích hoạt. Điều này đặc biệt hữu ích để cho phép sử dụng Tensor Cores trên phần cứng NVIDIA có khả năng tính toán>= 7.5(Volta). - padding_side (
str, tùy chọn) — Bên mà mô hình cần được áp dụng padding. Nên chọn giữa [‘right’, ‘left’]. Giá trị mặc định được lấy từ thuộc tính lớp có cùng tên. - return_tensors (
strhoặc TensorType, tùy chọn) — Nếu được đặt, sẽ trả về tensor thay vì danh sách các số nguyên Python. Các giá trị chấp nhận được là:'pt': Trả về các đối tượngtorch.Tensorcủa PyTorch.'np': Trả về các đối tượng Numpynp.ndarray.
- return_token_type_ids (
bool, tuỳ chọn) — Có trả về token type IDs hay không. Nếu để mặc định, sẽ trả về token type IDs theo mặc định của tokenizer cụ thể, được xác định bởi thuộc tínhreturn_outputs. - return_attention_mask (
bool, tuỳ chọn) — Có trả về attention mask hay không. Nếu để mặc định, sẽ trả về attention mask theo mặc định của tokenizer cụ thể, được xác định bởi thuộc tínhreturn_outputs. - return_overflowing_tokens (
bool, tùy chọn, mặc định làFalse) — Có trả về các chuỗi token tràn hay không. Nếu một cặp chuỗi input ids (hoặc một batch các cặp) được cung cấp vớitruncation_strategy = longest_firsthoặcTrue, một lỗi sẽ được ném thay vì trả về các token tràn. - return_special_tokens_mask (
bool, tùy chọn, mặc định làFalse) — Có trả về thông tin mặt nạ (mask) cho các token đặc biệt hay không. - return_offsets_mapping (
bool, tuỳ chọn, mặc định làFalse) — Có trả về(char_start, char_end)cho từng token hay không.Tính năng này chỉ khả dụng trên các bộ phân từ nhanh kế thừa từ PreTrainedTokenizerFast; nếu sử dụng bộ phân từ của Python, phương thức này sẽ gây ra
NotImplementedError. - return_length (
bool, tùy chọn, mặc định làFalse) — Có trả về độ dài của các đầu vào đã mã hóa hay không. - verbose (
bool, tùy chọn, mặc định làTrue) — Có in thêm thông tin và cảnh báo hay không. - **kwargs — được truyền đến phương thức
self.tokenize()
Trả về
Một BatchEncoding với các trường sau:
-
input_ids — Danh sách các id token để đưa vào mô hình.
-
token_type_ids — Danh sách các id loại token để đưa vào mô hình (khi
return_token_type_ids=Truehoặc nếu “token_type_ids” nằm trongself.model_input_names). -
attention_mask — Danh sách các chỉ số chỉ định những token nào nên được mô hình chú ý đến (khi
return_attention_mask=Truehoặc nếu “attention_mask” nằm trongself.model_input_names). -
overflowing_tokens — Danh sách các chuỗi token bị tràn (khi
max_lengthđược chỉ định vàreturn_overflowing_tokens=True). -
num_truncated_tokens — Số lượng token bị cắt bỏ (khi có chỉ định
max_lengthvàreturn_overflowing_tokens=True). -
special_tokens_mask — Danh sách các số 0 và 1, trong đó 1 chỉ định các token đặc biệt được thêm vào và 0 chỉ định các token chuỗi thông thường (khi
add_special_tokens=Truevàreturn_special_tokens_mask=True). -
length — Độ dài của các đầu vào (khi
return_length=True)
Phương thức chính để mã hóa token và chuẩn bị cho mô hình một hoặc nhiều chuỗi, hoặc một hoặc nhiều cặp chuỗi.
add_tokens
< source >( new_tokens: str | AddedToken | Sequence[str | AddedToken]special_tokens: bool = False ) → int
Tham số
- new_tokens (
str,tokenizers.AddedTokenhoặc một chuỗi của str hoặctokenizers.AddedToken) — Các token chỉ được thêm vào nếu chúng chưa có trong từ vựng.tokenizers.AddedTokenbọc một token dạng chuỗi để bạn có thể tùy chỉnh hành vi của nó: liệu token này có nên chỉ khớp với một từ duy nhất hay không, liệu token này có nên loại bỏ tất cả khoảng trắng tiềm năng ở phía bên trái hay không, liệu token này có nên loại bỏ tất cả khoảng trắng tiềm năng ở phía bên phải hay không, v.v. - special_tokens (
bool, tùy chọn, mặc định làFalse) — Chỉ định xem token có phải là token đặc biệt hay không. Điều này chủ yếu thay đổi hành vi chuẩn hóa. Xem chi tiết vềtokenizers.AddedTokentrong thư viện tokenizers của HuggingFace.
Trả về
int
Số lượng token được thêm vào từ vựng.
#TODO xóa dòng này khỏi đây! PreTrainedTokenizerBase nên không phụ thuộc vào AddedToken.
Thêm một danh sách các token mới. Nếu các token mới không có trong từ vựng, chúng sẽ được thêm vào cuối. Do đó, các token được thêm vào và các token từ từ vựng của thuật toán phân tách token không được xử lý theo cùng một cách.
Bộ phân từ nhanh với bộ tiền phân từ
Metaspacesử dụngprepend_scheme="always"(ví dụ: NLLB) sẽ thêm"▁"vào đầu văn bản đi sau một token được thêm vào. Sautokenizer.add_tokens(["abcd"]),"abcdgym"được phân từ thành["abcd", "▁gym"]và giải mã thành"abcd gym". Nếu các token được thêm vào có thể xuất hiện bên trong từ, hãy chuyển bộ tiền phân từthành
prepend_scheme="first"để chỉ phần đầu của đầu vào được thêm tiền tố:from tokenizers import pre_tokenizers pre_tokenizer = tokenizer.backend_tokenizer.pre_tokenizer tokenizer.backend_tokenizer.pre_tokenizer = pre_tokenizers.Metaspace( replacement=pre_tokenizer.replacement, prepend_scheme="first", split=pre_tokenizer.split )
Ví dụ:
# Let's see how to increase the vocabulary of Bert model and tokenizer
tokenizer = BertTokenizerFast.from_pretrained("google-bert/bert-base-uncased")
model = BertModel.from_pretrained("google-bert/bert-base-uncased")
num_added_toks = tokenizer.add_tokens(["new_tok1", "my_new-tok2"])
print("We have added", num_added_toks, "tokens")
# Notice: resize_token_embeddings expect to receive the full size of the new vocabulary, i.e., the length of the tokenizer.
model.resize_token_embeddings(len(tokenizer))add_special_tokens
< source >( special_tokens_dict: dict[str, str | AddedToken | Sequence[str | AddedToken]]replace_extra_special_tokens = True ) → int
Tham số
- special_tokens_dict (từ điển str tới str,
tokenizers.AddedToken, hoặcSequence[Union[str, AddedToken]]) — Các khóa phải nằm trong danh sách các thuộc tính đặc biệt được định nghĩa trước: [bos_token,eos_token,unk_token,sep_token,pad_token,cls_token,mask_token,extra_special_tokens].Các token chỉ được thêm vào nếu chúng chưa có trong bảng từ vựng (được kiểm tra bằng cách xem tokenizer có gán chỉ số của
unk_tokencho chúng hay không). - replace_extra_special_tokens (
bool, tùy chọn, mặc định làTrue) — NếuTrue, danh sách các token đặc biệt bổ sung hiện có sẽ được thay thế bằng danh sách được cung cấp trongspecial_tokens_dict. Ngược lại,extra_special_tokenssẽ được mở rộng. Trong trường hợp trước, các token sẽ KHÔNG bị xóa khỏi từ vựng đầy đủ của tokenizer - chúng chỉ được đánh dấu là các token không đặc biệt. Hãy nhớ rằng, điều này chỉ ảnh hưởng đến việc các token nào bị bỏ qua trong quá trình giải mã, chứ không ảnh hưởng đếnadded_tokens_encodervàadded_tokens_decoder. Điều này có nghĩa là cácextra_special_tokenstrước đó vẫn là các token đã thêm, và sẽ không bị tách bởi mô hình.
Trả về
int
Số lượng token được thêm vào từ vựng.
Thêm một từ điển các token đặc biệt (eos, pad, cls, v.v.) vào encoder và liên kết chúng với các thuộc tính lớp. Nếu các token đặc biệt KHÔNG có trong bảng từ vựng, chúng sẽ được thêm vào (được chỉ mục bắt đầu từ chỉ mục cuối cùng của bảng từ vựng hiện tại).
Khi thêm các token mới vào từ vựng, bạn cần đảm bảo rằng ma trận nhúng token của mô hình cũng được thay đổi kích thước sao cho ma trận nhúng của nó khớp với tokenizer.
Để thực hiện điều đó, vui lòng sử dụng phương thức resize_token_embeddings().
Việc sử dụng add_special_tokens sẽ đảm bảo các token đặc biệt của bạn có thể được sử dụng theo một số cách sau:
- Các token đặc biệt có thể được bỏ qua khi giải mã bằng cách sử dụng
skip_special_tokens = True. - Các token đặc biệt được tokenizer xử lý cẩn thận (chúng không bao giờ bị tách), tương tự như
AddedTokens. - Bạn có thể dễ dàng tham chiếu đến các token đặc biệt bằng cách sử dụng các thuộc tính của lớp tokenizer như
tokenizer.cls_token. Điều này giúp việc phát triển các script huấn luyện và tinh chỉnh không phụ thuộc vào mô hình trở nên dễ dàng hơn.
Khi có thể, các token đặc biệt đã được đăng ký sẵn cho các mô hình được huấn luyện trước (ví dụ BertTokenizer cls_token đã được đăng ký là '[CLS]' và của XLM cũng được đăng ký là '</s>').
Ví dụ:
# Let's see how to add a new classification token to GPT-2
tokenizer = GPT2Tokenizer.from_pretrained("openai-community/gpt2")
model = GPT2Model.from_pretrained("openai-community/gpt2")
special_tokens_dict = {"cls_token": "<CLS>"}
num_added_toks = tokenizer.add_special_tokens(special_tokens_dict)
print("We have added", num_added_toks, "tokens")
# Notice: resize_token_embeddings expect to receive the full size of the new vocabulary, i.e., the length of the tokenizer.
model.resize_token_embeddings(len(tokenizer))
assert tokenizer.cls_token == "<CLS>"apply_chat_template
< source >( conversation: list[dict[str, str]] | list[list[dict[str, str]]]tools: list[dict | Callable] | None = Nonedocuments: list[dict[str, str]] | None = Nonechat_template: str | None = Noneadd_generation_prompt: bool = Falsecontinue_final_message: bool | str = Falsetokenize: bool = Truesanitize_control_tokens: bool = Falsepadding: bool | str | PaddingStrategy = Falsetruncation: bool = Falsemax_length: int | None = Nonereturn_tensors: str | TensorType | None = Nonereturn_dict: bool = Truereturn_assistant_tokens_mask: bool = Falsetokenizer_kwargs: dict[str, Any] | None = None**kwargs ) → Union[list[int], Dict]
Tham số
- conversation (Union[list[dict[str, str]], list[list[dict[str, str]]]]) — Một danh sách các dict có các khóa “role” và “content”, đại diện cho lịch sử trò chuyện cho đến hiện tại.
- tools (
list[Union[Dict, Callable]], tùy chọn) — Một danh sách các công cụ (các hàm có thể gọi) mà mô hình có thể truy cập. Nếu template không hỗ trợ function calling, tham số này sẽ không có hiệu lực. Mỗi công cụ nên được truyền dưới dạng JSON Schema, cung cấp tên, mô tả và kiểu của các tham số cho công cụ đó. Xem hướng dẫn sử dụng công cụ để biết thêm thông tin. - documents (
list[dict[str, str]], tùy chọn) — Một danh sách các dict đại diện cho các tài liệu mà mô hình có thể truy cập nếu nó đang thực hiện RAG (retrieval-augmented generation). Nếu template không hỗ trợ RAG, tham số này sẽ không có tác dụng. Chúng tôi khuyến nghị mỗi tài liệu nên là một dict chứa các khóa “title” và “text”. - chat_template (
str, tùy chọn) — Một mẫu Jinja để sử dụng cho quá trình chuyển đổi này. Thông thường không cần truyền gì cho tham số này, vì mẫu của mô hình sẽ được sử dụng mặc định. - add_generation_prompt (bool, tùy chọn) — Nếu được đặt, một prompt chứa các token chỉ báo hiệu bắt đầu thông điệp của trợ lý sẽ được thêm vào đầu ra đã định dạng. Điều này hữu ích khi bạn muốn tạo phản hồi từ mô hình. Lưu ý rằng đối số này sẽ được truyền vào mẫu chat, do đó mẫu phải hỗ trợ đối số này để nó có hiệu lực.
- continue_final_message (bool or str, tùy chọn) —
Nếu được đặt, cuộc trò chuyện sẽ được định dạng sao cho tin nhắn cuối cùng trong cuộc trò chuyện là mở, không có token EOS nào. Mô hình sẽ tiếp tục tin nhắn này thay vì bắt đầu một tin nhắn mới. Điều này cho phép bạn “tiền nạp” một phần phản hồi của mô hình. Nếu một chuỗi được truyền vào, nó sẽ được dùng làm khóa cho trường cần tiếp tục (ví dụ: “reasoning_content”). Không thể sử dụng đồng thời với
add_generation_prompt. - tokenize (
bool, mặc định làTrue) — Có nên tokenize đầu ra hay không. NếuFalse, đầu ra sẽ là một chuỗi. - sanitize_control_tokens (
bool, mặc định làFalse) — Nếu được đặt, các token điều khiển xuất hiện trong messages, tools hoặc documents sẽ được mã hóa như văn bản thông thường, do đó chỉ các token điều khiển do chính chat template viết ra mới được mã hóa dưới dạng token. Các token điều khiển là các token đặc biệt của tokenizer, cộng với các token đã thêm trongtokenizer.chat_control_tokens. Nếu biến đó không được đặt, các token điều khiển sẽ được suy ra từ các token đã thêm xuất hiện trong văn bản và các chuỗi literal của chat template. Chỉ các token điều khiển hoàn chỉnh mới được làm sạch, vì vậy nếu template nối các chuỗi từ đầu vào thành các token điều khiển (như'<|' + message['role'] + '|>'), những chuỗi đó phải được xác thực riêng biệt. Các key của Dict cũng không được làm sạch. - padding (
bool,strhoặc PaddingStrategy, tùy chọn, mặc định làFalse) — Chọn một chiến lược để đệm các chuỗi trả về (theo phía đệm và chỉ số đệm của mô hình) trong số các lựa chọn sau:Truehoặc'longest': Lấp đầy đến trình tự dài nhất trong lô (hoặc không lấp đầy nếu chỉ có một trình tự được cung cấp).'max_length': Đệm (pad) đến độ dài tối đa được chỉ định bằng tham sốmax_lengthhoặc đến độ dài đầu vào tối đa mà mô hình chấp nhận được nếu tham số đó không được cung cấp.Falsehoặc'do_not_pad'(mặc định): Không đệm (tức là có thể xuất ra một lô với các chuỗi có độ dài khác nhau).
- truncation (
bool, mặc định làFalse) — Có nên cắt chuỗi tại độ dài tối đa hay không. Không có tác dụng nếu tokenize làFalse. - max_length (
int, tùy chọn) — Độ dài tối đa (tính bằng token) để sử dụng cho việc đệm hoặc cắt bớt. Không có tác dụng nếu tokenize làFalse. Nếu không được chỉ định, thuộc tínhmax_lengthcủa tokenizer sẽ được sử dụng làm mặc định. - return_tensors (
strhoặc TensorType, tùy chọn) — Nếu được đặt, sẽ trả về tensor của một framework cụ thể. Không có hiệu lực nếu tokenize làFalse. Các giá trị được chấp nhận là:'pt': Trả về các đối tượngtorch.Tensorcủa PyTorch.'np': Trả về các đối tượngnp.ndarraycủa NumPy.
- return_dict (
bool, mặc định làTrue) — Có nên trả về một từ điển với các đầu ra có tên hay không. Không có tác dụng nếu tokenize làFalse. - tokenizer_kwargs (
dict[str -- Any], tùy chọn): Các tham số bổ sung để truyền cho tokenizer. - return_assistant_tokens_mask (
bool, mặc định làFalse) — Có nên trả về mặt nạ (mask) của các token do trợ lý tạo ra hay không. Đối với các token do trợ lý tạo ra, mặt nạ sẽ chứa giá trị 1. Đối với các token của người dùng và hệ thống, mặt nạ sẽ chứa giá trị 0. Chức năng này chỉ khả dụng cho các mẫu chat (chat template) hỗ trợ nó thông qua từ khóa{% generation %}. - **kwargs — Các kwargs bổ sung để truyền cho trình render template. Chat template sẽ có thể truy cập chúng.
Trả về
Union[list[int], Dict]
Danh sách các id token đại diện cho cuộc trò chuyện đã được token hóa cho đến hiện tại, bao gồm cả các token điều khiển. Đầu ra này sẵn sàng để truyền vào mô hình, trực tiếp hoặc thông qua các phương thức như generate(). Nếu return_dict được đặt, sẽ trả về một dict chứa các đầu ra của tokenizer thay thế.
Chuyển đổi một danh sách các từ điển có các khóa "role" và "content" thành một danh sách các id token. Phương thức này được thiết kế để sử dụng với các mô hình chat, và sẽ đọc thuộc tính chat_template của tokenizer để xác định định dạng và các token điều khiển cần sử dụng khi chuyển đổi.
batch_decode
< source >( sequences: list[int] | list[list[int]] | np.ndarray | torch.Tensorskip_special_tokens: bool = Falseclean_up_tokenization_spaces: bool | None = None**kwargs ) → list[str]
Tham số
- sequences (
Union[list[int], list[list[int]], np.ndarray, torch.Tensor]) — Danh sách các id đầu vào đã được token hóa. Có thể lấy được bằng cách sử dụng phương thức__call__. - skip_special_tokens (
bool, tùy chọn, mặc định làFalse) — Có loại bỏ các token đặc biệt trong quá trình giải mã hay không. - clean_up_tokenization_spaces (
bool, tùy chọn) — Có dọn dẹp khoảng trắng token hóa hay không. Nếu làNone, mặc định sẽ làself.clean_up_tokenization_spaces. - kwargs (các tham số từ khóa bổ sung, tùy chọn) — Sẽ được truyền đến phương thức decode cụ thể của model bên dưới.
Trả về
list[str]
Danh sách các câu đã giải mã.
Chuyển đổi một danh sách các danh sách id token thành một danh sách các chuỗi bằng cách gọi decode.
Phương pháp này được cung cấp để đảm bảo tương thích ngược. Phương pháp decode hiện xử lý đầu vào dạng lô (batched) một cách bản địa,
do đó bạn có thể sử dụng trực tiếp decode thay vì batch_decode.
decode
< source >( token_ids: int | list[int] | list[list[int]] | np.ndarray | torch.Tensorskip_special_tokens: bool = False**kwargs ) → Union[str, list[str]]
Tham số
- token_ids (
Union[int, list[int], list[list[int]], np.ndarray, torch.Tensor]) — Một chuỗi duy nhất hoặc một lô (danh sách các chuỗi) các id đầu vào đã được token hóa. Có thể lấy được bằng cách sử dụng phương thức__call__. - skip_special_tokens (
bool, tùy chọn, mặc định làFalse) — Có loại bỏ các token đặc biệt trong quá trình giải mã hay không. - kwargs (các tham số từ khóa bổ sung, tùy chọn) — Sẽ được truyền đến phương thức decode cụ thể của model bên dưới.
Trả về
Union[str, list[str]]
Chuỗi đã giải mã cho một chuỗi duy nhất, hoặc một danh sách các chuỗi đã giải mã cho một lô các chuỗi.
Chuyển đổi một chuỗi các id thành một chuỗi ký tự, hoặc một danh sách các chuỗi id thành một danh sách các chuỗi ký tự, sử dụng tokenizer và bảng từ vựng với các tùy chọn để loại bỏ các token đặc biệt và dọn dẹp khoảng trắng trong quá trình token hóa.
Tương tự như việc thực hiện self.convert_tokens_to_string(self.convert_ids_to_tokens(token_ids)).
encode
< source >( text: TextInput | PreTokenizedInput | EncodedInputtext_pair: TextInput | PreTokenizedInput | EncodedInput | None = Noneadd_special_tokens: bool = Truepadding: bool | str | PaddingStrategy = Falsetruncation: bool | str | TruncationStrategy | None = Nonemax_length: int | None = Nonestride: int = 0padding_side: str | None = Nonereturn_tensors: str | TensorType | None = None**kwargs ) → list[int], torch.Tensor, or np.ndarray
Tham số
- text (
str,list[str]hoặclist[int]) — Chuỗi đầu tiên cần được mã hóa. Đây có thể là một chuỗi, một danh sách các chuỗi (chuỗi đã được tách token bằng phương thứctokenize) hoặc một danh sách các số nguyên (id của các token đã tách bằng phương thứcconvert_tokens_to_ids). - text_pair (
str,list[str]hoặclist[int], tùy chọn) — Chuỗi thứ hai tùy chọn để mã hóa. Đây có thể là một chuỗi, một danh sách các chuỗi (chuỗi đã được tách token bằng phương thứctokenize) hoặc một danh sách các số nguyên (id của các chuỗi đã được tách token bằng phương thứcconvert_tokens_to_ids). - add_special_tokens (
bool, tùy chọn, mặc định làTrue) — Có thêm các token đặc biệt khi mã hóa các chuỗi hay không. Điều này sẽ sử dụng hàmPretrainedTokenizerBase.build_inputs_with_special_tokensbên dưới, hàm này xác định các token nào được thêm tự động vào các id đầu vào. Điều này hữu ích nếu bạn muốn thêm các tokenboshoặceosmột cách tự động. - padding (
bool,strhoặc PaddingStrategy, tùy chọn, mặc định làFalse) — Kích hoạt và kiểm soát padding. Chấp nhận các giá trị sau:Truehoặc'longest': Lấp đầy (pad) đến độ dài của chuỗi dài nhất trong batch (hoặc không lấp đầy nếu chỉ cung cấp một chuỗi duy nhất).'max_length': Đệm (pad) đến độ dài tối đa được chỉ định bằng tham sốmax_lengthhoặc đến độ dài đầu vào tối đa mà mô hình chấp nhận được nếu tham số đó không được cung cấp.Falsehoặc'do_not_pad'(mặc định): Không đệm (tức là có thể xuất ra một lô với các chuỗi có độ dài khác nhau).
- truncation (
bool,strhoặc TruncationStrategy, tùy chọn, mặc định làFalse) — Kích hoạt và kiểm soát việc cắt ngắn. Chấp nhận các giá trị sau:Truehoặc'longest_first': Cắt ngắn xuống độ dài tối đa được chỉ định bằng tham sốmax_lengthhoặc xuống độ dài đầu vào tối đa chấp nhận được của mô hình nếu tham số đó không được cung cấp. Thao tác này sẽ cắt ngắn theo từng token, loại bỏ một token từ chuỗi dài nhất trong cặp nếu một cặp chuỗi (hoặc một lô các cặp) được cung cấp.'only_first': Cắt ngắn xuống độ dài tối đa được chỉ định bằng tham sốmax_lengthhoặc xuống độ dài đầu vào tối đa mà mô hình chấp nhận được nếu tham số đó không được cung cấp. Thao tác này chỉ cắt ngắn chuỗi đầu tiên của một cặp nếu một cặp chuỗi (hoặc một lô các cặp) được cung cấp.'only_second': Cắt ngắn xuống độ dài tối đa được chỉ định bằng tham sốmax_lengthhoặc xuống độ dài đầu vào tối đa mà mô hình chấp nhận được nếu tham số đó không được cung cấp. Thao tác này chỉ cắt ngắn chuỗi thứ hai của một cặp nếu một cặp chuỗi (hoặc một lô các cặp) được cung cấp.Falsehoặc'do_not_truncate'(mặc định): Không cắt bớt (tức là có thể xuất ra batch với độ dài chuỗi lớn hơn kích thước đầu vào tối đa cho phép của mô hình).
- max_length (
int, tuỳ chọn) — Kiểm soát độ dài tối đa được sử dụng bởi một trong các tham số cắt/giữ chỗ (truncation/padding).Nếu không được đặt hoặc được đặt thành
None, tham số này sẽ sử dụng độ dài tối đa định trước của mô hình nếu một trong các tham số cắt/giữ chỗ yêu cầu độ dài tối đa. Nếu mô hình không có độ dài đầu vào tối đa cụ thể (như XLNet), việc cắt/giữ chỗ đến độ dài tối đa sẽ bị vô hiệu hóa. - stride (
int, tùy chọn, mặc định là 0) — Nếu được đặt thành một số cùng vớimax_length, các token tràn ra được trả về khireturn_overflowing_tokens=Truesẽ chứa một số token từ cuối của chuỗi bị cắt ngắn được trả về để tạo ra một phần chồng lấn giữa các chuỗi bị cắt ngắn và các chuỗi tràn ra. Giá trị của đối số này xác định số lượng token chồng lấn. - is_split_into_words (
bool, tùy chọn, mặc định làFalse) — Cho biết đầu vào đã được tiền xử lý token hay chưa (ví dụ: đã tách thành các từ). Nếu đặt thànhTrue, bộ phân tích token sẽ giả định rằng đầu vào đã được tách thành các từ (chẳng hạn, bằng cách tách theo khoảng trắng) và sẽ tiến hành phân tích token cho chúng. Điều này hữu ích cho NER hoặc phân loại token. - pad_to_multiple_of (
int, tùy chọn) — Nếu được đặt, chuỗi sẽ được đệm đến một bội số của giá trị được cung cấp. Yêu cầupaddingphải được kích hoạt. Điều này đặc biệt hữu ích để cho phép sử dụng Tensor Cores trên phần cứng NVIDIA có khả năng tính toán>= 7.5(Volta). - padding_side (
str, tùy chọn) — Bên mà mô hình cần được áp dụng padding. Nên chọn giữa [‘right’, ‘left’]. Giá trị mặc định được lấy từ thuộc tính lớp có cùng tên. - return_tensors (
strhoặc TensorType, tùy chọn) — Nếu được đặt, sẽ trả về tensor thay vì danh sách các số nguyên Python. Các giá trị chấp nhận được là:'pt': Trả về các đối tượngtorch.Tensorcủa PyTorch.'np': Trả về các đối tượng Numpynp.ndarray.
- **kwargs — Được truyền đến phương thức
.tokenize().
Trả về
list[int], torch.Tensor hoặc np.ndarray
Các id đã được token hóa của văn bản.
Chuyển đổi một chuỗi thành một dãy các id (số nguyên), sử dụng tokenizer và từ điển.
Tương đương với việc thực hiện self.convert_tokens_to_ids(self.tokenize(text)).
push_to_hub
< source >( repo_id: strcommit_message: str | None = Nonecommit_description: str | None = Noneprivate: bool | None = Nonetoken: bool | str | None = Nonerevision: str | None = Nonecreate_pr: bool = Falsemax_shard_size: int | str | None = '50GB'tags: list[str] | None = None )
Tham số
- repo_id (
str) — Tên của kho mà bạn muốn đẩy tokenizer của mình lên. Nó nên chứa tên tổ chức của bạn khi đẩy lên một tổ chức cụ thể. - commit_message (
str, tùy chọn) — Thông điệp để commit khi đẩy. Mặc định là"Upload tokenizer". - commit_description (
str, tùy chọn) — Mô tả của commit sẽ được tạo - private (
bool, optional) — Xác định có làm cho kho (repo) ở chế độ riêng tư hay không. Nếu làNone(mặc định), kho sẽ ở chế độ công khai trừ khi mặc định của tổ chức là riêng tư. Giá trị này bị bỏ qua nếu kho đã tồn tại. - token (
boolhoặcstr, tùy chọn) — Token được sử dụng làm HTTP bearer authorization cho các tệp từ xa. NếuTrue(mặc định), sẽ sử dụng token được tạo ra khi chạyhf auth login(được lưu trong~/.huggingface). - revision (
str, tùy chọn) — Nhánh để đẩy các tệp đã tải lên. - create_pr (
bool, tùy chọn, mặc định làFalse) — Có tạo PR với các tệp đã tải lên hay commit trực tiếp hay không. - max_shard_size (
inthoặcstr, tùy chọn, mặc định là"50GB") — Chỉ áp dụng cho các model. Kích thước tối đa của một checkpoint trước khi được chia shard. Các checkpoint sau khi chia shard sẽ có kích thước nhỏ hơn giá trị này. Nếu được biểu diễn dưới dạng chuỗi, cần là các chữ số theo sau bởi một đơn vị (ví dụ"5MB"). - tags (
list[str], tùy chọn) — Danh sách các thẻ để đẩy lên Hub.
Tải các tệp tokenizer lên 🤗 Model Hub.
Ví dụ:
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("google-bert/bert-base-cased")
# Push the tokenizer to your namespace with the name "my-finetuned-bert".
tokenizer.push_to_hub("my-finetuned-bert")
# Push the tokenizer to an organization with the name "my-finetuned-bert".
tokenizer.push_to_hub("huggingface/my-finetuned-bert")build_inputs_with_special_tokens
< source >( token_ids_0: listtoken_ids_1: list[int] | None = None ) → list[int]
Xây dựng đầu vào mô hình từ một chuỗi hoặc một cặp chuỗi bằng cách thêm các token đặc biệt.
Phương pháp này xây dựng động các đầu vào dựa trên special_tokens_pattern của tokenizer:
"none": Không có token đặc biệt"cls_sep": [CLS] seq0 [SEP] hoặc [CLS] seq0 [SEP] seq1 [SEP]"eos": seq0 [EOS] hoặc seq0 [EOS] seq1 [EOS]"bos": [BOS] seq0 hoặc [BOS] seq0 [BOS] seq1"bos_eos": [BOS] seq0 [EOS] hoặc [BOS] seq0 [EOS] seq1 [EOS]"cls_double_sep": [CLS] seq0 [SEP] hoặc [CLS] seq0 [SEP] [SEP] seq1 [SEP]"prefix_suffix":<prefix_tokens> seq0 [seq1] <suffix_tokens>(tiền tố/hậu tố tùy chỉnh được lưu trên tokenizer)
create_token_type_ids_from_sequences
< source >( token_ids_0: listtoken_ids_1: list[int] | None = None ) → list[int]
Tạo một mask từ hai chuỗi được truyền vào để sử dụng trong một tác vụ phân loại cặp chuỗi.
Phương pháp này xây dựng động các ID loại token dựa trên các thuộc tính cấu hình của tokenizer:
token_type_ids_pattern: Mẫu cần sử dụng (“all_zeros” hoặc “bert_style”)token_type_ids_include_special_tokens: Có tính các token đặc biệt trong tính toán độ dài hay không
Ví dụ:
# All zeros pattern (default, used by RoBERTa, BART, etc.)
tokenizer.token_type_ids_pattern = "all_zeros"
# Returns: [0, 0, 0, ...] for both sequences
# BERT-style pattern (first sequence gets 0s, second gets 1s)
tokenizer.token_type_ids_pattern = "bert_style"
# Returns: [0, 0, 0, ..., 1, 1, 1, ...] for sequence pairsTrả về các token đã thêm trong từ vựng dưới dạng từ điển ánh xạ từ token sang chỉ số. Kết quả có thể khác so với lệnh gọi nhanh vì hiện tại chúng ta luôn thêm các token ngay cả khi chúng đã có trong từ vựng. Đây là điều cần thay đổi.
get_special_tokens_mask
< source >( token_ids_0: listtoken_ids_1: list | None = Nonealready_has_special_tokens: bool = False ) → A list of integers in the range [0, 1]
Tham số
- token_ids_0 (
list[int]) — Danh sách các id của chuỗi đầu tiên. - token_ids_1 (
list[int], tùy chọn) — Danh sách các id của chuỗi thứ hai. - already_has_special_tokens (
bool, tùy chọn, mặc định làFalse) — Danh sách token đã được định dạng với các token đặc biệt cho mô hình hay chưa.
Trả về
Một danh sách các số nguyên trong khoảng [0, 1]
1 cho token đặc biệt, 0 cho token chuỗi.
Lấy các id của chuỗi từ một danh sách token chưa được thêm token đặc biệt. Phương thức này được gọi khi thêm token đặc biệt bằng cách sử dụng các phương thức prepare_for_model hoặc encode_plus của tokenizer.
Phương pháp này xây dựng động mặt nạ các token đặc biệt dựa trên special_tokens_pattern của tokenizer:
"none": Không có token đặc biệt (mặc định, trả về tất cả 0)"cls_sep": [CLS] seq0 [SEP] hoặc [CLS] seq0 [SEP] seq1 [SEP]"eos": seq0 [EOS] hoặc seq0 [EOS] seq1 [EOS]"bos": [BOS] seq0 hoặc [BOS] seq0 [BOS] seq1"bos_eos": [BOS] seq0 [EOS] hoặc [BOS] seq0 [EOS] seq1 [EOS]"cls_double_sep": [CLS] seq0 [SEP] hoặc [CLS] seq0 [SEP] [SEP] seq1 [SEP]"prefix_suffix":<prefix_tokens> seq0 [seq1] <suffix_tokens>
số_token_đặc_biệu_cần_thêm
< source >( pair: bool = False ) → int
Trả về số lượng token được thêm vào khi mã hóa một chuỗi với các token đặc biệt.
Điều này mã hóa một đầu vào giả và kiểm tra số lượng token được thêm vào, do đó không hiệu quả. Không đặt điều này bên trong vòng lặp huấn luyện của bạn.
prepare_for_model
< source >( ids: listpair_ids: list[int] | None = Noneadd_special_tokens: bool = Truepadding: bool | str | transformers.utils.generic.PaddingStrategy = Falsetruncation: bool | str | transformers.tokenization_utils_base.TruncationStrategy = Falsemax_length: int | None = Nonestride: int = 0pad_to_multiple_of: int | None = Nonepadding_side: str | None = Nonereturn_tensors: str | transformers.utils.generic.TensorType | None = Nonereturn_token_type_ids: bool | None = Nonereturn_attention_mask: bool | None = Nonereturn_overflowing_tokens: bool = Falsereturn_special_tokens_mask: bool = Falsereturn_length: bool = Falseverbose: bool = Trueprepend_batch_axis: bool = False**kwargs )
Chuẩn bị một chuỗi các id đầu vào để có thể được sử dụng bởi mô hình. Thêm các token đặc biệt, cắt ngắn và đệm.
prepare_for_tokenization
< source >( text: stris_split_into_words: bool = False**kwargs ) → tuple[str, dict[str, Any]]
Tham số
- text (
str) — Văn bản cần chuẩn bị. - is_split_into_words (
bool, tùy chọn, mặc định làFalse) — Cho biết đầu vào đã được tiền xử lý token hay chưa (ví dụ: đã tách thành các từ). Nếu đặt thànhTrue, bộ phân tích token sẽ giả định rằng đầu vào đã được tách thành các từ (chẳng hạn, bằng cách tách theo khoảng trắng) và sẽ tiến hành phân tích token cho chúng. Điều này hữu ích cho NER hoặc phân loại token. - kwargs (
dict[str, Any], tùy chọn) — Các đối số từ khóa để sử dụng cho việc phân tách token.
Trả về
tuple[str, dict[str, Any]]
Văn bản đã được chuẩn bị và các kwargs chưa được sử dụng.
Thực hiện các phép biến đổi cần thiết trước khi phân tách token.
Phương thức này nên lấy các đối số ra khỏi kwargs và trả về kwargs còn lại. Chúng tôi kiểm tra kwargs vào cuối quá trình mã hóa để đảm bảo tất cả các đối số đã được sử dụng.
save_vocabulary
< source >( save_directory: strfilename_prefix: str | None = None ) → tuple[str, ...]
Thực hiện mặc định cho các mẫu lưu trữ từ vựng phổ biến. Lưu self.encoder/self.vocab dưới dạng JSON, tùy chọn kèm self.bpe_ranks dưới dạng merges. Trả về bộ rỗng nếu không có từ vựng.
Ghi đè phương thức này nếu tokenizer của bạn cần logic lưu trữ tùy chỉnh (ví dụ: mô hình SentencePiece, nhiều tệp từ vựng, hoặc các định dạng tệp đặc biệt).
tokenize
< source >( text: str**kwargs )
Chuyển đổi một chuỗi thành một chuỗi các token, sử dụng tokenizer.
truncate_sequences
< source >( ids: listpair_ids: list[int] | None = Nonenum_tokens_to_remove: int = 0truncation_strategy: str | transformers.tokenization_utils_base.TruncationStrategy = 'longest_first'stride: int = 0 )
Cắt ngắn các chuỗi theo chiến lược được chỉ định.
PreTrainedTokenizerFast
PreTrainedTokenizerFast phụ thuộc vào thư viện tokenizers. Các tokenizer có được từ thư viện 🤗 tokenizers có thể được nạp vào 🤗 transformers một cách rất đơn giản. Hãy xem trang Sử dụng tokenizers từ 🤗 tokenizers để hiểu cách thực hiện điều này.
lớp transformers.TokenizersBackend
< source >( *args**kwargs )
Tham số
- model_max_length (
int, tùy chọn) — Độ dài tối đa (tính bằng số token) cho các đầu vào của mô hình transformer. Khi tokenizer được tải bằng from_pretrained(), giá trị này sẽ được đặt thành giá trị được lưu cho mô hình liên quan trongmax_model_input_sizes(xem ở trên). Nếu không có giá trị nào được cung cấp, mặc định sẽ là VERY_LARGE_INTEGER (int(1e30)). - padding_side (
str, tùy chọn) — Bên mà mô hình cần được áp dụng padding. Nên chọn giữa [‘right’, ‘left’]. Giá trị mặc định được lấy từ thuộc tính lớp có cùng tên. - truncation_side (
str, tùy chọn) — Bên mà mô hình cần áp dụng cắt bớt. Nên chọn giữa [‘right’, ‘left’]. Giá trị mặc định được lấy từ thuộc tính lớp có cùng tên. - chat_template (
str, tùy chọn) — Chuỗi mẫu Jinja sẽ được dùng để định dạng các danh sách tin nhắn chat. Xem https://huggingface.co/docs/transformers/chat_templating để biết mô tả đầy đủ. - model_input_names (
list[string], tùy chọn) — Danh sách các đầu vào được chấp nhận bởi bước truyền trực tiếp (forward pass) của mô hình (ví dụ"token_type_ids"hoặc"attention_mask"). Giá trị mặc định được lấy từ thuộc tính lớp có cùng tên. - bos_token (
strhoặctokenizers.AddedToken, tùy chọn) — Một token đặc biệt đại diện cho đầu câu. - eos_token (
strhoặctokenizers.AddedToken, tùy chọn) — Một token đặc biệt đại diện cho kết thúc của một câu. - unk_token (
strhoặctokenizers.AddedToken, tùy chọn) — Một token đặc biệt đại diện cho một token ngoài từ vựng. - sep_token (
strhoặctokenizers.AddedToken, tùy chọn) — Một token đặc biệt dùng để phân tách hai câu khác nhau trong cùng một đầu vào (ví dụ được BERT sử dụng). - pad_token (
strhoặctokenizers.AddedToken, tùy chọn) — Một token đặc biệt được sử dụng để làm cho các mảng token có cùng kích thước nhằm phục vụ mục đích tạo batch. Sau đó, nó sẽ bị bỏ qua bởi các cơ chế chú ý (attention) hoặc quá trình tính toán loss. - cls_token (
strhoặctokenizers.AddedToken, tùy chọn) — Một token đặc biệt đại diện cho lớp của đầu vào (ví dụ được sử dụng bởi BERT). - mask_token (
strhoặctokenizers.AddedToken, tùy chọn) — Một token đặc biệt đại diện cho một token bị che (được sử dụng bởi các mục tiêu tiền huấn luyện mô hình ngôn ngữ có che, như BERT). Sẽ được liên kết vớiself.mask_tokenvàself.mask_token_id. - extra_special_tokens (list of
strhoặctokenizers.AddedToken, optional) — Một danh sách các token đặc biệt bổ sung dành riêng cho model. Thêm chúng vào đây để đảm bảo chúng bị bỏ qua khi giải mã vớiskip_special_tokensđược đặt thành True. Nếu chúng không thuộc từ vựng, chúng sẽ được thêm vào cuối từ vựng. - split_special_tokens (
bool, tùy chọn, mặc định làFalse) — Xác định xem các token đặc biệt có nên được tách ra trong quá trình tokenization hay không. Việc truyền tham số này sẽ ảnh hưởng đến trạng thái nội bộ của tokenizer. Hành vi mặc định là không tách các token đặc biệt. Điều này có nghĩa là nếu<s>làbos_token, thìtokenizer.tokenize("<s>") = ['<s>]. Ngược lại, nếusplit_special_tokens=True, thìtokenizer.tokenize("<s>")sẽ trả về['<','s', '>']. - tokenizer_object (
tokenizers.Tokenizer) — Một đối tượngtokenizers.Tokenizertừ 🤗 tokenizers để khởi tạo. Xem Sử dụng tokenizers từ 🤗 tokenizers để biết thêm thông tin. - tokenizer_file (
str) — Đường dẫn đến tệp JSON cục bộ đại diện cho một đối tượngtokenizers.Tokenizerđã được serialize trước đó từ 🤗 tokenizers.
Lớp cơ sở cho tất cả các bộ phân từ nhanh (bao bọc thư viện tokenizers của HuggingFace).
Kế thừa từ PreTrainedTokenizerBase.
Xử lý tất cả các phương thức dùng chung cho việc phân tách token và các token đặc biệt, cũng như các phương thức để tải xuống/đặt vào bộ nhớ đệm/tải các bộ phân tách token được huấn luyện trước, cũng như thêm token vào từ vựng.
Lớp này cũng chứa các token được thêm vào theo cách thống nhất trên tất cả các tokenizer, nhờ đó chúng ta không cần phải xử lý các phương pháp bổ sung từ vựng cụ thể của các cấu trúc từ điển cơ bản khác nhau (BPE, sentencepiece…).
Thuộc tính lớp (được ghi đè bởi các lớp kế thừa)
- vocab_files_names (
dict[str, str]) — Một từ điển có các khóa là tên tham số__init__của từng tệp từ vựng mà mô hình yêu cầu, và các giá trị tương ứng là tên tệp để lưu tệp liên quan (chuỗi). - pretrained_vocab_files_map (
dict[str, dict[str, str]]) — Một từ điển của các từ điển, trong đó các khóa cấp cao là tên từ khóa__init__của từng tệp từ vựng cần thiết cho mô hình, các khóa cấp thấp làshort-cut-namescủa các mô hình được huấn luyện trước, với các giá trị liên quan làurlcủa tệp từ vựng được huấn luyện trước tương ứng. - model_input_names (
list[str]) — Danh sách các đầu vào được kỳ vọng trong bước truyền thẳng (forward pass) của mô hình. - padding_side (
str) — Giá trị mặc định cho phía mà mô hình cần được áp dụng padding. Phải là'right'hoặc'left'. - truncation_side (
str) — Giá trị mặc định cho phía mà mô hình cần áp dụng cắt bớt. Phải là'right'hoặc'left'.
__call__
< source >( text: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = Nonetext_pair: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = Nonetext_target: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = Nonetext_pair_target: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = Noneadd_special_tokens: bool = Truepadding: bool | str | PaddingStrategy = Falsetruncation: bool | str | TruncationStrategy | None = Nonemax_length: int | None = Nonestride: int = 0is_split_into_words: bool = Falsepad_to_multiple_of: int | None = Nonepadding_side: str | None = Nonereturn_tensors: str | TensorType | None = Nonereturn_token_type_ids: bool | None = Nonereturn_attention_mask: bool | None = Nonereturn_overflowing_tokens: bool = Falsereturn_special_tokens_mask: bool = Falsereturn_offsets_mapping: bool = Falsereturn_length: bool = Falseverbose: bool = Truetokenizer_kwargs: dict[str, Any] | None = None**kwargs ) → BatchEncoding
Tham số
- text (
str,list[str],list[list[str]], tùy chọn) — Chuỗi hoặc lô các chuỗi cần được mã hóa. Mỗi chuỗi có thể là một chuỗi ký tự hoặc một danh sách các chuỗi ký tự (chuỗi đã được tiền mã hóa). Nếu các chuỗi được cung cấp dưới dạng danh sách các chuỗi ký tự (tiền mã hóa), bạn phải đặtis_split_into_words=True(để loại bỏ sự mơ hồ với một lô các chuỗi). - text_pair (
str,list[str],list[list[str]], tùy chọn) — Chuỗi hoặc lô các chuỗi cần được mã hóa. Mỗi chuỗi có thể là một chuỗi ký tự hoặc một danh sách các chuỗi ký tự (chuỗi đã được tách token trước). Nếu các chuỗi được cung cấp dưới dạng danh sách các chuỗi ký tự (đã tách token trước), bạn phải đặtis_split_into_words=True(để loại bỏ sự mơ hồ với một lô các chuỗi). - text_target (
str,list[str],list[list[str]], tùy chọn) — Chuỗi hoặc lô các chuỗi cần được mã hóa dưới dạng văn bản đích. Mỗi chuỗi có thể là một chuỗi ký tự hoặc một danh sách các chuỗi ký tự (chuỗi đã tách token). Nếu các chuỗi được cung cấp dưới dạng danh sách các chuỗi ký tự (đã tách token), bạn phải đặtis_split_into_words=True(để loại bỏ sự mơ hồ với một lô các chuỗi). - text_pair_target (
str,list[str],list[list[str]], tùy chọn) — Chuỗi hoặc lô các chuỗi cần được mã hóa dưới dạng văn bản đích. Mỗi chuỗi có thể là một chuỗi ký tự hoặc một danh sách các chuỗi ký tự (chuỗi đã tách token). Nếu các chuỗi được cung cấp dưới dạng danh sách các chuỗi ký tự (đã tách token), bạn phải đặtis_split_into_words=True(để loại bỏ sự mơ hồ với một lô các chuỗi). - tokenizer_kwargs (
dict[str, Any], tùy chọn) — Các kwargs bổ sung để truyền cho tokenizer. Chúng sẽ được gộp với các tham số tường minh và các kwargs khác, trong đó các tham số tường minh có độ ưu tiên cao hơn. - add_special_tokens (
bool, tùy chọn, mặc định làTrue) — Có thêm các token đặc biệt khi mã hóa các chuỗi hay không. Điều này sẽ sử dụng hàmPretrainedTokenizerBase.build_inputs_with_special_tokensbên dưới, hàm này xác định các token nào được thêm tự động vào các id đầu vào. Điều này hữu ích nếu bạn muốn thêm các tokenboshoặceosmột cách tự động. - padding (
bool,strhoặc PaddingStrategy, tùy chọn, mặc định làFalse) — Kích hoạt và kiểm soát padding. Chấp nhận các giá trị sau:Truehoặc'longest': Lấp đầy (pad) đến độ dài của chuỗi dài nhất trong batch (hoặc không lấp đầy nếu chỉ cung cấp một chuỗi duy nhất).'max_length': Đệm (pad) đến độ dài tối đa được chỉ định bằng tham sốmax_lengthhoặc đến độ dài đầu vào tối đa mà mô hình chấp nhận được nếu tham số đó không được cung cấp.Falsehoặc'do_not_pad'(mặc định): Không đệm (tức là có thể xuất ra một lô với các chuỗi có độ dài khác nhau).
- truncation (
bool,strhoặc TruncationStrategy, tùy chọn, mặc định làFalse) — Kích hoạt và kiểm soát việc cắt ngắn. Chấp nhận các giá trị sau:Truehoặc'longest_first': Cắt ngắn xuống độ dài tối đa được chỉ định bằng tham sốmax_lengthhoặc xuống độ dài đầu vào tối đa chấp nhận được của mô hình nếu tham số đó không được cung cấp. Thao tác này sẽ cắt ngắn theo từng token, loại bỏ một token từ chuỗi dài nhất trong cặp nếu một cặp chuỗi (hoặc một lô các cặp) được cung cấp.'only_first': Cắt ngắn xuống độ dài tối đa được chỉ định bằng tham sốmax_lengthhoặc xuống độ dài đầu vào tối đa mà mô hình chấp nhận được nếu tham số đó không được cung cấp. Thao tác này chỉ cắt ngắn chuỗi đầu tiên của một cặp nếu một cặp chuỗi (hoặc một lô các cặp) được cung cấp.'only_second': Cắt ngắn xuống độ dài tối đa được chỉ định bằng tham sốmax_lengthhoặc xuống độ dài đầu vào tối đa mà mô hình chấp nhận được nếu tham số đó không được cung cấp. Thao tác này chỉ cắt ngắn chuỗi thứ hai của một cặp nếu một cặp chuỗi (hoặc một lô các cặp) được cung cấp.Falsehoặc'do_not_truncate'(mặc định): Không cắt bớt (tức là có thể xuất ra batch với độ dài chuỗi lớn hơn kích thước đầu vào tối đa cho phép của mô hình).
- max_length (
int, tuỳ chọn) — Kiểm soát độ dài tối đa được sử dụng bởi một trong các tham số cắt/giữ chỗ (truncation/padding).Nếu không được đặt hoặc được đặt thành
None, tham số này sẽ sử dụng độ dài tối đa định trước của mô hình nếu một trong các tham số cắt/giữ chỗ yêu cầu độ dài tối đa. Nếu mô hình không có độ dài đầu vào tối đa cụ thể (như XLNet), việc cắt/giữ chỗ đến độ dài tối đa sẽ bị vô hiệu hóa. - stride (
int, tùy chọn, mặc định là 0) — Nếu được đặt thành một số cùng vớimax_length, các token tràn ra được trả về khireturn_overflowing_tokens=Truesẽ chứa một số token từ cuối của chuỗi bị cắt ngắn được trả về để tạo ra một phần chồng lấn giữa các chuỗi bị cắt ngắn và các chuỗi tràn ra. Giá trị của đối số này xác định số lượng token chồng lấn. - is_split_into_words (
bool, tùy chọn, mặc định làFalse) — Cho biết đầu vào đã được tiền xử lý token hay chưa (ví dụ: đã tách thành các từ). Nếu đặt thànhTrue, bộ phân tích token sẽ giả định rằng đầu vào đã được tách thành các từ (chẳng hạn, bằng cách tách theo khoảng trắng) và sẽ tiến hành phân tích token cho chúng. Điều này hữu ích cho NER hoặc phân loại token. - pad_to_multiple_of (
int, tùy chọn) — Nếu được đặt, chuỗi sẽ được đệm đến một bội số của giá trị được cung cấp. Yêu cầupaddingphải được kích hoạt. Điều này đặc biệt hữu ích để cho phép sử dụng Tensor Cores trên phần cứng NVIDIA có khả năng tính toán>= 7.5(Volta). - padding_side (
str, tùy chọn) — Bên mà mô hình cần được áp dụng padding. Nên chọn giữa [‘right’, ‘left’]. Giá trị mặc định được lấy từ thuộc tính lớp có cùng tên. - return_tensors (
strhoặc TensorType, tùy chọn) — Nếu được đặt, sẽ trả về tensor thay vì danh sách các số nguyên Python. Các giá trị chấp nhận được là:'pt': Trả về các đối tượngtorch.Tensorcủa PyTorch.'np': Trả về các đối tượng Numpynp.ndarray.
- return_token_type_ids (
bool, tuỳ chọn) — Có trả về token type IDs hay không. Nếu để mặc định, sẽ trả về token type IDs theo mặc định của tokenizer cụ thể, được xác định bởi thuộc tínhreturn_outputs. - return_attention_mask (
bool, tuỳ chọn) — Có trả về attention mask hay không. Nếu để mặc định, sẽ trả về attention mask theo mặc định của tokenizer cụ thể, được xác định bởi thuộc tínhreturn_outputs. - return_overflowing_tokens (
bool, tùy chọn, mặc định làFalse) — Có trả về các chuỗi token tràn hay không. Nếu một cặp chuỗi input ids (hoặc một batch các cặp) được cung cấp vớitruncation_strategy = longest_firsthoặcTrue, một lỗi sẽ được ném thay vì trả về các token tràn. - return_special_tokens_mask (
bool, tùy chọn, mặc định làFalse) — Có trả về thông tin mặt nạ (mask) cho các token đặc biệt hay không. - return_offsets_mapping (
bool, tuỳ chọn, mặc định làFalse) — Có trả về(char_start, char_end)cho từng token hay không.Tính năng này chỉ khả dụng trên các bộ phân từ nhanh kế thừa từ PreTrainedTokenizerFast; nếu sử dụng bộ phân từ của Python, phương thức này sẽ gây ra
NotImplementedError. - return_length (
bool, tùy chọn, mặc định làFalse) — Có trả về độ dài của các đầu vào đã mã hóa hay không. - verbose (
bool, tùy chọn, mặc định làTrue) — Có in thêm thông tin và cảnh báo hay không. - **kwargs — được truyền đến phương thức
self.tokenize()
Trả về
Một BatchEncoding với các trường sau:
-
input_ids — Danh sách các id token để đưa vào mô hình.
-
token_type_ids — Danh sách các id loại token để đưa vào mô hình (khi
return_token_type_ids=Truehoặc nếu “token_type_ids” nằm trongself.model_input_names). -
attention_mask — Danh sách các chỉ số chỉ định những token nào nên được mô hình chú ý đến (khi
return_attention_mask=Truehoặc nếu “attention_mask” nằm trongself.model_input_names). -
overflowing_tokens — Danh sách các chuỗi token bị tràn (khi
max_lengthđược chỉ định vàreturn_overflowing_tokens=True). -
num_truncated_tokens — Số lượng token bị cắt bỏ (khi có chỉ định
max_lengthvàreturn_overflowing_tokens=True). -
special_tokens_mask — Danh sách các số 0 và 1, trong đó 1 chỉ định các token đặc biệt được thêm vào và 0 chỉ định các token chuỗi thông thường (khi
add_special_tokens=Truevàreturn_special_tokens_mask=True). -
length — Độ dài của các đầu vào (khi
return_length=True)
Phương thức chính để mã hóa token và chuẩn bị cho mô hình một hoặc nhiều chuỗi, hoặc một hoặc nhiều cặp chuỗi.
add_tokens
< source >( new_tokens: str | AddedToken | Sequence[str | AddedToken]special_tokens: bool = False ) → int
Tham số
- new_tokens (
str,tokenizers.AddedTokenhoặc một chuỗi của str hoặctokenizers.AddedToken) — Các token chỉ được thêm vào nếu chúng chưa có trong từ vựng.tokenizers.AddedTokenbọc một token dạng chuỗi để bạn có thể tùy chỉnh hành vi của nó: liệu token này có nên chỉ khớp với một từ duy nhất hay không, liệu token này có nên loại bỏ tất cả khoảng trắng tiềm năng ở phía bên trái hay không, liệu token này có nên loại bỏ tất cả khoảng trắng tiềm năng ở phía bên phải hay không, v.v. - special_tokens (
bool, tùy chọn, mặc định làFalse) — Chỉ định xem token có phải là token đặc biệt hay không. Điều này chủ yếu thay đổi hành vi chuẩn hóa. Xem chi tiết vềtokenizers.AddedTokentrong thư viện tokenizers của HuggingFace.
Trả về
int
Số lượng token được thêm vào từ vựng.
#TODO xóa dòng này khỏi đây! PreTrainedTokenizerBase nên không phụ thuộc vào AddedToken.
Thêm một danh sách các token mới. Nếu các token mới không có trong từ vựng, chúng sẽ được thêm vào cuối. Do đó, các token được thêm vào và các token từ từ vựng của thuật toán phân tách token không được xử lý theo cùng một cách.
Bộ phân từ nhanh với bộ tiền phân từ
Metaspacesử dụngprepend_scheme="always"(ví dụ: NLLB) sẽ thêm"▁"vào đầu văn bản đi sau một token được thêm vào. Sautokenizer.add_tokens(["abcd"]),"abcdgym"được phân từ thành["abcd", "▁gym"]và giải mã thành"abcd gym". Nếu các token được thêm vào có thể xuất hiện bên trong từ, hãy chuyển bộ tiền phân từthành
prepend_scheme="first"để chỉ phần đầu của đầu vào được thêm tiền tố:from tokenizers import pre_tokenizers pre_tokenizer = tokenizer.backend_tokenizer.pre_tokenizer tokenizer.backend_tokenizer.pre_tokenizer = pre_tokenizers.Metaspace( replacement=pre_tokenizer.replacement, prepend_scheme="first", split=pre_tokenizer.split )
Ví dụ:
# Let's see how to increase the vocabulary of Bert model and tokenizer
tokenizer = BertTokenizerFast.from_pretrained("google-bert/bert-base-uncased")
model = BertModel.from_pretrained("google-bert/bert-base-uncased")
num_added_toks = tokenizer.add_tokens(["new_tok1", "my_new-tok2"])
print("We have added", num_added_toks, "tokens")
# Notice: resize_token_embeddings expect to receive the full size of the new vocabulary, i.e., the length of the tokenizer.
model.resize_token_embeddings(len(tokenizer))add_special_tokens
< source >( special_tokens_dict: dict[str, str | AddedToken | Sequence[str | AddedToken]]replace_extra_special_tokens = True ) → int
Tham số
- special_tokens_dict (từ điển str tới str,
tokenizers.AddedToken, hoặcSequence[Union[str, AddedToken]]) — Các khóa phải nằm trong danh sách các thuộc tính đặc biệt được định nghĩa trước: [bos_token,eos_token,unk_token,sep_token,pad_token,cls_token,mask_token,extra_special_tokens].Các token chỉ được thêm vào nếu chúng chưa có trong bảng từ vựng (được kiểm tra bằng cách xem tokenizer có gán chỉ số của
unk_tokencho chúng hay không). - replace_extra_special_tokens (
bool, tùy chọn, mặc định làTrue) — NếuTrue, danh sách các token đặc biệt bổ sung hiện có sẽ được thay thế bằng danh sách được cung cấp trongspecial_tokens_dict. Ngược lại,extra_special_tokenssẽ được mở rộng. Trong trường hợp trước, các token sẽ KHÔNG bị xóa khỏi từ vựng đầy đủ của tokenizer - chúng chỉ được đánh dấu là các token không đặc biệt. Hãy nhớ rằng, điều này chỉ ảnh hưởng đến việc các token nào bị bỏ qua trong quá trình giải mã, chứ không ảnh hưởng đếnadded_tokens_encodervàadded_tokens_decoder. Điều này có nghĩa là cácextra_special_tokenstrước đó vẫn là các token đã thêm, và sẽ không bị tách bởi mô hình.
Trả về
int
Số lượng token được thêm vào từ vựng.
Thêm một từ điển các token đặc biệt (eos, pad, cls, v.v.) vào encoder và liên kết chúng với các thuộc tính lớp. Nếu các token đặc biệt KHÔNG có trong bảng từ vựng, chúng sẽ được thêm vào (được chỉ mục bắt đầu từ chỉ mục cuối cùng của bảng từ vựng hiện tại).
Khi thêm các token mới vào từ vựng, bạn cần đảm bảo rằng ma trận nhúng token của mô hình cũng được thay đổi kích thước sao cho ma trận nhúng của nó khớp với tokenizer.
Để thực hiện điều đó, vui lòng sử dụng phương thức resize_token_embeddings().
Việc sử dụng add_special_tokens sẽ đảm bảo các token đặc biệt của bạn có thể được sử dụng theo một số cách sau:
- Các token đặc biệt có thể được bỏ qua khi giải mã bằng cách sử dụng
skip_special_tokens = True. - Các token đặc biệt được tokenizer xử lý cẩn thận (chúng không bao giờ bị tách), tương tự như
AddedTokens. - Bạn có thể dễ dàng tham chiếu đến các token đặc biệt bằng cách sử dụng các thuộc tính của lớp tokenizer như
tokenizer.cls_token. Điều này giúp việc phát triển các script huấn luyện và tinh chỉnh không phụ thuộc vào mô hình trở nên dễ dàng hơn.
Khi có thể, các token đặc biệt đã được đăng ký sẵn cho các mô hình được huấn luyện trước (ví dụ BertTokenizer cls_token đã được đăng ký là '[CLS]' và của XLM cũng được đăng ký là '</s>').
Ví dụ:
# Let's see how to add a new classification token to GPT-2
tokenizer = GPT2Tokenizer.from_pretrained("openai-community/gpt2")
model = GPT2Model.from_pretrained("openai-community/gpt2")
special_tokens_dict = {"cls_token": "<CLS>"}
num_added_toks = tokenizer.add_special_tokens(special_tokens_dict)
print("We have added", num_added_toks, "tokens")
# Notice: resize_token_embeddings expect to receive the full size of the new vocabulary, i.e., the length of the tokenizer.
model.resize_token_embeddings(len(tokenizer))
assert tokenizer.cls_token == "<CLS>"apply_chat_template
< source >( conversation: list[dict[str, str]] | list[list[dict[str, str]]]tools: list[dict | Callable] | None = Nonedocuments: list[dict[str, str]] | None = Nonechat_template: str | None = Noneadd_generation_prompt: bool = Falsecontinue_final_message: bool | str = Falsetokenize: bool = Truesanitize_control_tokens: bool = Falsepadding: bool | str | PaddingStrategy = Falsetruncation: bool = Falsemax_length: int | None = Nonereturn_tensors: str | TensorType | None = Nonereturn_dict: bool = Truereturn_assistant_tokens_mask: bool = Falsetokenizer_kwargs: dict[str, Any] | None = None**kwargs ) → Union[list[int], Dict]
Tham số
- conversation (Union[list[dict[str, str]], list[list[dict[str, str]]]]) — Một danh sách các dict có các khóa “role” và “content”, đại diện cho lịch sử trò chuyện cho đến hiện tại.
- tools (
list[Union[Dict, Callable]], tùy chọn) — Một danh sách các công cụ (các hàm có thể gọi) mà mô hình có thể truy cập. Nếu template không hỗ trợ function calling, tham số này sẽ không có hiệu lực. Mỗi công cụ nên được truyền dưới dạng JSON Schema, cung cấp tên, mô tả và kiểu của các tham số cho công cụ đó. Xem hướng dẫn sử dụng công cụ để biết thêm thông tin. - documents (
list[dict[str, str]], tùy chọn) — Một danh sách các dict đại diện cho các tài liệu mà mô hình có thể truy cập nếu nó đang thực hiện RAG (retrieval-augmented generation). Nếu template không hỗ trợ RAG, tham số này sẽ không có tác dụng. Chúng tôi khuyến nghị mỗi tài liệu nên là một dict chứa các khóa “title” và “text”. - chat_template (
str, tùy chọn) — Một mẫu Jinja để sử dụng cho quá trình chuyển đổi này. Thông thường không cần truyền gì cho tham số này, vì mẫu của mô hình sẽ được sử dụng mặc định. - add_generation_prompt (bool, tùy chọn) — Nếu được đặt, một prompt chứa các token chỉ báo hiệu bắt đầu thông điệp của trợ lý sẽ được thêm vào đầu ra đã định dạng. Điều này hữu ích khi bạn muốn tạo phản hồi từ mô hình. Lưu ý rằng đối số này sẽ được truyền vào mẫu chat, do đó mẫu phải hỗ trợ đối số này để nó có hiệu lực.
- continue_final_message (bool or str, tùy chọn) —
Nếu được đặt, cuộc trò chuyện sẽ được định dạng sao cho tin nhắn cuối cùng trong cuộc trò chuyện là mở, không có token EOS nào. Mô hình sẽ tiếp tục tin nhắn này thay vì bắt đầu một tin nhắn mới. Điều này cho phép bạn “tiền nạp” một phần phản hồi của mô hình. Nếu một chuỗi được truyền vào, nó sẽ được dùng làm khóa cho trường cần tiếp tục (ví dụ: “reasoning_content”). Không thể sử dụng đồng thời với
add_generation_prompt. - tokenize (
bool, mặc định làTrue) — Có nên tokenize đầu ra hay không. NếuFalse, đầu ra sẽ là một chuỗi. - sanitize_control_tokens (
bool, mặc định làFalse) — Nếu được đặt, các token điều khiển xuất hiện trong messages, tools hoặc documents sẽ được mã hóa như văn bản thông thường, do đó chỉ các token điều khiển do chính chat template viết ra mới được mã hóa dưới dạng token. Các token điều khiển là các token đặc biệt của tokenizer, cộng với các token đã thêm trongtokenizer.chat_control_tokens. Nếu biến đó không được đặt, các token điều khiển sẽ được suy ra từ các token đã thêm xuất hiện trong văn bản và các chuỗi literal của chat template. Chỉ các token điều khiển hoàn chỉnh mới được làm sạch, vì vậy nếu template nối các chuỗi từ đầu vào thành các token điều khiển (như'<|' + message['role'] + '|>'), những chuỗi đó phải được xác thực riêng biệt. Các key của Dict cũng không được làm sạch. - padding (
bool,strhoặc PaddingStrategy, tùy chọn, mặc định làFalse) — Chọn một chiến lược để đệm các chuỗi trả về (theo phía đệm và chỉ số đệm của mô hình) trong số các lựa chọn sau:Truehoặc'longest': Lấp đầy đến trình tự dài nhất trong lô (hoặc không lấp đầy nếu chỉ có một trình tự được cung cấp).'max_length': Đệm (pad) đến độ dài tối đa được chỉ định bằng tham sốmax_lengthhoặc đến độ dài đầu vào tối đa mà mô hình chấp nhận được nếu tham số đó không được cung cấp.Falsehoặc'do_not_pad'(mặc định): Không đệm (tức là có thể xuất ra một lô với các chuỗi có độ dài khác nhau).
- truncation (
bool, mặc định làFalse) — Có nên cắt chuỗi tại độ dài tối đa hay không. Không có tác dụng nếu tokenize làFalse. - max_length (
int, tùy chọn) — Độ dài tối đa (tính bằng token) để sử dụng cho việc đệm hoặc cắt bớt. Không có tác dụng nếu tokenize làFalse. Nếu không được chỉ định, thuộc tínhmax_lengthcủa tokenizer sẽ được sử dụng làm mặc định. - return_tensors (
strhoặc TensorType, tùy chọn) — Nếu được đặt, sẽ trả về tensor của một framework cụ thể. Không có hiệu lực nếu tokenize làFalse. Các giá trị được chấp nhận là:'pt': Trả về các đối tượngtorch.Tensorcủa PyTorch.'np': Trả về các đối tượngnp.ndarraycủa NumPy.
- return_dict (
bool, mặc định làTrue) — Có nên trả về một từ điển với các đầu ra có tên hay không. Không có tác dụng nếu tokenize làFalse. - tokenizer_kwargs (
dict[str -- Any], tùy chọn): Các tham số bổ sung để truyền cho tokenizer. - return_assistant_tokens_mask (
bool, mặc định làFalse) — Có nên trả về mặt nạ (mask) của các token do trợ lý tạo ra hay không. Đối với các token do trợ lý tạo ra, mặt nạ sẽ chứa giá trị 1. Đối với các token của người dùng và hệ thống, mặt nạ sẽ chứa giá trị 0. Chức năng này chỉ khả dụng cho các mẫu chat (chat template) hỗ trợ nó thông qua từ khóa{% generation %}. - **kwargs — Các kwargs bổ sung để truyền cho trình render template. Chat template sẽ có thể truy cập chúng.
Trả về
Union[list[int], Dict]
Danh sách các id token đại diện cho cuộc trò chuyện đã được token hóa cho đến hiện tại, bao gồm cả các token điều khiển. Đầu ra này sẵn sàng để truyền vào mô hình, trực tiếp hoặc thông qua các phương thức như generate(). Nếu return_dict được đặt, sẽ trả về một dict chứa các đầu ra của tokenizer thay thế.
Chuyển đổi một danh sách các từ điển có các khóa "role" và "content" thành một danh sách các id token. Phương thức này được thiết kế để sử dụng với các mô hình chat, và sẽ đọc thuộc tính chat_template của tokenizer để xác định định dạng và các token điều khiển cần sử dụng khi chuyển đổi.
batch_decode
< source >( sequences: list[int] | list[list[int]] | np.ndarray | torch.Tensorskip_special_tokens: bool = Falseclean_up_tokenization_spaces: bool | None = None**kwargs ) → list[str]
Tham số
- sequences (
Union[list[int], list[list[int]], np.ndarray, torch.Tensor]) — Danh sách các id đầu vào đã được token hóa. Có thể lấy được bằng cách sử dụng phương thức__call__. - skip_special_tokens (
bool, tùy chọn, mặc định làFalse) — Có loại bỏ các token đặc biệt trong quá trình giải mã hay không. - clean_up_tokenization_spaces (
bool, tùy chọn) — Có dọn dẹp khoảng trắng token hóa hay không. Nếu làNone, mặc định sẽ làself.clean_up_tokenization_spaces. - kwargs (các tham số từ khóa bổ sung, tùy chọn) — Sẽ được truyền đến phương thức decode cụ thể của model bên dưới.
Trả về
list[str]
Danh sách các câu đã giải mã.
Chuyển đổi một danh sách các danh sách id token thành một danh sách các chuỗi bằng cách gọi decode.
Phương pháp này được cung cấp để đảm bảo tương thích ngược. Phương pháp decode hiện xử lý đầu vào dạng lô (batched) một cách bản địa,
do đó bạn có thể sử dụng trực tiếp decode thay vì batch_decode.
decode
< source >( token_ids: int | list[int] | list[list[int]] | np.ndarray | torch.Tensorskip_special_tokens: bool = False**kwargs ) → Union[str, list[str]]
Tham số
- token_ids (
Union[int, list[int], list[list[int]], np.ndarray, torch.Tensor]) — Một chuỗi duy nhất hoặc một lô (danh sách các chuỗi) các id đầu vào đã được token hóa. Có thể lấy được bằng cách sử dụng phương thức__call__. - skip_special_tokens (
bool, tùy chọn, mặc định làFalse) — Có loại bỏ các token đặc biệt trong quá trình giải mã hay không. - kwargs (các tham số từ khóa bổ sung, tùy chọn) — Sẽ được truyền đến phương thức decode cụ thể của model bên dưới.
Trả về
Union[str, list[str]]
Chuỗi đã giải mã cho một chuỗi duy nhất, hoặc một danh sách các chuỗi đã giải mã cho một lô các chuỗi.
Chuyển đổi một chuỗi các id thành một chuỗi ký tự, hoặc một danh sách các chuỗi id thành một danh sách các chuỗi ký tự, sử dụng tokenizer và bảng từ vựng với các tùy chọn để loại bỏ các token đặc biệt và dọn dẹp khoảng trắng trong quá trình token hóa.
Tương tự như việc thực hiện self.convert_tokens_to_string(self.convert_ids_to_tokens(token_ids)).
encode
< source >( text: TextInput | PreTokenizedInput | EncodedInputtext_pair: TextInput | PreTokenizedInput | EncodedInput | None = Noneadd_special_tokens: bool = Truepadding: bool | str | PaddingStrategy = Falsetruncation: bool | str | TruncationStrategy | None = Nonemax_length: int | None = Nonestride: int = 0padding_side: str | None = Nonereturn_tensors: str | TensorType | None = None**kwargs ) → list[int], torch.Tensor, or np.ndarray
Tham số
- text (
str,list[str]hoặclist[int]) — Chuỗi đầu tiên cần được mã hóa. Đây có thể là một chuỗi, một danh sách các chuỗi (chuỗi đã được tách token bằng phương thứctokenize) hoặc một danh sách các số nguyên (id của các token đã tách bằng phương thứcconvert_tokens_to_ids). - text_pair (
str,list[str]hoặclist[int], tùy chọn) — Chuỗi thứ hai tùy chọn để mã hóa. Đây có thể là một chuỗi, một danh sách các chuỗi (chuỗi đã được tách token bằng phương thứctokenize) hoặc một danh sách các số nguyên (id của các chuỗi đã được tách token bằng phương thứcconvert_tokens_to_ids). - add_special_tokens (
bool, tùy chọn, mặc định làTrue) — Có thêm các token đặc biệt khi mã hóa các chuỗi hay không. Điều này sẽ sử dụng hàmPretrainedTokenizerBase.build_inputs_with_special_tokensbên dưới, hàm này xác định các token nào được thêm tự động vào các id đầu vào. Điều này hữu ích nếu bạn muốn thêm các tokenboshoặceosmột cách tự động. - padding (
bool,strhoặc PaddingStrategy, tùy chọn, mặc định làFalse) — Kích hoạt và kiểm soát padding. Chấp nhận các giá trị sau:Truehoặc'longest': Lấp đầy (pad) đến độ dài của chuỗi dài nhất trong batch (hoặc không lấp đầy nếu chỉ cung cấp một chuỗi duy nhất).'max_length': Đệm (pad) đến độ dài tối đa được chỉ định bằng tham sốmax_lengthhoặc đến độ dài đầu vào tối đa mà mô hình chấp nhận được nếu tham số đó không được cung cấp.Falsehoặc'do_not_pad'(mặc định): Không đệm (tức là có thể xuất ra một lô với các chuỗi có độ dài khác nhau).
- truncation (
bool,strhoặc TruncationStrategy, tùy chọn, mặc định làFalse) — Kích hoạt và kiểm soát việc cắt ngắn. Chấp nhận các giá trị sau:Truehoặc'longest_first': Cắt ngắn xuống độ dài tối đa được chỉ định bằng tham sốmax_lengthhoặc xuống độ dài đầu vào tối đa chấp nhận được của mô hình nếu tham số đó không được cung cấp. Thao tác này sẽ cắt ngắn theo từng token, loại bỏ một token từ chuỗi dài nhất trong cặp nếu một cặp chuỗi (hoặc một lô các cặp) được cung cấp.'only_first': Cắt ngắn xuống độ dài tối đa được chỉ định bằng tham sốmax_lengthhoặc xuống độ dài đầu vào tối đa mà mô hình chấp nhận được nếu tham số đó không được cung cấp. Thao tác này chỉ cắt ngắn chuỗi đầu tiên của một cặp nếu một cặp chuỗi (hoặc một lô các cặp) được cung cấp.'only_second': Cắt ngắn xuống độ dài tối đa được chỉ định bằng tham sốmax_lengthhoặc xuống độ dài đầu vào tối đa mà mô hình chấp nhận được nếu tham số đó không được cung cấp. Thao tác này chỉ cắt ngắn chuỗi thứ hai của một cặp nếu một cặp chuỗi (hoặc một lô các cặp) được cung cấp.Falsehoặc'do_not_truncate'(mặc định): Không cắt bớt (tức là có thể xuất ra batch với độ dài chuỗi lớn hơn kích thước đầu vào tối đa cho phép của mô hình).
- max_length (
int, tuỳ chọn) — Kiểm soát độ dài tối đa được sử dụng bởi một trong các tham số cắt/giữ chỗ (truncation/padding).Nếu không được đặt hoặc được đặt thành
None, tham số này sẽ sử dụng độ dài tối đa định trước của mô hình nếu một trong các tham số cắt/giữ chỗ yêu cầu độ dài tối đa. Nếu mô hình không có độ dài đầu vào tối đa cụ thể (như XLNet), việc cắt/giữ chỗ đến độ dài tối đa sẽ bị vô hiệu hóa. - stride (
int, tùy chọn, mặc định là 0) — Nếu được đặt thành một số cùng vớimax_length, các token tràn ra được trả về khireturn_overflowing_tokens=Truesẽ chứa một số token từ cuối của chuỗi bị cắt ngắn được trả về để tạo ra một phần chồng lấn giữa các chuỗi bị cắt ngắn và các chuỗi tràn ra. Giá trị của đối số này xác định số lượng token chồng lấn. - is_split_into_words (
bool, tùy chọn, mặc định làFalse) — Cho biết đầu vào đã được tiền xử lý token hay chưa (ví dụ: đã tách thành các từ). Nếu đặt thànhTrue, bộ phân tích token sẽ giả định rằng đầu vào đã được tách thành các từ (chẳng hạn, bằng cách tách theo khoảng trắng) và sẽ tiến hành phân tích token cho chúng. Điều này hữu ích cho NER hoặc phân loại token. - pad_to_multiple_of (
int, tùy chọn) — Nếu được đặt, chuỗi sẽ được đệm đến một bội số của giá trị được cung cấp. Yêu cầupaddingphải được kích hoạt. Điều này đặc biệt hữu ích để cho phép sử dụng Tensor Cores trên phần cứng NVIDIA có khả năng tính toán>= 7.5(Volta). - padding_side (
str, tùy chọn) — Bên mà mô hình cần được áp dụng padding. Nên chọn giữa [‘right’, ‘left’]. Giá trị mặc định được lấy từ thuộc tính lớp có cùng tên. - return_tensors (
strhoặc TensorType, tùy chọn) — Nếu được đặt, sẽ trả về tensor thay vì danh sách các số nguyên Python. Các giá trị chấp nhận được là:'pt': Trả về các đối tượngtorch.Tensorcủa PyTorch.'np': Trả về các đối tượng Numpynp.ndarray.
- **kwargs — Được truyền đến phương thức
.tokenize().
Trả về
list[int], torch.Tensor hoặc np.ndarray
Các id đã được token hóa của văn bản.
Chuyển đổi một chuỗi thành một dãy các id (số nguyên), sử dụng tokenizer và từ điển.
Tương đương với việc thực hiện self.convert_tokens_to_ids(self.tokenize(text)).
push_to_hub
< source >( repo_id: strcommit_message: str | None = Nonecommit_description: str | None = Noneprivate: bool | None = Nonetoken: bool | str | None = Nonerevision: str | None = Nonecreate_pr: bool = Falsemax_shard_size: int | str | None = '50GB'tags: list[str] | None = None )
Tham số
- repo_id (
str) — Tên của kho mà bạn muốn đẩy tokenizer của mình lên. Nó nên chứa tên tổ chức của bạn khi đẩy lên một tổ chức cụ thể. - commit_message (
str, tùy chọn) — Thông điệp để commit khi đẩy. Mặc định là"Upload tokenizer". - commit_description (
str, tùy chọn) — Mô tả của commit sẽ được tạo - private (
bool, optional) — Xác định có làm cho kho (repo) ở chế độ riêng tư hay không. Nếu làNone(mặc định), kho sẽ ở chế độ công khai trừ khi mặc định của tổ chức là riêng tư. Giá trị này bị bỏ qua nếu kho đã tồn tại. - token (
boolhoặcstr, tùy chọn) — Token được sử dụng làm HTTP bearer authorization cho các tệp từ xa. NếuTrue(mặc định), sẽ sử dụng token được tạo ra khi chạyhf auth login(được lưu trong~/.huggingface). - revision (
str, tùy chọn) — Nhánh để đẩy các tệp đã tải lên. - create_pr (
bool, tùy chọn, mặc định làFalse) — Có tạo PR với các tệp đã tải lên hay commit trực tiếp hay không. - max_shard_size (
inthoặcstr, tùy chọn, mặc định là"50GB") — Chỉ áp dụng cho các model. Kích thước tối đa của một checkpoint trước khi được chia shard. Các checkpoint sau khi chia shard sẽ có kích thước nhỏ hơn giá trị này. Nếu được biểu diễn dưới dạng chuỗi, cần là các chữ số theo sau bởi một đơn vị (ví dụ"5MB"). - tags (
list[str], tùy chọn) — Danh sách các thẻ để đẩy lên Hub.
Tải các tệp tokenizer lên 🤗 Model Hub.
Ví dụ:
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("google-bert/bert-base-cased")
# Push the tokenizer to your namespace with the name "my-finetuned-bert".
tokenizer.push_to_hub("my-finetuned-bert")
# Push the tokenizer to an organization with the name "my-finetuned-bert".
tokenizer.push_to_hub("huggingface/my-finetuned-bert")Xây dựng backend tokenizers.Tokenizer từ các tệp phân tích chuỗi có sẵn (tokenizer.json, mô hình sentencepiece, tekken.json, vocab/merges).
Trả về các token đã thêm trong từ vựng dưới dạng từ điển ánh xạ từ token sang chỉ số.
số_token_đặc_biệu_cần_thêm
< source >( pair: bool = False ) → int
Trả về số lượng token được thêm vào khi mã hóa một chuỗi với các token đặc biệt.
Điều này mã hóa một đầu vào giả và kiểm tra số lượng token được thêm vào, do đó không hiệu quả. Không đặt điều này bên trong vòng lặp huấn luyện của bạn.
save_pretrained
< source >( save_directory: str | os.PathLikelegacy_format: bool | None = Nonefilename_prefix: str | None = Nonepush_to_hub: bool = Falsesave_format: str | None = None**kwargs ) → A tuple of str
Tham số
- save_format (
str, tùy chọn) —"mistral"để lưu dưới dạngtekken.jsonbản địa bằng cách sao chép tệp gốc (yêu cầu tệp từ vựng tekken gốc phải khả dụng). Tên sẽ được chuẩn hóa thànhtekken.jsonkhi lưu, và tokenizer được khởi tạo vẫn phải khớp chính xác với nó."hf"hoặcNonecho định dạng HuggingFace mặc định. - kwargs (
dict[str, Any], tùy chọn) — Các đối số từ khóa bổ sung được truyền đến phương thức push_to_hub().
Trả về
Một tuple của str
Các tệp đã được lưu.
Lưu trạng thái tokenizer đầy đủ.
Mở rộng save_pretrained() với hỗ trợ save_format, dành cho các tokenizer được chuyển đổi từ tệp từ điển gốc (ví dụ: tekken.json của Mistral). Xem phương thức cơ sở để biết về legacy_format, filename_prefix và push_to_hub.
set_truncation_and_padding
< source >( padding_strategy: PaddingStrategytruncation_strategy: TruncationStrategymax_length: intstride: intpad_to_multiple_of: int | Nonepadding_side: str | None )
Tham số
- padding_strategy (PaddingStrategy) — Loại padding sẽ được áp dụng cho đầu vào
- truncation_strategy (TruncationStrategy) — Loại cắt ngắn sẽ được áp dụng cho đầu vào
- max_length (
int) — Kích thước tối đa của một chuỗi. - stride (
int) — Bước nhảy (stride) được sử dụng khi xử lý tràn (overflow). - pad_to_multiple_of (
int, tùy chọn) — Nếu được đặt, chuỗi sẽ được đệm đến một bội số của giá trị được cung cấp. Điều này đặc biệt hữu ích để cho phép sử dụng Tensor Cores trên phần cứng NVIDIA có khả năng tính toán>= 7.5(Volta). - padding_side (
str, tùy chọn) — Bên mà mô hình cần được áp dụng padding. Nên chọn giữa [‘right’, ‘left’]. Giá trị mặc định được lấy từ thuộc tính lớp có cùng tên.
Định nghĩa các chiến lược cắt ngắn và đệm cho bộ phân từ nhanh (được cung cấp bởi thư viện HuggingFace tokenizers) và khôi phục cài đặt của bộ phân từ sau đó.
Tokenizer được cung cấp không có chiến lược padding / truncation trước phần được quản lý. Nếu tokenizer của bạn đã thiết lập chiến lược padding / truncation trước đó, chiến lược này sẽ được đặt lại về không có padding / truncation khi thoát khỏi phần được quản lý.
train_new_from_iterator
< source >( text_iteratorvocab_sizelength = Nonenew_special_tokens = Nonespecial_tokens_map = None**kwargs ) → PreTrainedTokenizerFast
Tham số
- text_iterator (generator của
list[str]) — Tập dữ liệu huấn luyện. Nên là một generator của các batch văn bản, ví dụ một list của các list văn bản nếu bạn có toàn bộ dữ liệu trong bộ nhớ. - vocab_size (
int) — Kích thước của bảng từ vựng mà bạn muốn cho bộ phân từ của mình. - length (
int, tùy chọn) — Tổng số chuỗi trong bộ lặp. Giá trị này được dùng để theo dõi tiến độ một cách có ý nghĩa - new_special_tokens (list of
strorAddedToken, tuỳ chọn) — Danh sách các token đặc biệt mới cần thêm vào tokenizer bạn đang huấn luyện. - special_tokens_map (
dict[str, str], tùy chọn) — Nếu bạn muốn đổi tên một số token đặc biệt mà tokenizer này sử dụng, hãy truyền vào một ánh xạ từ tên token đặc biệt cũ sang tên token đặc biệt mới trong tham số này. - kwargs (
dict[str, Any], tùy chọn) — Các đối số từ khóa bổ sung được truyền cho trainer từ thư viện 🤗 Tokenizers.
Trả về
Một tokenizer mới cùng loại với tokenizer gốc, được huấn luyện trên
text_iterator.
Đào tạo một tokenizer trên một tập dữ liệu mới với các cài đặt mặc định (về các token đặc biệt hoặc pipeline phân tách token) giống như tokenizer hiện tại.
Cập nhật bộ xử lý hậu xử lý (post processor) bên dưới với bos_token và eos_token hiện tại.
PythonBackend
lớp transformers.PythonBackend
< source >( **kwargs )
Tham số
- model_max_length (
int, tùy chọn) — Độ dài tối đa (tính bằng số token) cho các đầu vào của mô hình transformer. Khi tokenizer được tải bằng from_pretrained(), giá trị này sẽ được đặt thành giá trị được lưu cho mô hình liên quan trongmax_model_input_sizes(xem ở trên). Nếu không có giá trị nào được cung cấp, mặc định sẽ là VERY_LARGE_INTEGER (int(1e30)). - padding_side (
str, tùy chọn) — Bên mà mô hình cần được áp dụng padding. Nên chọn giữa [‘right’, ‘left’]. Giá trị mặc định được lấy từ thuộc tính lớp có cùng tên. - truncation_side (
str, tùy chọn) — Bên mà mô hình cần áp dụng cắt bớt. Nên chọn giữa [‘right’, ‘left’]. Giá trị mặc định được lấy từ thuộc tính lớp có cùng tên. - chat_template (
str, tùy chọn) — Chuỗi mẫu Jinja sẽ được dùng để định dạng các danh sách tin nhắn chat. Xem https://huggingface.co/docs/transformers/chat_templating để biết mô tả đầy đủ. - model_input_names (
list[string], tùy chọn) — Danh sách các đầu vào được chấp nhận bởi bước truyền trực tiếp (forward pass) của mô hình (ví dụ"token_type_ids"hoặc"attention_mask"). Giá trị mặc định được lấy từ thuộc tính lớp có cùng tên. - bos_token (
strhoặctokenizers.AddedToken, tùy chọn) — Một token đặc biệt đại diện cho đầu câu. - eos_token (
strhoặctokenizers.AddedToken, tùy chọn) — Một token đặc biệt đại diện cho kết thúc của một câu. - unk_token (
strhoặctokenizers.AddedToken, tùy chọn) — Một token đặc biệt đại diện cho một token ngoài từ vựng. - sep_token (
strhoặctokenizers.AddedToken, tùy chọn) — Một token đặc biệt dùng để phân tách hai câu khác nhau trong cùng một đầu vào (ví dụ được BERT sử dụng). - pad_token (
strhoặctokenizers.AddedToken, tùy chọn) — Một token đặc biệt được sử dụng để làm cho các mảng token có cùng kích thước nhằm phục vụ mục đích tạo batch. Sau đó, nó sẽ bị bỏ qua bởi các cơ chế chú ý (attention) hoặc quá trình tính toán loss. - cls_token (
strhoặctokenizers.AddedToken, tùy chọn) — Một token đặc biệt đại diện cho lớp của đầu vào (ví dụ được sử dụng bởi BERT). - mask_token (
strhoặctokenizers.AddedToken, tùy chọn) — Một token đặc biệt đại diện cho một token bị che (được sử dụng bởi các mục tiêu tiền huấn luyện mô hình ngôn ngữ có che, như BERT). Sẽ được liên kết vớiself.mask_tokenvàself.mask_token_id. - extra_special_tokens (list of
strhoặctokenizers.AddedToken, optional) — Một danh sách các token đặc biệt bổ sung dành riêng cho model. Thêm chúng vào đây để đảm bảo chúng bị bỏ qua khi giải mã vớiskip_special_tokensđược đặt thành True. Nếu chúng không thuộc từ vựng, chúng sẽ được thêm vào cuối từ vựng. - split_special_tokens (
bool, tùy chọn, mặc định làFalse) — Xác định xem các token đặc biệt có nên được tách ra trong quá trình tokenization hay không. Việc truyền tham số này sẽ ảnh hưởng đến trạng thái nội bộ của tokenizer. Hành vi mặc định là không tách các token đặc biệt. Điều này có nghĩa là nếu<s>làbos_token, thìtokenizer.tokenize("<s>") = ['<s>]. Ngược lại, nếusplit_special_tokens=True, thìtokenizer.tokenize("<s>")sẽ trả về['<','s', '>'].
Lớp cơ sở cho tất cả các tokenizer chậm.
Kế thừa từ PreTrainedTokenizerBase.
Xử lý tất cả các phương thức dùng chung cho việc phân tách token và các token đặc biệt, cũng như các phương thức tải xuống/đặt vào bộ nhớ đệm/tải các bộ phân tách token được huấn luyện trước, cũng như thêm token vào từ vựng.
Lớp này cũng chứa các token được thêm vào theo cách thống nhất trên tất cả các tokenizer, nhờ đó chúng ta không cần phải xử lý các phương pháp bổ sung từ vựng cụ thể của các cấu trúc từ điển cơ bản khác nhau (BPE, sentencepiece…).
Thuộc tính lớp (được ghi đè bởi các lớp kế thừa)
- vocab_files_names (
dict[str, str]) — Một từ điển có các khóa là tên tham số__init__của từng tệp từ vựng mà mô hình yêu cầu, và các giá trị tương ứng là tên tệp để lưu tệp liên quan (chuỗi). - pretrained_vocab_files_map (
dict[str, dict[str, str]]) — Một từ điển của các từ điển, trong đó các khóa cấp cao là tên từ khóa__init__của từng tệp từ vựng cần thiết cho mô hình, các khóa cấp thấp làshort-cut-namescủa các mô hình được huấn luyện trước, với các giá trị liên quan làurlcủa tệp từ vựng được huấn luyện trước tương ứng. - model_input_names (
list[str]) — Danh sách các đầu vào được kỳ vọng trong bước truyền thẳng (forward pass) của mô hình. - padding_side (
str) — Giá trị mặc định cho phía mà mô hình cần được áp dụng padding. Phải là'right'hoặc'left'. - truncation_side (
str) — Giá trị mặc định cho phía mà mô hình cần áp dụng cắt bớt. Phải là'right'hoặc'left'.
build_inputs_with_special_tokens
< source >( token_ids_0: listtoken_ids_1: list[int] | None = None ) → list[int]
Xây dựng đầu vào mô hình từ một chuỗi hoặc một cặp chuỗi bằng cách thêm các token đặc biệt.
Phương pháp này xây dựng động các đầu vào dựa trên special_tokens_pattern của tokenizer:
"none": Không có token đặc biệt"cls_sep": [CLS] seq0 [SEP] hoặc [CLS] seq0 [SEP] seq1 [SEP]"eos": seq0 [EOS] hoặc seq0 [EOS] seq1 [EOS]"bos": [BOS] seq0 hoặc [BOS] seq0 [BOS] seq1"bos_eos": [BOS] seq0 [EOS] hoặc [BOS] seq0 [EOS] seq1 [EOS]"cls_double_sep": [CLS] seq0 [SEP] hoặc [CLS] seq0 [SEP] [SEP] seq1 [SEP]"prefix_suffix":<prefix_tokens> seq0 [seq1] <suffix_tokens>(tiền tố/hậu tố tùy chỉnh được lưu trên tokenizer)
create_token_type_ids_from_sequences
< source >( token_ids_0: listtoken_ids_1: list[int] | None = None ) → list[int]
Tạo một mask từ hai chuỗi được truyền vào để sử dụng trong một tác vụ phân loại cặp chuỗi.
Phương pháp này xây dựng động các ID loại token dựa trên các thuộc tính cấu hình của tokenizer:
token_type_ids_pattern: Mẫu cần sử dụng (“all_zeros” hoặc “bert_style”)token_type_ids_include_special_tokens: Có tính các token đặc biệt trong tính toán độ dài hay không
Ví dụ:
# All zeros pattern (default, used by RoBERTa, BART, etc.)
tokenizer.token_type_ids_pattern = "all_zeros"
# Returns: [0, 0, 0, ...] for both sequences
# BERT-style pattern (first sequence gets 0s, second gets 1s)
tokenizer.token_type_ids_pattern = "bert_style"
# Returns: [0, 0, 0, ..., 1, 1, 1, ...] for sequence pairsTrả về các token đã thêm trong từ vựng dưới dạng từ điển ánh xạ từ token sang chỉ số. Kết quả có thể khác so với lệnh gọi nhanh vì hiện tại chúng ta luôn thêm các token ngay cả khi chúng đã có trong từ vựng. Đây là điều cần thay đổi.
get_special_tokens_mask
< source >( token_ids_0: listtoken_ids_1: list | None = Nonealready_has_special_tokens: bool = False ) → A list of integers in the range [0, 1]
Tham số
- token_ids_0 (
list[int]) — Danh sách các id của chuỗi đầu tiên. - token_ids_1 (
list[int], tùy chọn) — Danh sách các id của chuỗi thứ hai. - already_has_special_tokens (
bool, tùy chọn, mặc định làFalse) — Danh sách token đã được định dạng với các token đặc biệt cho mô hình hay chưa.
Trả về
Một danh sách các số nguyên trong khoảng [0, 1]
1 cho token đặc biệt, 0 cho token chuỗi.
Lấy các id của chuỗi từ một danh sách token chưa được thêm token đặc biệt. Phương thức này được gọi khi thêm token đặc biệt bằng cách sử dụng các phương thức prepare_for_model hoặc encode_plus của tokenizer.
Phương pháp này xây dựng động mặt nạ các token đặc biệt dựa trên special_tokens_pattern của tokenizer:
"none": Không có token đặc biệt (mặc định, trả về tất cả 0)"cls_sep": [CLS] seq0 [SEP] hoặc [CLS] seq0 [SEP] seq1 [SEP]"eos": seq0 [EOS] hoặc seq0 [EOS] seq1 [EOS]"bos": [BOS] seq0 hoặc [BOS] seq0 [BOS] seq1"bos_eos": [BOS] seq0 [EOS] hoặc [BOS] seq0 [EOS] seq1 [EOS]"cls_double_sep": [CLS] seq0 [SEP] hoặc [CLS] seq0 [SEP] [SEP] seq1 [SEP]"prefix_suffix":<prefix_tokens> seq0 [seq1] <suffix_tokens>
số_token_đặc_biệu_cần_thêm
< source >( pair: bool = False ) → int
Trả về số lượng token được thêm vào khi mã hóa một chuỗi với các token đặc biệt.
Điều này mã hóa một đầu vào giả và kiểm tra số lượng token được thêm vào, do đó không hiệu quả. Không đặt điều này bên trong vòng lặp huấn luyện của bạn.
prepare_for_model
< source >( ids: listpair_ids: list[int] | None = Noneadd_special_tokens: bool = Truepadding: bool | str | transformers.utils.generic.PaddingStrategy = Falsetruncation: bool | str | transformers.tokenization_utils_base.TruncationStrategy = Falsemax_length: int | None = Nonestride: int = 0pad_to_multiple_of: int | None = Nonepadding_side: str | None = Nonereturn_tensors: str | transformers.utils.generic.TensorType | None = Nonereturn_token_type_ids: bool | None = Nonereturn_attention_mask: bool | None = Nonereturn_overflowing_tokens: bool = Falsereturn_special_tokens_mask: bool = Falsereturn_length: bool = Falseverbose: bool = Trueprepend_batch_axis: bool = False**kwargs )
Chuẩn bị một chuỗi các id đầu vào để có thể được sử dụng bởi mô hình. Thêm các token đặc biệt, cắt ngắn và đệm.
prepare_for_tokenization
< source >( text: stris_split_into_words: bool = False**kwargs ) → tuple[str, dict[str, Any]]
Tham số
- text (
str) — Văn bản cần chuẩn bị. - is_split_into_words (
bool, tùy chọn, mặc định làFalse) — Cho biết đầu vào đã được tiền xử lý token hay chưa (ví dụ: đã tách thành các từ). Nếu đặt thànhTrue, bộ phân tích token sẽ giả định rằng đầu vào đã được tách thành các từ (chẳng hạn, bằng cách tách theo khoảng trắng) và sẽ tiến hành phân tích token cho chúng. Điều này hữu ích cho NER hoặc phân loại token. - kwargs (
dict[str, Any], tùy chọn) — Các đối số từ khóa để sử dụng cho việc phân tách token.
Trả về
tuple[str, dict[str, Any]]
Văn bản đã được chuẩn bị và các kwargs chưa được sử dụng.
Thực hiện các phép biến đổi cần thiết trước khi phân tách token.
Phương thức này nên lấy các đối số ra khỏi kwargs và trả về kwargs còn lại. Chúng tôi kiểm tra kwargs vào cuối quá trình mã hóa để đảm bảo tất cả các đối số đã được sử dụng.
save_vocabulary
< source >( save_directory: strfilename_prefix: str | None = None ) → tuple[str, ...]
Thực hiện mặc định cho các mẫu lưu trữ từ vựng phổ biến. Lưu self.encoder/self.vocab dưới dạng JSON, tùy chọn kèm self.bpe_ranks dưới dạng merges. Trả về bộ rỗng nếu không có từ vựng.
Ghi đè phương thức này nếu tokenizer của bạn cần logic lưu trữ tùy chỉnh (ví dụ: mô hình SentencePiece, nhiều tệp từ vựng, hoặc các định dạng tệp đặc biệt).
tokenize
< source >( text: str**kwargs )
Chuyển đổi một chuỗi thành một chuỗi các token, sử dụng tokenizer.
truncate_sequences
< source >( ids: listpair_ids: list[int] | None = Nonenum_tokens_to_remove: int = 0truncation_strategy: str | transformers.tokenization_utils_base.TruncationStrategy = 'longest_first'stride: int = 0 )
Cắt ngắn các chuỗi theo chiến lược được chỉ định.
TokenizersBackend
lớp transformers.TokenizersBackend
< source >( *args**kwargs )
Tham số
- model_max_length (
int, tùy chọn) — Độ dài tối đa (tính bằng số token) cho các đầu vào của mô hình transformer. Khi tokenizer được tải bằng from_pretrained(), giá trị này sẽ được đặt thành giá trị được lưu cho mô hình liên quan trongmax_model_input_sizes(xem ở trên). Nếu không có giá trị nào được cung cấp, mặc định sẽ là VERY_LARGE_INTEGER (int(1e30)). - padding_side (
str, tùy chọn) — Bên mà mô hình cần được áp dụng padding. Nên chọn giữa [‘right’, ‘left’]. Giá trị mặc định được lấy từ thuộc tính lớp có cùng tên. - truncation_side (
str, tùy chọn) — Bên mà mô hình cần áp dụng cắt bớt. Nên chọn giữa [‘right’, ‘left’]. Giá trị mặc định được lấy từ thuộc tính lớp có cùng tên. - chat_template (
str, tùy chọn) — Chuỗi mẫu Jinja sẽ được dùng để định dạng các danh sách tin nhắn chat. Xem https://huggingface.co/docs/transformers/chat_templating để biết mô tả đầy đủ. - model_input_names (
list[string], tùy chọn) — Danh sách các đầu vào được chấp nhận bởi bước truyền trực tiếp (forward pass) của mô hình (ví dụ"token_type_ids"hoặc"attention_mask"). Giá trị mặc định được lấy từ thuộc tính lớp có cùng tên. - bos_token (
strhoặctokenizers.AddedToken, tùy chọn) — Một token đặc biệt đại diện cho đầu câu. - eos_token (
strhoặctokenizers.AddedToken, tùy chọn) — Một token đặc biệt đại diện cho kết thúc của một câu. - unk_token (
strhoặctokenizers.AddedToken, tùy chọn) — Một token đặc biệt đại diện cho một token ngoài từ vựng. - sep_token (
strhoặctokenizers.AddedToken, tùy chọn) — Một token đặc biệt dùng để phân tách hai câu khác nhau trong cùng một đầu vào (ví dụ được BERT sử dụng). - pad_token (
strhoặctokenizers.AddedToken, tùy chọn) — Một token đặc biệt được sử dụng để làm cho các mảng token có cùng kích thước nhằm phục vụ mục đích tạo batch. Sau đó, nó sẽ bị bỏ qua bởi các cơ chế chú ý (attention) hoặc quá trình tính toán loss. - cls_token (
strhoặctokenizers.AddedToken, tùy chọn) — Một token đặc biệt đại diện cho lớp của đầu vào (ví dụ được sử dụng bởi BERT). - mask_token (
strhoặctokenizers.AddedToken, tùy chọn) — Một token đặc biệt đại diện cho một token bị che (được sử dụng bởi các mục tiêu tiền huấn luyện mô hình ngôn ngữ có che, như BERT). Sẽ được liên kết vớiself.mask_tokenvàself.mask_token_id. - extra_special_tokens (list of
strhoặctokenizers.AddedToken, optional) — Một danh sách các token đặc biệt bổ sung dành riêng cho model. Thêm chúng vào đây để đảm bảo chúng bị bỏ qua khi giải mã vớiskip_special_tokensđược đặt thành True. Nếu chúng không thuộc từ vựng, chúng sẽ được thêm vào cuối từ vựng. - split_special_tokens (
bool, tùy chọn, mặc định làFalse) — Xác định xem các token đặc biệt có nên được tách ra trong quá trình tokenization hay không. Việc truyền tham số này sẽ ảnh hưởng đến trạng thái nội bộ của tokenizer. Hành vi mặc định là không tách các token đặc biệt. Điều này có nghĩa là nếu<s>làbos_token, thìtokenizer.tokenize("<s>") = ['<s>]. Ngược lại, nếusplit_special_tokens=True, thìtokenizer.tokenize("<s>")sẽ trả về['<','s', '>']. - tokenizer_object (
tokenizers.Tokenizer) — Một đối tượngtokenizers.Tokenizertừ 🤗 tokenizers để khởi tạo. Xem Sử dụng tokenizers từ 🤗 tokenizers để biết thêm thông tin. - tokenizer_file (
str) — Đường dẫn đến tệp JSON cục bộ đại diện cho một đối tượngtokenizers.Tokenizerđã được serialize trước đó từ 🤗 tokenizers.
Lớp cơ sở cho tất cả các bộ phân từ nhanh (bao bọc thư viện tokenizers của HuggingFace).
Kế thừa từ PreTrainedTokenizerBase.
Xử lý tất cả các phương thức dùng chung cho việc phân tách token và các token đặc biệt, cũng như các phương thức để tải xuống/đặt vào bộ nhớ đệm/tải các bộ phân tách token được huấn luyện trước, cũng như thêm token vào từ vựng.
Lớp này cũng chứa các token được thêm vào theo cách thống nhất trên tất cả các tokenizer, nhờ đó chúng ta không cần phải xử lý các phương pháp bổ sung từ vựng cụ thể của các cấu trúc từ điển cơ bản khác nhau (BPE, sentencepiece…).
Thuộc tính lớp (được ghi đè bởi các lớp kế thừa)
- vocab_files_names (
dict[str, str]) — Một từ điển có các khóa là tên tham số__init__của từng tệp từ vựng mà mô hình yêu cầu, và các giá trị tương ứng là tên tệp để lưu tệp liên quan (chuỗi). - pretrained_vocab_files_map (
dict[str, dict[str, str]]) — Một từ điển của các từ điển, trong đó các khóa cấp cao là tên từ khóa__init__của từng tệp từ vựng cần thiết cho mô hình, các khóa cấp thấp làshort-cut-namescủa các mô hình được huấn luyện trước, với các giá trị liên quan làurlcủa tệp từ vựng được huấn luyện trước tương ứng. - model_input_names (
list[str]) — Danh sách các đầu vào được kỳ vọng trong bước truyền thẳng (forward pass) của mô hình. - padding_side (
str) — Giá trị mặc định cho phía mà mô hình cần được áp dụng padding. Phải là'right'hoặc'left'. - truncation_side (
str) — Giá trị mặc định cho phía mà mô hình cần áp dụng cắt bớt. Phải là'right'hoặc'left'.
Xây dựng backend tokenizers.Tokenizer từ các tệp phân tích chuỗi có sẵn (tokenizer.json, mô hình sentencepiece, tekken.json, vocab/merges).
Trả về các token đã thêm trong từ vựng dưới dạng từ điển ánh xạ từ token sang chỉ số.
số_token_đặc_biệu_cần_thêm
< source >( pair: bool = False ) → int
Trả về số lượng token được thêm vào khi mã hóa một chuỗi với các token đặc biệt.
Điều này mã hóa một đầu vào giả và kiểm tra số lượng token được thêm vào, do đó không hiệu quả. Không đặt điều này bên trong vòng lặp huấn luyện của bạn.
save_pretrained
< source >( save_directory: str | os.PathLikelegacy_format: bool | None = Nonefilename_prefix: str | None = Nonepush_to_hub: bool = Falsesave_format: str | None = None**kwargs ) → A tuple of str
Tham số
- save_format (
str, tùy chọn) —"mistral"để lưu dưới dạngtekken.jsonbản địa bằng cách sao chép tệp gốc (yêu cầu tệp từ vựng tekken gốc phải khả dụng). Tên sẽ được chuẩn hóa thànhtekken.jsonkhi lưu, và tokenizer được khởi tạo vẫn phải khớp chính xác với nó."hf"hoặcNonecho định dạng HuggingFace mặc định. - kwargs (
dict[str, Any], tùy chọn) — Các đối số từ khóa bổ sung được truyền đến phương thức push_to_hub().
Trả về
Một tuple của str
Các tệp đã được lưu.
Lưu trạng thái tokenizer đầy đủ.
Mở rộng save_pretrained() với hỗ trợ save_format, dành cho các tokenizer được chuyển đổi từ tệp từ điển gốc (ví dụ: tekken.json của Mistral). Xem phương thức cơ sở để biết về legacy_format, filename_prefix và push_to_hub.
set_truncation_and_padding
< source >( padding_strategy: PaddingStrategytruncation_strategy: TruncationStrategymax_length: intstride: intpad_to_multiple_of: int | Nonepadding_side: str | None )
Tham số
- padding_strategy (PaddingStrategy) — Loại padding sẽ được áp dụng cho đầu vào
- truncation_strategy (TruncationStrategy) — Loại cắt ngắn sẽ được áp dụng cho đầu vào
- max_length (
int) — Kích thước tối đa của một chuỗi. - stride (
int) — Bước nhảy (stride) được sử dụng khi xử lý tràn (overflow). - pad_to_multiple_of (
int, tùy chọn) — Nếu được đặt, chuỗi sẽ được đệm đến một bội số của giá trị được cung cấp. Điều này đặc biệt hữu ích để cho phép sử dụng Tensor Cores trên phần cứng NVIDIA có khả năng tính toán>= 7.5(Volta). - padding_side (
str, tùy chọn) — Bên mà mô hình cần được áp dụng padding. Nên chọn giữa [‘right’, ‘left’]. Giá trị mặc định được lấy từ thuộc tính lớp có cùng tên.
Định nghĩa các chiến lược cắt ngắn và đệm cho bộ phân từ nhanh (được cung cấp bởi thư viện HuggingFace tokenizers) và khôi phục cài đặt của bộ phân từ sau đó.
Tokenizer được cung cấp không có chiến lược padding / truncation trước phần được quản lý. Nếu tokenizer của bạn đã thiết lập chiến lược padding / truncation trước đó, chiến lược này sẽ được đặt lại về không có padding / truncation khi thoát khỏi phần được quản lý.
train_new_from_iterator
< source >( text_iteratorvocab_sizelength = Nonenew_special_tokens = Nonespecial_tokens_map = None**kwargs ) → PreTrainedTokenizerFast
Tham số
- text_iterator (generator của
list[str]) — Tập dữ liệu huấn luyện. Nên là một generator của các batch văn bản, ví dụ một list của các list văn bản nếu bạn có toàn bộ dữ liệu trong bộ nhớ. - vocab_size (
int) — Kích thước của bảng từ vựng mà bạn muốn cho bộ phân từ của mình. - length (
int, tùy chọn) — Tổng số chuỗi trong bộ lặp. Giá trị này được dùng để theo dõi tiến độ một cách có ý nghĩa - new_special_tokens (list of
strorAddedToken, tuỳ chọn) — Danh sách các token đặc biệt mới cần thêm vào tokenizer bạn đang huấn luyện. - special_tokens_map (
dict[str, str], tùy chọn) — Nếu bạn muốn đổi tên một số token đặc biệt mà tokenizer này sử dụng, hãy truyền vào một ánh xạ từ tên token đặc biệt cũ sang tên token đặc biệt mới trong tham số này. - kwargs (
dict[str, Any], tùy chọn) — Các đối số từ khóa bổ sung được truyền cho trainer từ thư viện 🤗 Tokenizers.
Trả về
Một tokenizer mới cùng loại với tokenizer gốc, được huấn luyện trên
text_iterator.
Đào tạo một tokenizer trên một tập dữ liệu mới với các cài đặt mặc định (về các token đặc biệt hoặc pipeline phân tách token) giống như tokenizer hiện tại.
Cập nhật bộ xử lý hậu xử lý (post processor) bên dưới với bos_token và eos_token hiện tại.
SentencePieceBackend
lớp transformers.SentencePieceBackend
< source >( **kwargs )
Tham số
- model_max_length (
int, tùy chọn) — Độ dài tối đa (tính bằng số token) cho các đầu vào của mô hình transformer. Khi tokenizer được tải bằng from_pretrained(), giá trị này sẽ được đặt thành giá trị được lưu cho mô hình liên quan trongmax_model_input_sizes(xem ở trên). Nếu không có giá trị nào được cung cấp, mặc định sẽ là VERY_LARGE_INTEGER (int(1e30)). - padding_side (
str, tùy chọn) — Bên mà mô hình cần được áp dụng padding. Nên chọn giữa [‘right’, ‘left’]. Giá trị mặc định được lấy từ thuộc tính lớp có cùng tên. - truncation_side (
str, tùy chọn) — Bên mà mô hình cần áp dụng cắt bớt. Nên chọn giữa [‘right’, ‘left’]. Giá trị mặc định được lấy từ thuộc tính lớp có cùng tên. - chat_template (
str, tùy chọn) — Chuỗi mẫu Jinja sẽ được dùng để định dạng các danh sách tin nhắn chat. Xem https://huggingface.co/docs/transformers/chat_templating để biết mô tả đầy đủ. - model_input_names (
list[string], tùy chọn) — Danh sách các đầu vào được chấp nhận bởi bước truyền trực tiếp (forward pass) của mô hình (ví dụ"token_type_ids"hoặc"attention_mask"). Giá trị mặc định được lấy từ thuộc tính lớp có cùng tên. - bos_token (
strhoặctokenizers.AddedToken, tùy chọn) — Một token đặc biệt đại diện cho đầu câu. - eos_token (
strhoặctokenizers.AddedToken, tùy chọn) — Một token đặc biệt đại diện cho kết thúc của một câu. - unk_token (
strhoặctokenizers.AddedToken, tùy chọn) — Một token đặc biệt đại diện cho một token ngoài từ vựng. - sep_token (
strhoặctokenizers.AddedToken, tùy chọn) — Một token đặc biệt dùng để phân tách hai câu khác nhau trong cùng một đầu vào (ví dụ được BERT sử dụng). - pad_token (
strhoặctokenizers.AddedToken, tùy chọn) — Một token đặc biệt được sử dụng để làm cho các mảng token có cùng kích thước nhằm phục vụ mục đích tạo batch. Sau đó, nó sẽ bị bỏ qua bởi các cơ chế chú ý (attention) hoặc quá trình tính toán loss. - cls_token (
strhoặctokenizers.AddedToken, tùy chọn) — Một token đặc biệt đại diện cho lớp của đầu vào (ví dụ được sử dụng bởi BERT). - mask_token (
strhoặctokenizers.AddedToken, tùy chọn) — Một token đặc biệt đại diện cho một token bị che (được sử dụng bởi các mục tiêu tiền huấn luyện mô hình ngôn ngữ có che, như BERT). Sẽ được liên kết vớiself.mask_tokenvàself.mask_token_id. - extra_special_tokens (list of
strhoặctokenizers.AddedToken, optional) — Một danh sách các token đặc biệt bổ sung dành riêng cho model. Thêm chúng vào đây để đảm bảo chúng bị bỏ qua khi giải mã vớiskip_special_tokensđược đặt thành True. Nếu chúng không thuộc từ vựng, chúng sẽ được thêm vào cuối từ vựng. - split_special_tokens (
bool, tùy chọn, mặc định làFalse) — Xác định xem các token đặc biệt có nên được tách ra trong quá trình tokenization hay không. Việc truyền tham số này sẽ ảnh hưởng đến trạng thái nội bộ của tokenizer. Hành vi mặc định là không tách các token đặc biệt. Điều này có nghĩa là nếu<s>làbos_token, thìtokenizer.tokenize("<s>") = ['<s>]. Ngược lại, nếusplit_special_tokens=True, thìtokenizer.tokenize("<s>")sẽ trả về['<','s', '>'].
Lớp cơ sở cho các bộ phân từ dựa trên SentencePiece, được nạp từ các tệp sentencepiece.model.
Kế thừa từ PreTrainedTokenizer.
Xử lý tất cả các phương thức dùng chung cho việc phân tách token và các token đặc biệt, cũng như các phương thức tải xuống/đặt vào bộ nhớ đệm/tải các bộ phân tách token được huấn luyện trước, cũng như thêm token vào từ vựng.
Lớp này cũng chứa các token được thêm vào theo cách thống nhất trên tất cả các tokenizer, nhờ đó chúng ta không cần phải xử lý các phương pháp bổ sung từ vựng cụ thể của các cấu trúc từ điển cơ bản khác nhau (BPE, sentencepiece…).
Thuộc tính lớp (được ghi đè bởi các lớp kế thừa)
- vocab_files_names (
dict[str, str]) — Một từ điển có các khóa là tên tham số__init__của từng tệp từ vựng mà mô hình yêu cầu, và các giá trị tương ứng là tên tệp để lưu tệp liên quan (chuỗi). - pretrained_vocab_files_map (
dict[str, dict[str, str]]) — Một từ điển của các từ điển, trong đó các khóa cấp cao là tên từ khóa__init__của từng tệp từ vựng cần thiết cho mô hình, các khóa cấp thấp làshort-cut-namescủa các mô hình được huấn luyện trước, với các giá trị liên quan làurlcủa tệp từ vựng được huấn luyện trước tương ứng. - model_input_names (
list[str]) — Danh sách các đầu vào được kỳ vọng trong bước truyền thẳng (forward pass) của mô hình. - padding_side (
str) — Giá trị mặc định cho phía mà mô hình cần được áp dụng padding. Phải là'right'hoặc'left'. - truncation_side (
str) — Giá trị mặc định cho phía mà mô hình cần áp dụng cắt bớt. Phải là'right'hoặc'left'.
Chuyển đổi một chuỗi các token (chuỗi ký tự) trong một chuỗi duy nhất.
Trả về từ điển (vocab) dưới dạng dict
save_vocabulary
< source >( save_directory: strfilename_prefix: str | None = None ) → tuple(str)
Lưu từ vựng sentencepiece (sao chép tệp gốc) vào một thư mục.
BatchEncoding
lớp transformers.BatchEncoding
< source >( data: dict[str, Any] | None = Noneencoding: EncodingFast | Sequence[EncodingFast] | None = Nonetensor_type: None | str | TensorType = Noneprepend_batch_axis: bool = Falsen_sequences: int | None = None )
Tham số
- data (
dict, tùy chọn) — Từ điển chứa các danh sách/mảng/tensor được trả về bởi các phương thức__call__/encode_plus/batch_encode_plus(‘input_ids’, ‘attention_mask’, v.v.). - encoding (
tokenizers.EncodinghoặcSequence[tokenizers.Encoding], không bắt buộc) — Nếu tokenizer là fast tokenizer có xuất ra thêm thông tin như ánh xạ từ không gian từ/ký tự sang không gian token thì instancetokenizers.Encodinghoặc danh sách các instance (cho các batch) sẽ chứa thông tin này. - tensor_type (
Union[None, str, TensorType], tùy chọn) — Bạn có thể cung cấp tensor_type tại đây để chuyển đổi các danh sách số nguyên trong Tensor PyTorch/Numpy khi khởi tạo. - prepend_batch_axis (
bool, tùy chọn, mặc định làFalse) — Có thêm một trục batch khi chuyển đổi sang tensor hay không (xemtensor_typeở trên). Lưu ý rằng tham số này chỉ có hiệu lực nếu tham sốtensor_typeđược đặt, ngược lại thì không có hiệu lực. - n_sequences (
Optional[int], tùy chọn) — Số lượng chuỗi đầu vào được biểu diễn bởi mỗi mã hóa (Nonecho trường hợp không xác định,1cho một chuỗi đơn và2cho một cặp chuỗi).
Chứa kết quả đầu ra của call(), ~tokenization_utils_base.PreTrainedTokenizerBase.encode_plus và ~tokenization_utils_base.PreTrainedTokenizerBase.batch_encode_plus (tokens, attention_masks, v.v.).
Lớp này được kế thừa từ một từ điển python và có thể được sử dụng như một từ điển. Ngoài ra, lớp này còn cung cấp các phương tiện tiện ích để ánh xạ từ không gian từ/ký tự sang không gian token.
char_to_token
< source >( batch_or_char_index: intchar_index: int | None = Nonesequence_index: int = 0 ) → int
Tham số
- batch_or_char_index (
int) — Chỉ số của chuỗi trong batch. Nếu batch chỉ bao gồm một chuỗi, đây có thể là chỉ số của ký tự trong chuỗi - char_index (
int, tùy chọn) — Nếu một chỉ số batch được cung cấp trong batch_or_char_index, đây có thể là chỉ số của ký tự trong chuỗi. - sequence_index (
int, tuỳ chọn, mặc định là 0) — Nếu một cặp chuỗi được mã hóa trong batch, tham số này có thể được dùng để chỉ định chuỗi nào trong cặp (0 hoặc 1) mà chỉ số ký tự được cung cấp thuộc về.
Trả về
int
Chỉ số của token, hoặc None nếu chỉ số ký tự tham chiếu đến một token chỉ chứa khoảng trắng và khoảng trắng đã được cắt bỏ với trim_offsets=True.
Lấy chỉ số của token trong đầu ra đã mã hóa, bao gồm một ký tự trong chuỗi gốc, cho một chuỗi của lô.
Có thể được gọi như sau:
self.char_to_token(char_index)nếu kích thước lô là 1self.char_to_token(batch_index, char_index)nếu kích thước lô lớn hơn hoặc bằng 1
Phương pháp này đặc biệt phù hợp khi các chuỗi đầu vào được cung cấp dưới dạng các chuỗi đã được token hóa sẵn (tức là các từ được định nghĩa bởi người dùng). Trong trường hợp này, nó cho phép dễ dàng liên kết các token đã mã hóa với các từ đã được token hóa được cung cấp.
char_to_word
< source >( batch_or_char_index: intchar_index: int | None = Nonesequence_index: int = 0 ) → int
Tham số
- batch_or_char_index (
int) — Chỉ số của chuỗi trong batch. Nếu batch chỉ bao gồm một chuỗi, đây có thể là chỉ số của ký tự trong chuỗi gốc. - char_index (
int, tùy chọn) — Nếu một chỉ số batch được cung cấp trong batch_or_char_index, đây có thể là chỉ số của ký tự trong chuỗi gốc. - sequence_index (
int, tuỳ chọn, mặc định là 0) — Nếu một cặp chuỗi được mã hóa trong batch, tham số này có thể được dùng để chỉ định chuỗi nào trong cặp (0 hoặc 1) mà chỉ số ký tự được cung cấp thuộc về.
Trả về
int
Chỉ số của từ chứa ký tự.
Lấy từ trong chuỗi gốc tương ứng với một ký tự trong chuỗi gốc của một chuỗi trong lô.
Có thể được gọi như sau:
self.char_to_word(char_index)nếu kích thước lô là 1self.char_to_word(batch_index, char_index)nếu kích thước lô lớn hơn 1
Phương pháp này đặc biệt phù hợp khi các chuỗi đầu vào được cung cấp dưới dạng các chuỗi đã được token hóa sẵn (tức là các từ được định nghĩa bởi người dùng). Trong trường hợp này, nó cho phép dễ dàng liên kết các token đã mã hóa với các từ đã được token hóa được cung cấp.
convert_to_tensors
< source >( tensor_type: str | TensorType | None = Noneprepend_batch_axis: bool = False )
Tham số
- tensor_type (
strhoặc TensorType, tuỳ chọn) — Loại tensor cần sử dụng. Nếu làstr, phải là một trong các giá trị của enum TensorType. Nếu làNone, sẽ không thực hiện thay đổi nào. - prepend_batch_axis (
bool, tùy chọn, mặc định làFalse) — Có thêm chiều batch trong quá trình chuyển đổi hay không.
Chuyển đổi nội dung bên trong thành các tensor.
sequence_ids
< source >( batch_index: int = 0 ) → list[Optional[int]]
Tham số
Trả về
list[Optional[int]]
Một danh sách chỉ định id của chuỗi tương ứng với mỗi token. Các token đặc biệt được thêm bởi tokenizer được ánh xạ tới None và các token khác được ánh xạ tới chỉ số của chuỗi tương ứng của chúng.
Trả về một danh sách ánh xạ các token đến id của câu gốc tương ứng:
Nonecho các token đặc biệt được thêm xung quanh hoặc giữa các chuỗi,0cho các token tương ứng với các từ trong chuỗi thứ nhất,1cho các token tương ứng với các từ trong chuỗi thứ hai khi một cặp chuỗi được mã hóa cùng nhau.
đến
< source >( device: str | torch.device | intnon_blocking: bool = False ) → BatchEncoding
Gửi tất cả các giá trị đến thiết bị bằng cách gọi v.to(device, non_blocking=non_blocking) (chỉ PyTorch).
token_to_chars
< source >( batch_or_token_index: inttoken_index: int | None = None ) → CharSpan
Tham số
- batch_or_token_index (
int) — Chỉ số của chuỗi trong batch. Nếu batch chỉ bao gồm một chuỗi, đây có thể là chỉ số của token trong chuỗi. - token_index (
int, tùy chọn) — Nếu một chỉ số batch được cung cấp trong batch_or_token_index, đây có thể là chỉ số của token hoặc các token trong chuỗi.
Trả về
Khoảng các ký tự trong chuỗi gốc, hoặc None, nếu token
(ví dụ , ) không tương ứng với bất kỳ ký tự nào trong chuỗi gốc.
Lấy khoảng ký tự tương ứng với một token đã mã hóa trong một chuỗi của lô.
Các khoảng ký tự được trả về dưới dạng CharSpan với:
- start — Chỉ số của ký tự đầu tiên trong chuỗi gốc liên quan đến token.
- end — Chỉ số của ký tự ngay sau ký tự cuối cùng trong chuỗi gốc liên quan đến token.
Có thể được gọi như sau:
self.token_to_chars(token_index)nếu kích thước lô là 1self.token_to_chars(batch_index, token_index)nếu kích thước batch lớn hơn hoặc bằng 1
token_to_sequence
< source >( batch_or_token_index: inttoken_index: int | None = None ) → int
Tham số
- batch_or_token_index (
int) — Chỉ số của chuỗi trong batch. Nếu batch chỉ bao gồm một chuỗi, đây có thể là chỉ số của token trong chuỗi. - token_index (
int, tùy chọn) — Nếu một chỉ số batch được cung cấp trong batch_or_token_index, đây có thể là chỉ số của token trong chuỗi.
Trả về
int
Chỉ số của chuỗi đầu vào chứa token (0 cho chuỗi đầu tiên hoặc 1 cho chuỗi thứ hai của một cặp).
Lấy chỉ số của chuỗi được đại diện bởi token cho trước. Trong trường hợp sử dụng chung, phương thức này trả về 0 cho một chuỗi đơn hoặc chuỗi đầu tiên của một cặp, và 1 cho chuỗi thứ hai của cặp
Có thể được gọi như sau:
self.token_to_sequence(token_index)nếu kích thước lô là 1self.token_to_sequence(batch_index, token_index)nếu kích thước batch lớn hơn 1
Phương pháp này đặc biệt phù hợp khi các chuỗi đầu vào được cung cấp dưới dạng các chuỗi đã được token hóa sẵn (tức là các từ được định nghĩa bởi người dùng). Trong trường hợp này, nó cho phép dễ dàng liên kết các token đã mã hóa với các từ đã được token hóa được cung cấp.
token_to_word
< source >( batch_or_token_index: inttoken_index: int | None = None ) → int
Tham số
- batch_or_token_index (
int) — Chỉ số của chuỗi trong batch. Nếu batch chỉ bao gồm một chuỗi, đây có thể là chỉ số của token trong chuỗi. - token_index (
int, tùy chọn) — Nếu một chỉ số batch được cung cấp trong batch_or_token_index, đây có thể là chỉ số của token trong chuỗi.
Trả về
int
Chỉ số của từ trong chuỗi đầu vào.
Lấy chỉ số của từ tương ứng (tức là bao gồm) với một token đã mã hóa trong một chuỗi của batch.
Có thể được gọi như sau:
self.token_to_word(token_index)nếu kích thước lô là 1self.token_to_word(batch_index, token_index)nếu kích thước batch lớn hơn 1
Phương pháp này đặc biệt phù hợp khi các chuỗi đầu vào được cung cấp dưới dạng các chuỗi đã được token hóa sẵn (tức là các từ được định nghĩa bởi người dùng). Trong trường hợp này, nó cho phép dễ dàng liên kết các token đã mã hóa với các từ đã được token hóa được cung cấp.
token
< source >( batch_index: int = 0 ) → list[str]
Trả về danh sách các token (các phần con của chuỗi đầu vào sau khi tách từ/từ con và trước khi chuyển đổi thành chỉ số nguyên) tại một chỉ số batch cho trước (chỉ hoạt động với đầu ra của một bộ phân từ nhanh).
word_ids
< source >( batch_index: int = 0 ) → list[Optional[int]]
Tham số
Trả về
list[Optional[int]]
Một danh sách chỉ ra từ tương ứng với mỗi token. Các token đặc biệt được thêm bởi tokenizer được ánh xạ tới None và các token khác được ánh xạ tới chỉ số của từ tương ứng của chúng (nhiều token sẽ được ánh xạ tới cùng một chỉ số từ nếu chúng là các phần của từ đó).
Trả về một danh sách ánh xạ các token đến từ thực tế của chúng trong câu ban đầu đối với một bộ phân từ nhanh.
word_to_chars
< source >( batch_or_word_index: intword_index: int | None = Nonesequence_index: int = 0 ) → CharSpan
Tham số
- batch_or_word_index (
int) — Chỉ số của chuỗi trong batch. Nếu batch chỉ bao gồm một chuỗi, đây có thể là chỉ số của từ trong chuỗi - word_index (
int, tùy chọn) — Nếu một chỉ số lô được cung cấp trong batch_or_word_index, đây có thể là chỉ số của từ trong chuỗi. - sequence_index (
int, tùy chọn, mặc định là 0) — Nếu một cặp chuỗi được mã hóa trong batch, tham số này có thể được dùng để chỉ định chuỗi nào trong cặp (0 hoặc 1) mà chỉ số từ được cung cấp thuộc về.
Trả về
CharSpan
Phạm vi của ký tự hoặc các ký tự liên quan trong chuỗi. CharSpan là một NamedTuple có:
- start: chỉ số của ký tự đầu tiên liên quan đến từ trong chuỗi gốc
- end: chỉ số của ký tự ngay sau ký tự cuối cùng liên quan đến từ trong chuỗi gốc
Lấy khoảng ký tự trong chuỗi gốc tương ứng với từ đã cho trong một chuỗi của lô.
Các khoảng ký tự được trả về dưới dạng CharSpan NamedTuple với:
- start: chỉ số của ký tự đầu tiên trong chuỗi gốc
- end: chỉ số của ký tự ngay sau ký tự cuối cùng trong chuỗi gốc
Có thể được gọi như sau:
self.word_to_chars(word_index)nếu kích thước lô là 1self.word_to_chars(batch_index, word_index)nếu kích thước batch lớn hơn hoặc bằng 1
word_to_tokens
< source >( batch_or_word_index: intword_index: int | None = Nonesequence_index: int = 0 ) → (TokenSpan, optional)
Tham số
- batch_or_word_index (
int) — Chỉ số của chuỗi trong batch. Nếu batch chỉ bao gồm một chuỗi, đây có thể là chỉ số của từ trong chuỗi. - word_index (
int, tùy chọn) — Nếu một chỉ số lô được cung cấp trong batch_or_word_index, đây có thể là chỉ số của từ trong chuỗi. - sequence_index (
int, tùy chọn, mặc định là 0) — Nếu một cặp chuỗi được mã hóa trong batch, tham số này có thể được dùng để chỉ định chuỗi nào trong cặp (0 hoặc 1) mà chỉ số từ được cung cấp thuộc về.
Trả về
(TokenSpan, tùy chọn)
Phạm vi các token trong chuỗi đã mã hóa. Trả về
None nếu không có token nào tương ứng với từ. Điều này có thể xảy ra đặc biệt khi token là một token đặc biệt
được sử dụng để định dạng quá trình token hóa. Ví dụ, khi chúng ta thêm một token lớp ở ngay đầu
của quá trình token hóa.
Lấy khoảng token đã mã hóa tương ứng với một từ trong một chuỗi của lô.
Các khoảng token được trả về dưới dạng TokenSpan với:
- start — Chỉ số của token đầu tiên.
- end — Chỉ số của token tiếp theo sau token cuối cùng.
Có thể được gọi như sau:
self.word_to_tokens(word_index, sequence_index: int = 0)nếu kích thước lô là 1self.word_to_tokens(batch_index, word_index, sequence_index: int = 0)nếu kích thước lô lớn hơn hoặc bằng 1
Phương pháp này đặc biệt phù hợp khi các chuỗi đầu vào được cung cấp dưới dạng các chuỗi đã được token hóa sẵn (tức là các từ được định nghĩa bởi người dùng). Trong trường hợp này, nó cho phép dễ dàng liên kết các token đã mã hóa với các từ đã được token hóa được cung cấp.