Transformers documentation

mLUKE

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

Mô hình này được công bố trên HF papers vào ngày 2021-10-15 và được đóng góp cho Hugging Face Transformers vào ngày 2021-12-07.

mLUKE

Tổng quan

Mô hình mLUKE được đề xuất trong mLUKE: The Power of Entity Representations in Multilingual Pretrained Language Models bởi Ryokan Ri, Ikuya Yamada và Yoshimasa Tsuruoka. Đây là phiên bản đa ngôn ngữ của mô hình LUKE, được huấn luyện dựa trên XLM-RoBERTa.

Nó được xây dựng dựa trên XLM-RoBERTa và bổ sung các embedding thực thể, giúp cải thiện hiệu suất trên nhiều tác vụ downstream khác nhau liên quan đến suy luận về thực thể, chẳng hạn như nhận diện thực thể có tên, trả lời câu hỏi trích xuất, phân loại quan hệ, hoàn thành kiến thức theo dạng cloze.

Tóm tắt từ bài báo như sau:

Các nghiên cứu gần đây cho thấy rằng các mô hình ngôn ngữ đa ngôn ngữ được huấn luyện trước có thể được cải thiện hiệu quả bằng thông tin căn chỉnh liên ngôn ngữ từ các thực thể Wikipedia. Tuy nhiên, các phương pháp hiện tại chỉ khai thác thông tin thực thể trong giai đoạn huấn luyện trước và không sử dụng thực thể một cách tường minh trong các tác vụ hạ nguồn. Trong nghiên cứu này, chúng tôi khám phá hiệu quả của việc tận dụng các biểu diễn thực thể cho các tác vụ liên ngôn ngữ hạ nguồn. Chúng tôi huấn luyện một mô hình ngôn ngữ đa ngôn ngữ với 24 ngôn ngữ bằng cách sử dụng các biểu diễn thực thể và cho thấy mô hình này luôn vượt trội so với các mô hình huấn luyện trước dựa trên từ trong nhiều tác vụ chuyển giao liên ngôn ngữ khác nhau. Chúng tôi cũng phân tích mô hình và nhận thấy rằng việc tích hợp các biểu diễn thực thể vào đầu vào cho phép chúng tôi trích xuất nhiều đặc tính không phụ thuộc vào ngôn ngữ hơn. Chúng tôi cũng đánh giá mô hình với một tác vụ prompt điền khuyết đa ngôn ngữ sử dụng bộ dữ liệu mLAMA. Chúng tôi cho thấy rằng prompt dựa trên thực thể khơi gợi kiến thức thực tế chính xác nhiều hơn so với việc chỉ sử dụng các biểu diễn từ.

Mô hình này được đóng góp bởi ryo0634. Mã gốc có thể được tìm thấy tại đây.

Mẹo sử dụng

Bạn có thể trực tiếp chèn trọng số của mLUKE vào một mô hình LUKE, như sau:

from transformers import LukeModel


model = LukeModel.from_pretrained("studio-ousia/mluke-base", device_map="auto")

Lưu ý rằng mLUKE có bộ phân từ riêng, MLukeTokenizer. Bạn có thể khởi tạo nó như sau:

from transformers import MLukeTokenizer


tokenizer = MLukeTokenizer.from_pretrained("studio-ousia/mluke-base")

Vì kiến trúc của mLUKE tương đương với LUKE, bạn có thể tham khảo trang tài liệu của LUKE để xem tất cả các mẹo, ví dụ mã và notebook.

MLukeTokenizer

lớp transformers.MLukeTokenizer

< >

( bos_token = '<s>'eos_token = '</s>'sep_token = '</s>'cls_token = '<s>'unk_token = '<unk>'pad_token = '<pad>'mask_token = '<mask>'task = Nonemax_entity_length = 32max_mention_length = 30entity_1_token = '<ent>'entity_2_token = '<ent2>'entity_unk_token = '[UNK]'entity_pad_token = '[PAD]'entity_mask_token = '[MASK]'entity_mask2_token = '[MASK2]'vocab: str | dict | list | None = Noneentity_vocab: str | dict | list | None = None**kwargs )

