Transformers documentation
Công cụ cho bộ mã hóa
Công cụ cho bộ mã hóa
Trang này liệt kê tất cả các hàm tiện ích được sử dụng bởi các tokenizer, chủ yếu là lớp PreTrainedTokenizerBase thực hiện các phương thức chung giữa PreTrainedTokenizer và PreTrainedTokenizerFast.
Hầu hết những điều đó chỉ hữu ích nếu bạn đang nghiên cứu mã nguồn của các tokenizer trong thư viện.
PreTrainedTokenizerBase
lớp transformers.PreTrainedTokenizerBase
< 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 backend tokenizer.
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_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>"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))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.
Dọn dẹp khoảng trắng token hóa trong một văn bản cho trước. Phương thức này chủ yếu dành cho hỗ trợ mã từ xa.
convert_ids_to_tokens
< source >( ids: int | list[int]skip_special_tokens: bool = False ) → str or list[str]
Chuyển đổi một chỉ mục đơn hoặc một chuỗi các chỉ mục trong một token hoặc một chuỗi các token, sử dụng bảng từ vựng và các token đã thêm.
convert_tokens_to_ids
< source >( tokens: str | list[str] ) → int or list[int]
Chuyển đổi một chuỗi token (hoặc một chuỗi các token) thành một id số nguyên duy nhất (hoặc một chuỗi các id), sử dụng bảng từ vựng.
convert_tokens_to_string
< source >( tokens: list[str] ) → str
Chuyển đổi một chuỗi các token trong một chuỗi ký tự duy nhất. Cách đơn giản nhất để làm điều này là " ".join(tokens) nhưng chúng ta thường muốn loại bỏ các sản phẩm phụ của token hóa dưới từ (sub-word) cùng lúc.
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)).
encode_message_with_chat_template
< source >( message: dict[str, str]conversation_history: list[dict[str, str]] | None = None**kwargs ) → list[int]
Tham số
- message (
dict) — Một từ điển có các khóa “role” và “content”, đại diện cho tin nhắn cần mã hóa. - conversation_history (
list[dict], tùy chọn) — 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. Nếu bạn đang mã hóa token từng tin nhắn một, bạn nên truyền các tin nhắn trước đó trong cuộc hội thoại vào đây. - **kwargs —
Các kwargs bổ sung để truyền cho phương thức
apply_chat_template.
Trả về
list[int]
Danh sách các id token đại diện cho tin nhắn đã được token hóa.
Token hóa một tin nhắn đơn lẻ. Phương thức này là một lớp bọc tiện ích quanh apply_chat_template, cho phép bạn
token hóa các tin nhắn lần lượt từng cái một. Điều này hữu ích cho các tác vụ như streaming theo từng token.
Phương thức này không được đảm bảo là hoàn hảo. Đối với một số mô hình, có thể không thể token hóa một cách vững chắc
các tin nhắn đơn lẻ. Ví dụ, nếu chat template thêm các token sau mỗi tin nhắn, nhưng đồng thời cũng có một tiền tố
được thêm vào toàn bộ cuộc trò chuyện, thì sẽ không thể phân biệt được giữa chat-start-token và message-start-token.
Trong những trường hợp như vậy, phương thức này sẽ cố gắng hết sức để tìm ra cách token hóa chính xác, nhưng có thể không hoàn hảo. Lưu ý: Phương thức này không hỗ trợ add_generation_prompt. Nếu bạn muốn thêm một generation prompt,
bạn nên thực hiện điều đó riêng biệt sau khi đã token hóa cuộc trò chuyện.
from_pretrained
< source >( pretrained_model_name_or_path: str | os.PathLike*init_inputscache_dir: str | os.PathLike | None = Noneforce_download: bool = Falselocal_files_only: bool = Falsetoken: str | bool | None = Nonerevision: str = 'main'trust_remote_code = False**kwargs )
Tham số
- pretrained_model_name_or_path (
strhoặcos.PathLike) — Có thể là:- Một chuỗi, model id của một tokenizer có sẵn được lưu trữ trong một kho model trên huggingface.co.
- Đường dẫn đến thư mục chứa các tệp từ vựng cần thiết cho tokenizer, ví dụ được lưu bằng phương thức save_pretrained(), chẳng hạn
./my_model_directory/. - (Đã ngừng hỗ trợ, không áp dụng cho tất cả các lớp kế thừa) đường dẫn đến một tệp từ vựng đã lưu duy nhất (nếu và chỉ nếu bộ phân từ chỉ yêu cầu một tệp từ vựng duy nhất như Bert hoặc XLNet), ví dụ:
./my_model_directory/vocab.txt.
- cache_dir (
strhoặcos.PathLike, tùy chọn) — Đường dẫn đến thư mục mà các tệp từ vựng tokenizer định nghĩa trước đã tải xuống sẽ được lưu đệm nếu không sử dụng bộ lưu đệm tiêu chuẩn. - force_download (
bool, tùy chọn, mặc định làFalse) — Có nên buộc tải lại (re-download) các tệp từ vựng và ghi đè lên các phiên bản đã được lưu trong bộ nhớ đệm nếu chúng tồn tại hay không. - proxies (
dict[str, str], tuỳ chọn) — Một từ điển các máy chủ proxy để sử dụng theo giao thức hoặc điểm cuối, ví dụ:{'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}. Các proxy này được sử dụng cho mỗi yêu cầu. - token (
strhoặc bool, tùy chọn) — Token được sử dụng làm HTTP bearer authorization cho các tệp từ xa. NếuTrue, sẽ sử dụng token được tạo ra khi chạyhf auth login(được lưu trong~/.huggingface). - local_files_only (
bool, tùy chọn, mặc định làFalse) — Có nên chỉ dựa vào các tệp cục bộ và không cố gắng tải xuống bất kỳ tệp nào hay không. - revision (
str, tùy chọn, mặc định là"main") — Phiên bản mô hình cụ thể cần sử dụng. Nó có thể là tên nhánh, tên thẻ hoặc id commit, vì chúng tôi sử dụng hệ thống dựa trên git để lưu trữ các mô hình và các sản phẩm khác trên huggingface.co, do đórevisioncó thể là bất kỳ định danh nào được git cho phép. - subfolder (
str, tùy chọn) — Trong trường hợp các tệp liên quan nằm trong một thư mục con của kho mô hình trên huggingface.co (ví dụ với facebook/rag-token-base), hãy chỉ định nó tại đây. - inputs (các đối số vị trí bổ sung, tùy chọn) —
Sẽ được truyền đến phương thức
__init__của Tokenizer. - trust_remote_code (
bool, tùy chọn, mặc định làFalse) — Có cho phép các model tùy chỉnh được định nghĩa trên Hub trong các file modeling riêng của chúng hay không. Chỉ nên đặt tùy chọn này thànhTruecho các repository mà bạn tin tưởng và đã đọc qua mã nguồn, vì nó sẽ thực thi mã có sẵn trên Hub trên máy cục bộ của bạn. - kwargs (các tham số từ khóa bổ sung, tùy chọn) —
Sẽ được truyền vào phương thức
__init__của Tokenizer. Có thể được sử dụng để đặt các token đặc biệt nhưbos_token,eos_token,unk_token,sep_token,pad_token,cls_token,mask_token,extra_special_tokens. Xem các tham số trong__init__để biết thêm chi tiết.
Tạo một PreTrainedTokenizerBase (hoặc một lớp kế thừa) từ một tokenizer có sẵn.
Việc truyền
token=Truelà bắt buộc khi bạn muốn sử dụng một mô hình riêng tư.
Ví dụ:
# We can't instantiate directly the base class *PreTrainedTokenizerBase* so let's show our examples on a derived class: BertTokenizer
# Download vocabulary from huggingface.co and cache.
tokenizer = BertTokenizer.from_pretrained("google-bert/bert-base-uncased")
# Download vocabulary from huggingface.co (user-uploaded) and cache.
tokenizer = BertTokenizer.from_pretrained("dbmdz/bert-base-german-cased")
# If vocabulary files are in a directory (e.g. tokenizer was saved using *save_pretrained('./test/saved_model/')*)
tokenizer = BertTokenizer.from_pretrained("./test/saved_model/")
# If the tokenizer uses a single vocabulary file, you can point directly to this file
tokenizer = BertTokenizer.from_pretrained("./test/saved_model/my_vocab.txt")
# You can link tokens to special vocabulary when instantiating
tokenizer = BertTokenizer.from_pretrained("google-bert/bert-base-uncased", unk_token="<unk>")
# You should be sure '<unk>' is in the vocabulary when doing that.
# Otherwise use tokenizer.add_special_tokens({'unk_token': '<unk>'}) instead)
assert tokenizer.unk_token == "<unk>"get_chat_template
< source >( chat_template: str | None = Nonetools: list[dict] | None = None ) → str
Tham số
- chat_template (
str, tùy chọn) — Một mẫu Jinja hoặc tên của một mẫu để sử dụng cho quá trình chuyển đổi này. Thường không cần truyền bất kỳ giá trị nào cho đối số này, vì mẫu của mô hình sẽ được sử dụng theo mặc định. - tools (
list[Dict], 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 chat templating để biết thêm thông tin.
Trả về
str
Chuỗi mẫu trò chuyện.
Lấy chuỗi mẫu chat được sử dụng để mã hóa token các tin nhắn chat. Mẫu này được sử dụng bên trong bởi phương thức apply_chat_template và cũng có thể được sử dụng bên ngoài để lấy mẫu chat của mô hình nhằm theo dõi quá trình tạo tốt hơn.
get_response_parser
< source >( response_template: dict | None = Noneprefix: str | list[int] | np.ndarray | torch.Tensor | None = Nonetools: list[dict | Callable] | None = None )
Trả về một ResponseParser có trạng thái để phân tích cú pháp phản hồi được phát trực tiếp một cách tăng dần. Sử dụng thuộc tính response_template của tokenizer trừ khi bị ghi đè.
prefix (một chuỗi, danh sách id token, hoặc tensor 1 chiều) là bắt buộc: luồng được khởi tạo ở trạng thái do ngữ cảnh chat-prompt ngụ ý (bị cắt phía phải sau start_anchor của spec), do đó các khối được tạo ra và đưa vào qua stream.feed() sẽ được phân loại chính xác ngay cả khi chat template đã phát ra nội dung lượt trả lời của assistant (ví dụ: <think>\n) mà mô hình sẽ tiếp tục từ đó. Nếu bỏ qua tham số này sẽ gây lỗi; nếu luồng thực sự bắt đầu từ một lượt assistant sạch, hãy truyền prefix="" để từ chối áp dụng.
tools (list[Union[Dict, Callable]], tùy chọn): các công cụ có sẵn cho mô hình, ở cùng định dạng mà apply_chat_template chấp nhận. Khi được đặt, các đối số của lệnh gọi công cụ sẽ được chuyển đổi kiểu bằng JSON schema của công cụ được gọi khi mỗi vùng đóng lại, do đó các sự kiện region_close khi phát trực tiếp sẽ mang theo các đối số đã có kiểu.
get_special_tokens_mask
< source >( token_ids_0: list[int]token_ids_1: list[int] | None = Nonealready_has_special_tokens: bool = False ) → A list of integers in the range [0, 1]
Tham số
- token_ids_0 — Danh sách các ID của chuỗi (có thể đã được định dạng).
- token_ids_1 — Không được sử dụng khi
already_has_special_tokens=True. Trong trường hợp đó, giá trị phải là None. - already_has_special_tokens — Xác định xem chuỗi đã được định dạng với các token đặc biệt 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 chuỗi từ một danh sách token không có token đặc biệt nào được thêm vào.
Đối với các tokenizer nhanh, các data collator gọi hàm này với already_has_special_tokens=True để xây dựng một mask trên một chuỗi đã được định dạng sẵn. Trong trường hợp đó, chúng ta tính mask bằng cách kiểm tra sự thuộc về trong all_special_ids.
Trả về từ vựng dưới dạng từ điển ánh xạ từ token sang chỉ số.
tokenizer.get_vocab()[token] tương đương với tokenizer.convert_tokens_to_ids(token) khi token nằm trong vocab.
pad
< source >( encoded_inputs: BatchEncoding | list[BatchEncoding] | dict[str, EncodedInput] | dict[str, list[EncodedInput]] | list[dict[str, EncodedInput]]padding: bool | str | PaddingStrategy = Truemax_length: int | None = Nonepad_to_multiple_of: int | None = Nonepadding_side: str | None = Nonereturn_attention_mask: bool | None = Nonereturn_tensors: str | TensorType | None = Noneverbose: bool = True )
Tham số
- encoded_inputs (BatchEncoding, danh sách BatchEncoding,
dict[str, list[int]],dict[str, list[list[int]]hoặclist[dict[str, list[int]]]) — Đầu vào đã được token hóa. Có thể đại diện cho một đầu vào (BatchEncoding hoặcdict[str, list[int]]) hoặc một batch các đầu vào đã được token hóa (danh sách BatchEncoding, dict[str, list[list[int]]] hoặc list[dict[str, list[int]]]) để bạn có thể sử dụng phương thức này trong cả tiền xử lý lẫn trong hàm collate của PyTorch Dataloader.Thay vì
list[int], bạn có thể dùng tensor (mảng numpy hoặc tensor PyTorch), xem ghi chú phía trên về kiểu trả về. - padding (
bool,strhoặc PaddingStrategy, tùy chọn, mặc định làTrue) — 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'(mặc định): Lấp đầy (padding) đến độ dài của chuỗi dài nhất trong batch (hoặc không lấp đầy nếu chỉ có một chuỗi đượ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': 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).
- max_length (
int, tùy chọn) — Độ dài tối đa của danh sách trả về và tùy chọn độ dài padding (xem bên trên). - pad_to_multiple_of (
int, tuỳ chọn) — Nếu được đặt, chuỗi sẽ được đệm (pad) đến 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. - 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_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.
- 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.
Đệm một đầu vào đã mã hóa đơn lẻ hoặc một lô các đầu vào đã mã hóa lên đến độ dài định trước hoặc độ dài chuỗi tối đa trong lô.
Bên đệm (trái/phải) các id token đệm được định nghĩa ở cấp tokenizer (với self.padding_side, self.pad_token_id và self.pad_token_type_id).
Lưu ý rằng với tokenizer nhanh, việc sử dụng phương thức __call__ sẽ nhanh hơn so với việc sử dụng một phương thức để mã hóa văn bản rồi gọi phương thức pad để nhận kết quả mã hóa đã được đệm.
Nếu
encoded_inputsđược truyền vào là từ điển các mảng numpy hoặc tensor PyTorch, kết quả sẽ sử dụng cùng kiểu dữ liệu đó, trừ khi bạn chỉ định một kiểu tensor khác bằngreturn_tensors. Trong trường hợp tensor PyTorch, bạn sẽ mất thông tin về thiết bị cụ thể của các tensor đó.
parse_response
< source >( response: str | list[int] | list[str] | list[list[int]] | np.ndarray | torch.Tensorschema: dict | None = Noneprefix: str | list[int] | list[str] | list[list[int]] | np.ndarray | torch.Tensor | None = Nonetools: list[dict | Callable] | None = None )
Tham số
- response (
str, token ids, tensor 1D/2D, hoặc danh sách của các loại này) — Đầu ra do mô hình tạo ra. Có thể là văn bản đã giải mã hoặc token ids, dưới dạng một chuỗi duy nhất (str/list[int]/ mảng 1D / tensor 1D) hoặc một batch (list[str]/list[list[int]]/ mảng 2D / tensor 2D). Lưu ý rằng trường này chỉ nên chứa đầu ra của mô hình, không bao gồm văn bản prompt đi trước (phần đó nằm trongprefix). - schema (
dict, tùy chọn) — Mẫu phản hồi chỉ định định dạng đầu ra mong đợi và cách thực hiện phân tích cú pháp. Nếu không được cung cấp, thuộc tínhresponse_templatecủa tokenizer sẽ được sử dụng. - prefix (
str, token ids, tensor 1D/2D, hoặc danh sách các loại này) — Lời nhắc (prompt) xuất hiện trước quá trình sinh. Điều này là cần thiết vì nhiều mẫu chat (chat templates) đã viết sẵn một phần của tin nhắn, do đó chúng ta cần xem lời nhắc để phân tích chính xác. Đối với mộtresponsedạng batch, hãy truyền một prefix duy nhất (được phát sóng đến mọi mục) hoặc một prefix cho mỗi mục. - tools (
list[Union[Dict, Callable]], tùy chọn) — Các công cụ có sẵn cho mô hình, ở cùng định dạng màapply_chat_templatechấp nhận. Khi được truyền vào, các đối số gọi công cụ sẽ được chuyển đổi kiểu theo schema JSON của công cụ được gọi:"7"sẽ trở thành7cho một tham số nguyên nhưng vẫn giữ nguyên là"7"cho một tham số chuỗi.
Chuyển đổi chuỗi đầu ra được tạo ra từ việc mô hình sinh văn bản thành một từ điển tin nhắn đã được phân tích.
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 response_template của tokenizer để kiểm soát việc phân tích, trừ khi đối số schema được truyền trực tiếp.
Accepts either a single sequence or a batch. A single sequence (a string, or a 1D sequence of token
ids) returns a single parsed message dict; a batch (a list of strings, a list of token-id sequences,
or a 2D tensor / array) returns a list of parsed message dicts, one per item.
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")register_for_auto_class
< source >( auto_class = 'AutoTokenizer' )
Đăng ký lớp này với một lớp auto cho trước. Thao tác này chỉ nên được sử dụng cho các tokenizer tùy chỉnh vì các tokenizer trong thư viện đã được ánh xạ với AutoTokenizer.
save_chat_templates
< source >( save_directory: str | os.PathLiketokenizer_config: dictfilename_prefix: str | Nonesave_jinja_files: bool )
Viết các chat template ra thư mục lưu trữ nếu chúng ta đang sử dụng định dạng mới, và xóa chúng khỏi cấu hình tokenizer nếu có. Nếu chúng ta đang sử dụng định dạng cũ, nó không viết bất kỳ tệp nào, mà thay vào đó viết các template vào cấu hình tokenizer theo đúng định dạng.
save_pretrained
< source >( save_directory: str | os.PathLikelegacy_format: bool | None = Nonefilename_prefix: str | None = Nonepush_to_hub: bool = False**kwargs ) → A tuple of str
Tham số
- save_directory (
strhoặcos.PathLike) — Đường dẫn đến thư mục nơi tokenizer sẽ được lưu. - legacy_format (
bool, tuỳ chọn) — Chỉ áp dụng cho fast tokenizer. Nếu không được đặt (mặc định), tokenizer sẽ được lưu ở định dạng JSON thống nhất cũng như ở định dạng cũ nếu có, tức là với bảng từ vựng cụ thể của tokenizer và một tệp added_tokens riêng biệt.Nếu
False, chỉ lưu tokenizer ở định dạng JSON thống nhất. Định dạng này không tương thích với các tokenizer “chậm” (không chạy bằng thư viện tokenizers), do đó tokenizer sẽ không thể được nạp trong tokenizer “chậm” tương ứng.Nếu
True, bộ phân từ sẽ được lưu ở định dạng cũ. Nếu bộ phân từ “chậm” không tồn tại, một lỗi giá trị sẽ được ném ra. - filename_prefix (
str, tùy chọn) — Tiền tố để thêm vào tên của các tệp được lưu bởi tokenizer. - push_to_hub (
bool, tùy chọn, mặc định làFalse) — Có đẩy mô hình của bạn lên Hugging Face model hub sau khi lưu hay không. Bạn có thể chỉ định kho lưu trữ muốn đẩy đến bằngrepo_id(mặc định sẽ là tên củasave_directorytrong namespace của bạn). - 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 đủ.
Phương pháp này đảm bảo rằng bộ phân từ hoàn chỉnh có thể được nạp lại bằng phương thức lớp ~tokenization_utils_base.PreTrainedTokenizer.from_pretrained.
Warning,None Thao tác này sẽ không lưu các thay đổi bạn có thể đã áp dụng cho tokenizer sau khi khởi tạo (ví dụ, sửa đổi tokenizer.do_lower_case sau khi tạo).
save_vocabulary
< source >( save_directory: strfilename_prefix: str | None = None ) → tuple(str)
Chỉ lưu từ vựng của tokenizer (từ vựng + các token được thêm vào).
Phương pháp này sẽ không lưu cấu hình và ánh xạ token đặc biệt của tokenizer. Hãy dùng _save_pretrained() để lưu toàn bộ trạng thái của tokenizer.
tokenize
< source >( text: strpair: str | None = Noneadd_special_tokens: bool = False**kwargs ) → list[str]
Tham số
- text (
str) — Chuỗi cần được mã hóa. - pair (
str, optional) — Một chuỗi thứ hai để được mã hóa cùng với chuỗi đầu tiên. - add_special_tokens (
bool, tùy chọn, mặc định làFalse) — Có thêm các token đặc biệt liên quan đến mô hình tương ứng hay không. - kwargs (các đối số từ khóa bổ sung, tùy chọn) — Sẽ được truyền đến phương thức encode cụ thể của model bên dưới. Xem chi tiết trong call()
Trả về
list[str]
Danh sách các token.
Chuyển đổi một chuỗi thành một chuỗi các token, thay thế các token không xác định bằng unk_token.
Enums và namedtuples
lớp transformers.tokenization_utils_base.TruncationStrategy
< source >( valuenames = Nonemodule = Nonequalname = Nonetype = Nonestart = 1boundary = None )
Các giá trị có thể có cho đối số truncation trong PreTrainedTokenizerBase.call(). Hữu ích cho việc hoàn thành bằng phím Tab trong
IDE.
lớp transformers.CharSpan
< source >( start: ForwardRef('int')end: ForwardRef('int') )
Khoảng ký tự trong chuỗi gốc.
lớp transformers.TokenSpan
< source >( start: ForwardRef('int')end: ForwardRef('int') )
Khoảng token trong một chuỗi đã mã hóa (danh sách các token).