Transformers documentation

PhoBERT

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 02-03-2020 và được đóng góp cho Hugging Face Transformers vào ngày 16-11-2020.

PhoBERT

Tổng quan

Mô hình PhoBERT được đề xuất trong PhoBERT: Pre-trained language models for Vietnamese bởi Dat Quoc Nguyen, Anh Tuan Nguyen.

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

Chúng tôi giới thiệu PhoBERT với hai phiên bản, PhoBERT-base và PhoBERT-large, là các mô hình ngôn ngữ đơn ngữ quy mô lớn đầu tiên được công bố công khai và được huấn luyện trước cho tiếng Việt. Kết quả thực nghiệm cho thấy PhoBERT luôn vượt trội so với mô hình đa ngữ được huấn luyện trước tốt nhất gần đây là XLM-R (Conneau et al., 2020) và cải thiện mức độ tiên tiến (state-of-the-art) trong nhiều tác vụ NLP đặc thù cho tiếng Việt, bao gồm gắn nhãn từ loại (Part-of-speech tagging), phân tích phụ thuộc (Dependency parsing), nhận thực thể có tên (Named-entity recognition) và suy luận ngôn ngữ tự nhiên (Natural language inference).

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

Ví dụ sử dụng

import torch

from transformers import AutoModel, AutoTokenizer


phobert = AutoModel.from_pretrained("vinai/phobert-base", device_map="auto")
tokenizer = AutoTokenizer.from_pretrained("vinai/phobert-base")

# INPUT TEXT MUST BE ALREADY WORD-SEGMENTED!
line = "Tôi là sinh_viên trường đại_học Công_nghệ ."

input_ids = torch.tensor([tokenizer.encode(line)])

with torch.no_grad():
    features = phobert(input_ids)  # Models outputs are now tuples

Cài đặt PhoBERT giống với BERT, ngoại trừ phần phân tách token. Tham khảo tài liệu BERT để biết thông tin về các lớp cấu hình và tham số của chúng. Bộ phân tách token đặc thù cho PhoBERT được mô tả bên dưới.

PhobertTokenizer

lớp transformers.PhobertTokenizer

< >

( vocab_filemerges_filebos_token = '<s>'eos_token = '</s>'sep_token = '</s>'cls_token = '<s>'unk_token = '<unk>'pad_token = '<pad>'mask_token = '<mask>'**kwargs )

Tham số

  • vocab_file (str) — Đường dẫn đến tệp từ vựng.
  • merges_file (str) — Đường dẫn đến tệp merges.
  • 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.

Xây dựng bộ phân từ PhoBERT. Dựa trên Byte-Pair-Encoding.

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 đó.

add_from_file

< >

( f )

Tải một từ điển có sẵn từ tệp văn bản và thêm các ký tự của nó vào phiên bản này.

build_inputs_with_special_tokens

< >

( token_ids_0: listtoken_ids_1: list[int] | None = None ) → list[int]

Tham số

  • token_ids_0 (list[int]) — Danh sách các ID mà các token đặc biệt sẽ được thêm vào.
  • token_ids_1 (list[int], tùy chọn) — Danh sách ID thứ hai tùy chọn cho các cặp chuỗi.

Trả về

list[int]

Danh sách input IDs với các token đặc biệt phù hợp.

Xây dựng đầu vào mô hình từ một chuỗi hoặc một cặp chuỗi cho các tác vụ phân loại chuỗi bằng cách nối và thêm các token đặc biệt. Một chuỗi PhoBERT có định dạng như sau:

  • một chuỗi đơn: <s> X </s>
  • cặp chuỗi: <s> A </s></s> B </s>

convert_tokens_to_string

< >

( tokens )

Chuyển đổi một chuỗi các token (chuỗi ký tự) trong một chuỗi duy nhất.

create_token_type_ids_from_sequences

< >

( token_ids_0: listtoken_ids_1: list[int] | None = None ) → list[int]

Tham số

  • token_ids_0 (list[int]) — Danh sách các ID.
  • token_ids_1 (list[int], tùy chọn) — Danh sách ID thứ hai tùy chọn cho các cặp chuỗi.

Trả về

list[int]

Danh sách các số 0.

Tạo một mask từ hai chuỗi được truyền vào để sử dụng trong một tác vụ phân loại cặp chuỗi. PhoBERT không sử dụng token type ids, do đó một danh sách các số 0 được trả về.

get_special_tokens_mask

< >

( token_ids_0: listtoken_ids_1: list[int] | None = Nonealready_has_special_tokens: bool = False ) → list[int]

Tham số

  • token_ids_0 (list[int]) — Danh sách các ID.
  • token_ids_1 (list[int], tùy chọn) — Danh sách ID thứ hai tùy chọn cho các cặp chuỗi.
  • already_has_special_tokens (bool, tùy chọn, mặc định là False) — Danh sách token đã được định dạng với các token đặc biệt cho mô hình hay chưa.

Trả về

list[int]

Một danh sách các số nguyên trong khoảng [0, 1]: 1 cho một token đặc biệt, 0 cho một token chuỗi.

Lấy các id của chuỗi từ một danh sách token chưa được thêm token đặc biệt. Phương thức này được gọi khi thêm token đặc biệt bằng cách sử dụng phương thức prepare_for_model của tokenizer.

Update on GitHub