Tham số

  • vocab_file (str) — Đường dẫn đến tệp từ vựng.
  • entity_vocab_file (str) — Đường dẫn đến tệp từ vựng thực thể.
  • bos_token (str, tuỳ chọn, mặc định là "<s>") — Token bắt đầu chuỗi được sử dụng trong quá trình pretraining. Có thể được dùng làm token phân loại chuỗi. Khi xây dựng một chuỗi bằng các token đặc biệt, đây không phải là token được dùng cho phần bắt đầu của chuỗi. Token được dùng là cls_token.

    Khi xây dựng một chuỗi sử dụng các token đặc biệt, đây không phải là token được dùng cho phần đầu của chuỗi. Token được sử dụng là cls_token.

  • eos_token (str, tuỳ chọn, mặc định là "</s>") — Token kết thúc chuỗi. Khi xây dựng một chuỗi bằng các token đặc biệt, đây không phải là token được dùng cho kết thúc chuỗi. Token được dùng là sep_token.

    Khi xây dựng một chuỗi bằng các token đặc biệt, đây không phải là token được sử dụng cho kết thúc chuỗi. Token được sử dụng là sep_token.

  • sep_token (str, tùy chọn, mặc định là "</s>") — Token phân cách, được sử dụng khi xây dựng một chuỗi từ nhiều chuỗi, ví dụ như hai chuỗi cho phân loại chuỗi hoặc một văn bản và một câu hỏi cho trả lời câu hỏi. Nó cũng được sử dụng làm token cuối cùng của một chuỗi được xây dựng với các token đặc biệt.
  • cls_token (str, tùy chọn, mặc định là "<s>") — Token phân loại được sử dụng khi thực hiện phân loại chuỗi (phân loại toàn bộ chuỗi thay vì phân loại theo từng token). Đây là token đầu tiên của chuỗi khi được xây dựng với các token đặc biệt.
  • unk_token (str, tùy chọn, mặc định là "<unk>") — Token không xác định. Một token không có trong từ vựng sẽ không thể được chuyển đổi thành ID và sẽ được gán thành token này thay thế.
  • pad_token (str, tùy chọn, mặc định là "<pad>") — Token được sử dụng để đệm, chẳng hạn khi xử lý các lô (batch) gồm các chuỗi có độ dài khác nhau.
  • mask_token (str, tùy chọn, mặc định là "<mask>") — Token được sử dụng để che các giá trị. Đây là token được dùng khi huấn luyện mô hình này với mô hình hóa ngôn ngữ có che (masked language modeling). Đây là token mà mô hình sẽ cố gắng dự đoán.
  • task (str, tùy chọn) — Nhiệm vụ mà bạn muốn chuẩn bị các chuỗi cho. Một trong số "entity_classification", "entity_pair_classification" hoặc "entity_span_classification". Nếu bạn chỉ định đối số này, chuỗi thực thể sẽ được tạo tự động dựa trên các khoảng thực thể (entity span) được cho.
  • max_entity_length (int, tùy chọn, mặc định là 32) — Độ dài tối đa của entity_ids.
  • max_mention_length (int, tùy chọn, mặc định là 30) — Số lượng token tối đa bên trong một khoảng thực thể.
  • entity_1_token (str, tuỳ chọn, mặc định là <ent>) — Token đặc biệt được dùng để biểu diễn một khoảng thực thể trong chuỗi token từ. Token này chỉ được sử dụng khi task được đặt thành "entity_classification" hoặc "entity_pair_classification".
  • entity_2_token (str, tuỳ chọn, mặc định là <ent2>) — Token đặc biệt được dùng để biểu diễn một khoảng thực thể trong chuỗi token từ. Token này chỉ được sử dụng khi task được đặt thành "entity_pair_classification".
  • additional_special_tokens (list[str], tùy chọn, mặc định là ["<s>NOTUSED", "</s>NOTUSED"]) — Các token đặc biệt bổ sung được sử dụng bởi tokenizer.
  • sp_model_kwargs (dict, tuỳ chọn) — Sẽ được truyền vào SentencePieceProcessor.__init__() phương thức. bọc Python cho SentencePiece có thể được sử dụng, trong số nhiều mục đích khác, để thiết lập:
    • enable_sampling: Bật chuẩn hóa từ con (subword regularization).

    • nbest_size: Tham số lấy mẫu cho unigram. Không hợp lệ với BPE-Dropout.

      • nbest_size = {0,1}: Không thực hiện lấy mẫu.
      • nbest_size > 1: lấy mẫu từ các kết quả nbest_size.
      • nbest_size < 0: giả định rằng nbest_size là vô hạn và lấy mẫu từ tất cả các giả thuyết (lattice) bằng thuật toán forward-filtering-and-backward-sampling.
    • alpha: Tham số làm mịn cho việc lấy mẫu unigram và xác suất dropout của các thao tác merge cho BPE-dropout.

  • sp_model (SentencePieceProcessor) — Bộ xử lý SentencePiece được sử dụng cho mọi phép chuyển đổi (chuỗi, token và ID).

