Transformers documentation

Công cụ cho bộ mã hóa

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

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

< >

( **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 trong max_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 (str hoặc tokenizers.AddedToken, tùy chọn) — Một token đặc biệt đại diện cho đầu câu.
  • eos_token (str hoặc tokenizers.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 (str hoặc tokenizers.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 (str hoặc tokenizers.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 (str hoặc tokenizers.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 (str hoặc tokenizers.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 (str hoặc tokenizers.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ới self.mask_token và self.mask_token_id.
  • extra_special_tokens (list of str hoặc tokenizers.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ới skip_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ếu split_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-names của các mô hình được huấn luyện trước, với các giá trị liên quan là url củ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__

< >

( 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 đặt is_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 đặt is_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 đặt is_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 đặt is_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àm PretrainedTokenizerBase.build_inputs_with_special_tokens bê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 token bos hoặc eos một cách tự động.
  • padding (bool, str hoặ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:
    • True hoặ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_length hoặ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.
    • False hoặ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, str hoặ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:
    • True hoặc 'longest_first': Cắt ngắn xuống độ dài tối đa được chỉ định bằng tham số max_length hoặ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_length hoặ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_length hoặ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.
    • False hoặ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ới max_length, các token tràn ra được trả về khi return_overflowing_tokens=True sẽ 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ành True, 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ầu padding phả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 (str hoặ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ượng torch.Tensor của PyTorch.
    • 'np': Trả về các đối tượng Numpy np.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ính return_outputs .

    ID loại token là gì?

  • 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ính return_outputs .

    Mặt nạ chú ý là gì?

  • 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ới truncation_strategy = longest_first hoặc True, 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ề

BatchEncoding

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.

    ID đầu vào là gì?

  • token_type_ids — Danh sách các id loại token để đưa vào mô hình (khi return_token_type_ids=True hoặc nếu “token_type_ids” nằm trong self.model_input_names).

    ID loại token là gì?

  • 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=True hoặc nếu “attention_mask” nằm trong self.model_input_names).

    Mặt nạ chú ý là gì?

  • 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_length và 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=True và 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

< >

( 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ặc Sequence[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_token cho chúng hay không).

  • replace_extra_special_tokens (bool, tùy chọn, mặc định là True) — Nếu True, 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 trong special_tokens_dict. Ngược lại, extra_special_tokens sẽ đượ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 đến added_tokens_encoder và added_tokens_decoder. Điều này có nghĩa là các extra_special_tokens trướ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

< >

( new_tokens: str | AddedToken | Sequence[str | AddedToken]special_tokens: bool = False ) → int

Tham số

  • new_tokens (str, tokenizers.AddedToken hoặc một chuỗi của str hoặc tokenizers.AddedToken) — Các token chỉ được thêm vào nếu chúng chưa có trong từ vựng. tokenizers.AddedToken bọ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.AddedToken trong 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ừ Metaspace sử dụng prepend_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. Sau tokenizer.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

< >

( 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ếu False, đầ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 trong tokenizer.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, str hoặ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:
    • True hoặ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_length hoặ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.
    • False hoặ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ính max_length của tokenizer sẽ được sử dụng làm mặc định.
  • return_tensors (str hoặ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ượng torch.Tensor của PyTorch.
    • 'np': Trả về các đối tượng np.ndarray củ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

< >

( 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.

clean_up_tokenization

< >

( text: str )

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

< >

( ids: int | list[int]skip_special_tokens: bool = False ) → str or list[str]

Tham số

  • ids (int hoặc list[int]) — ID token (hoặc các ID token) cần chuyển đổi thành token.
  • 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.

Trả về

str hoặc list[str]

Token (các token) đã được giải mã.

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

< >

( tokens: str | list[str] ) → int or list[int]

Tham số

  • tokens (str hoặc list[str]) — Một hoặc nhiều token cần chuyển đổi thành id token.

Trả về

int hoặc list[int]

ID của token hoặc danh sách các ID token.

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

< >

( tokens: list[str] ) → str

Tham số

  • tokens (list[str]) — Token cần ghép thành một chuỗi.

Trả về

str

Các token đã được ghép lại.

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

< >

( 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

< >

( 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ặc list[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ức tokenize) 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ức convert_tokens_to_ids).
  • text_pair (str, list[str] hoặc list[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ức tokenize) 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ức convert_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àm PretrainedTokenizerBase.build_inputs_with_special_tokens bê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 token bos hoặc eos một cách tự động.
  • padding (bool, str hoặ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:
    • True hoặ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_length hoặ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.
    • False hoặ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, str hoặ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:
    • True hoặc 'longest_first': Cắt ngắn xuống độ dài tối đa được chỉ định bằng tham số max_length hoặ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_length hoặ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_length hoặ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.
    • False hoặ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ới max_length, các token tràn ra được trả về khi return_overflowing_tokens=True sẽ 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ành True, 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ầu padding phả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 (str hoặ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ượng torch.Tensor của PyTorch.
    • 'np': Trả về các đối tượng Numpy np.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

< >

( 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

< >

( 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 (str hoặc os.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 (str hoặc os.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 (str hoặc bool, tùy chọn) — Token được sử dụng làm HTTP bearer authorization cho các tệp từ xa. Nếu True, sẽ sử dụng token được tạo ra khi chạy hf 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 đó revision có 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ành True cho 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=True là 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

< >

( 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

< >

( 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

< >

( 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.

get_vocab

< >

( ) → dict[str, int]

Trả về

dict[str, int]

Từ vựng.

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

< >

( 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ặc list[dict[str, list[int]]]) — Đầu vào đã được token hóa. Có thể đại diện cho một đầu vào (BatchEncoding hoặc dict[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, str hoặ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:
    • True hoặ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_length hoặ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.
    • False hoặ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ính return_outputs .

    Mặt nạ chú ý là gì?

  • return_tensors (str hoặ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ượng torch.Tensor của PyTorch.
    • 'np': Trả về các đối tượng Numpy np.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ằng return_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

< >

( 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 trong prefix).
  • 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ính response_template củ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ột response dạ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_template chấ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ành 7 cho 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

< >

( 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 (bool hoặc str, tùy chọn) — Token được sử dụng làm HTTP bearer authorization cho các tệp từ xa. Nếu True (mặc định), sẽ sử dụng token được tạo ra khi chạy hf 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 (int hoặc str, 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

< >

( auto_class = 'AutoTokenizer' )

Tham số

  • auto_class (str hoặc type, tùy chọn, mặc định là "AutoTokenizer") — Lớp auto để đăng ký tokenizer mới này.

Đă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

< >

( 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

< >

( 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 (str hoặc os.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ằng repo_id (mặc định sẽ là tên của save_directory trong 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

< >

( save_directory: strfilename_prefix: str | None = None ) → tuple(str)

Tham số

  • save_directory (str) — Thư mục để lưu trữ từ vựng.
  • filename_prefix (str, tùy chọn) — Một tiền tố tùy chọn để thêm vào tên của các tệp được lưu.

Trả về

tuple(str)

Đường dẫn đến các tệp đã lưu.

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

< >

( 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

< >

( 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

< >

( start: ForwardRef('int')end: ForwardRef('int') )

Tham số

  • start (int) — Chỉ số của ký tự đầu tiên trong chuỗi gốc.
  • end (int) — Chỉ số của ký tự ngay sau ký tự cuối cùng trong chuỗi gốc.

Khoảng ký tự trong chuỗi gốc.

lớp transformers.TokenSpan

< >

( start: ForwardRef('int')end: ForwardRef('int') )

Tham số

  • start (int) — Chỉ số của token đầu tiên trong khoảng.
  • end (int) — Chỉ số của token ngay sau token cuối cùng trong khoảng.

Khoảng token trong một chuỗi đã mã hóa (danh sách các token).

Update on GitHub