Được điều chỉnh từ XLMRobertaTokenizer và LukeTokenizer. Dựa trên SentencePiece.

Tokenizer này kế thừa từ PreTrainedTokenizer, lớp chứa hầu hết các phương thức chính. Người dùng nên tham khảo siêu lớp này để biết thêm thông tin về các phương thức đó.

__call__

< >

( text: str | list[str]text_pair: str | list[str] | None = Noneentity_spans: list[tuple[int, int]] | list[list[tuple[int, int]]] | None = Noneentity_spans_pair: list[tuple[int, int]] | list[list[tuple[int, int]]] | None = Noneentities: list[str] | list[list[str]] | None = Noneentities_pair: list[str] | list[list[str]] | None = Noneadd_special_tokens: bool = Truepadding: bool | str | transformers.utils.generic.PaddingStrategy = Falsetruncation: bool | str | transformers.tokenization_utils_base.TruncationStrategy | None = Nonemax_length: int | None = Nonemax_entity_length: int | None = Nonestride: int = 0is_split_into_words: bool | None = Falsepad_to_multiple_of: int | None = Nonepadding_side: str | None = Nonereturn_tensors: str | transformers.utils.generic.TensorType | None = Nonereturn_token_type_ids: bool | None = Nonereturn_attention_mask: bool | None = Nonereturn_overflowing_tokens: bool = Falsereturn_special_tokens_mask: bool = Falsereturn_offsets_mapping: bool = Falsereturn_length: bool = Falseverbose: bool = True**kwargs ) → BatchEncoding

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ì?

  • entity_ids — Danh sách các id thực thể để đưa vào mô hình.

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

  • entity_position_ids — Danh sách các vị trí thực thể trong chuỗi đầu vào sẽ được đưa vào mô hình.

  • entity_token_type_ids — Danh sách các entity token type ids được đưa vào mô hình (khi return_token_type_ids=True hoặc nếu “entity_token_type_ids” nằm trong self.model_input_names).

    ID loại token là gì?

  • entity_attention_mask — Danh sách các chỉ số chỉ định thực thể nào nên được mô hình chú ý đến (khi return_attention_mask=True hoặc nếu “entity_attention_mask” nằm trong self.model_input_names).

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

  • entity_start_positions — Danh sách các vị trí bắt đầu của các thực thể trong chuỗi token từ (khi task="entity_span_classification").

  • entity_end_positions — Danh sách các vị trí kết thúc của các thực thể trong chuỗi token từ (khi task="entity_span_classification").

  • 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)

add_special_tokens (bool, tuỳ 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, trong đó định nghĩa 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 tự động thêm các token bos hoặc eos. padding (bool, str hoặc PaddingStrategy, tuỳ chọn, mặc định là False): Kích hoạt và kiểm soát việc đệm. 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 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): Bậ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, tùy 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 bớt/lấp đầy.

Nếu không được đặt hoặc được đặt thành None, hệ thống 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 được trả về để tạo ra một phần chồng lấn giữa chuỗi bị cắt và 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): Xác định xem đầu vào đã được tách token trước hay chưa (ví dụ: tách thành các từ). Nếu được đặt thành True, bộ 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 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 giữ chỗ đế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 nên được áp dụng giữ chỗ. Nên chọn giữa [‘right’, ‘left’]. Giá trị mặc định được chọn 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ề các 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, tùy chọn): Có nên trả về các ID loại token hay không. Nếu để mặc định, sẽ trả về các ID loại token theo mặc định của bộ phân tích (tokenizer) cụ thể, được định nghĩa bởi thuộc tính return_outputs.

Token type IDs là gì? return_attention_mask (bool, tùy chọn): Có nên 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 định nghĩa 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 id đầu vào (hoặc một lô 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ạ token đặc biệt hay không. return_offsets_mapping (bool, tùy chọn, mặc định là False): Có trả về (char_start, char_end) cho mỗi token hay không.

Tính năng này chỉ khả dụng trên các fast tokenizer kế thừa từ PreTrainedTokenizerFast; nếu sử dụng tokenizer 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()

save_vocabulary

< >

( save_directory: strfilename_prefix: str | None = None )

Chỉ lưu tệp từ vựng thực thể. Tệp tokenizer.json được lưu bởi TokenizersBackend cha.

Update on GitHub