Transformers documentation

MarkupLM

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

이 모델은 2021-10-16에 HF papers에 게시되었으며, 2022-09-30에 Hugging Face Transformers에 기여되었습니다.

MarkupLM

개요

MarkupLM 모델은 Junlong Li, Yiheng Xu, Lei Cui, Furu Wei가 MarkupLM: Pre-training of Text and Markup Language for Visually-rich Document Understanding에서 제안했습니다. MarkupLM은 BERT와 같지만, 원시 텍스트 문서가 아닌 HTML 페이지에 적용됩니다. LayoutLM과 유사하게 성능을 향상시키기 위해 추가 임베딩 레이어를 포함합니다.

이 모델은 웹 페이지의 질의응답이나 웹 페이지에서 정보 추출과 같은 작업에 사용할 수 있습니다. 2개의 주요 벤치마크에서 최첨단(state-of-the-art) 결과를 달성합니다:

  • 웹 기반 구조적 독해(웹 페이지를 위한 SQuAD와 유사)를 위한 데이터셋인 WebSRC
  • 웹 페이지에서 정보 추출을 위한 데이터셋인 SWDE(기본적으로 웹 페이지에서의 개체명 인식)

해당 논문의 초록은 다음과 같습니다:

텍스트, 레이아웃, 이미지를 활용한 멀티모달 사전 학습은 시각적으로 풍부한 문서 이해(Visually-rich Document Understanding, VrDU) 분야에서, 특히 스캔된 문서 이미지와 같은 고정 레이아웃 문서에 대해 상당한 진전을 이루었습니다. 그러나 레이아웃 정보가 고정되지 않고 시각화를 위해 상호작용적이고 동적으로 렌더링되어야 하는 디지털 문서가 여전히 다수 존재하며, 이로 인해 기존 레이아웃 기반 사전 학습 방식의 적용이 쉽지 않습니다. 본 논문에서는 HTML/XML 기반 문서와 같은 마크업 언어를 백본으로 사용하는 문서 이해 작업을 위해 MarkupLM을 제안합니다. MarkupLM은 텍스트와 마크업 정보를 함께 사전 학습합니다. 실험 결과, 사전 학습된 MarkupLM은 여러 문서 이해 작업에서 기존 강력한 베이스라인 모델보다 현저히 우수한 성능을 보였습니다. 사전 학습된 모델과 코드는 공개될 예정입니다.

이 모델은 nielsr에 의해 기여되었습니다. 원본 코드는 여기에서 찾을 수 있습니다.

사용 팁

  • input_ids 외에도 forward()는 xpath_tags_seq와 xpath_subs_seq라는 두 가지 추가 입력을 기대합니다. 이들은 각각 입력 시퀀스의 각 토큰에 대한 XPATH 태그와 서브스크립트입니다.
  • MarkupLMProcessor를 사용하여 모델에 필요한 모든 데이터를 준비할 수 있습니다. 자세한 내용은 사용 가이드를 참고하세요.
drawing MarkupLM architecture. Taken from the original paper.

사용법: MarkupLMProcessor

모델을 위한 데이터를 준비하는 가장 쉬운 방법은 MarkupLMProcessor를 사용하는 것입니다. 이 프로세서는 내부적으로 피처 추출기(MarkupLMFeatureExtractor)와 토크나이저(MarkupLMTokenizer 또는 MarkupLMTokenizerFast)를 결합합니다. 피처 추출기는 HTML 문자열에서 모든 노드와 xpath를 추출하는 데 사용되며, 추출된 결과는 토크나이저로 전달되어 모델의 토큰 수준 입력(input_ids 등)으로 변환됩니다. 두 작업 중 하나만 처리하려는 경우, 피처 추출기와 토크나이저를 별도로 사용할 수도 있습니다.

from transformers import MarkupLMFeatureExtractor, MarkupLMProcessor, MarkupLMTokenizerFast


feature_extractor = MarkupLMFeatureExtractor()
tokenizer = MarkupLMTokenizerFast.from_pretrained("microsoft/markuplm-base")
processor = MarkupLMProcessor(feature_extractor, tokenizer)

요약하면, MarkupLMProcessor에 HTML 문자열(그리고 추가 데이터)을 제공하면 모델이 기대하는 입력을 생성합니다. 내부적으로 프로세서는 먼저 MarkupLMFeatureExtractor를 사용하여 노드 목록과 해당 xpath를 가져옵니다. 이후 노드와 xpath는 MarkupLMTokenizer 또는 MarkupLMTokenizerFast에 전달되며, 이들은 이를 토큰 수준의 input_ids, attention_mask, token_type_ids, xpath_subs_seq, xpath_tags_seq로 변환합니다. 선택적으로 프로세서에 노드 라벨을 제공할 수 있으며, 이는 토큰 수준의 labels로 변환됩니다.

MarkupLMFeatureExtractor는 내부적으로 HTML 및 XML 파일에서 데이터를 추출하는 Python 라이브러리인 Beautiful Soup을 사용합니다. 원하시는 파싱 솔루션을 직접 사용하거나, 노드와 xpath를 직접 제공하여 MarkupLMTokenizer 또는 MarkupLMTokenizerFast에 전달할 수도 있습니다.

전체적으로 프로세서가 지원하는 사용 사례는 5가지입니다. 아래에 모두 나열합니다. 각 사용 사례는 배치 입력과 비배치 입력 모두에서 동작합니다(비배치 입력을 기준으로 설명합니다).

사용 사례 1: 웹 페이지 분류(학습, 추론) + 토큰 분류(추론), parse_html = True

가장 간단한 경우로, 프로세서가 feature extractor를 사용하여 HTML에서 모든 노드와 xpath를 가져옵니다.

from transformers import MarkupLMProcessor


processor = MarkupLMProcessor.from_pretrained("microsoft/markuplm-base")

html_string = """
 <!DOCTYPE html>
 <html>
 <head>
 <title>Hello world</title>
 </head>
 <body>
 <h1>Welcome</h1>
 <p>Here is my website.</p>
 </body>
 </html>"""

# note that you can also add provide all tokenizer parameters here such as padding, truncation
encoding = processor(html_string, return_tensors="pt").to(model.device)
print(encoding.keys())
dict_keys(['input_ids', 'token_type_ids', 'attention_mask', 'xpath_tags_seq', 'xpath_subs_seq'])

사용 사례 2: 웹 페이지 분류(학습, 추론) + 토큰 분류(추론), parse_html=False

이미 모든 nodes와 xpaths를 확보한 경우, feature extractor는 필요하지 않습니다. 이 경우, processor에 nodes와 해당 xpaths를 직접 제공하고 parse_html을 False로 설정하도록 해야 합니다.

from transformers import MarkupLMProcessor


processor = MarkupLMProcessor.from_pretrained("microsoft/markuplm-base")
processor.parse_html = False

nodes = ["hello", "world", "how", "are"]
xpaths = ["/html/body/div/li[1]/div/span", "/html/body/div/li[1]/div/span", "html/body", "html/body/div"]
encoding = processor(nodes=nodes, xpaths=xpaths, return_tensors="pt").to(model.device)
print(encoding.keys())
dict_keys(['input_ids', 'token_type_ids', 'attention_mask', 'xpath_tags_seq', 'xpath_subs_seq'])

사용 사례 3: 토큰 분류(학습), parse_html=False

토큰 분류 작업(예: SWDE)의 경우, 모델을 학습시키기 위해 해당 노드 라벨을 제공할 수도 있습니다. 프로세서가 이를 토큰 수준의 labels로 변환합니다. 기본적으로 단어의 첫 번째 wordpiece에만 라벨을 붙이고, 나머지 wordpiece에는 PyTorch CrossEntropyLoss의 ignore_index인 -100을 부여합니다. 단어의 모든 wordpiece에 라벨을 붙이고 싶다면, 토크나이저를 only_label_first_subword를 False로 설정하여 초기화할 수 있습니다.

from transformers import MarkupLMProcessor


processor = MarkupLMProcessor.from_pretrained("microsoft/markuplm-base")
processor.parse_html = False

nodes = ["hello", "world", "how", "are"]
xpaths = ["/html/body/div/li[1]/div/span", "/html/body/div/li[1]/div/span", "html/body", "html/body/div"]
node_labels = [1, 2, 2, 1]
encoding = processor(nodes=nodes, xpaths=xpaths, node_labels=node_labels, return_tensors="pt").to(model.device)
print(encoding.keys())
dict_keys(['input_ids', 'token_type_ids', 'attention_mask', 'xpath_tags_seq', 'xpath_subs_seq', 'labels'])

사용 사례 4: 웹 페이지 질의응답 (추론), parse_html=True

웹 페이지에 대한 질의응답 작업에서는 프로세서에 질문을 제공할 수 있습니다. 기본적으로 프로세서는 feature extractor를 사용하여 모든 노드와 xpath를 가져오고, [CLS] question tokens [SEP] word tokens [SEP]을 생성합니다.

from transformers import MarkupLMProcessor


processor = MarkupLMProcessor.from_pretrained("microsoft/markuplm-base")

html_string = """
 <!DOCTYPE html>
 <html>
 <head>
 <title>Hello world</title>
 </head>
 <body>
 <h1>Welcome</h1>
 <p>My name is Niels.</p>
 </body>
 </html>"""

question = "What's his name?"
encoding = processor(html_string, questions=question, return_tensors="pt").to(model.device)
print(encoding.keys())
dict_keys(['input_ids', 'token_type_ids', 'attention_mask', 'xpath_tags_seq', 'xpath_subs_seq'])

사용 사례 5: 웹 페이지 질의응답 (추론), parse_html=False

질문 답변 작업(WebSRC 등)의 경우, 프로세서에 질문을 제공할 수 있습니다. 모든 노드와 xpath를 직접 추출한 경우, 이를 프로세서에 직접 제공할 수 있습니다. parse_html을 False로 설정하는 것을 확인하세요.

from transformers import MarkupLMProcessor


processor = MarkupLMProcessor.from_pretrained("microsoft/markuplm-base")
processor.parse_html = False

nodes = ["hello", "world", "how", "are"]
xpaths = ["/html/body/div/li[1]/div/span", "/html/body/div/li[1]/div/span", "html/body", "html/body/div"]
question = "What's his name?"
encoding = processor(nodes=nodes, xpaths=xpaths, questions=question, return_tensors="pt").to(model.device)
print(encoding.keys())
dict_keys(['input_ids', 'token_type_ids', 'attention_mask', 'xpath_tags_seq', 'xpath_subs_seq'])

리소스

MarkupLMConfig

클래스 transformers.MarkupLMConfig

< >

( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonevocab_size: int = 30522hidden_size: int = 768num_hidden_layers: int = 12num_attention_heads: int = 12intermediate_size: int = 3072hidden_act: str = 'gelu'hidden_dropout_prob: float | int = 0.1attention_probs_dropout_prob: float | int = 0.1max_position_embeddings: int = 512type_vocab_size: int = 2initializer_range: float = 0.02layer_norm_eps: float = 1e-12pad_token_id: int | None = 0bos_token_id: int | None = 0eos_token_id: int | list[int] | None = 2max_xpath_tag_unit_embeddings: int = 256max_xpath_subs_unit_embeddings: int = 1024tag_pad_id: int = 216subs_pad_id: int = 1001xpath_unit_hidden_size: int = 32max_depth: int = 50use_cache: bool = Trueclassifier_dropout: float | int | None = None )

매개변수

  • vocab_size (int, 선택 사항, 기본값 30522) — 모델의 어휘 크기입니다. input_ids로 표현할 수 있는 서로 다른 토큰의 수를 정의합니다.
  • hidden_size (int, 선택 사항, 기본값 768) — 숨겨진 표현의 차원입니다.
  • num_hidden_layers (int, 선택 사항, 기본값 12) — Transformer 디코더의 숨겨진 레이어 수.
  • num_attention_heads (int, 선택 사항, 기본값 12) — Transformer decoder의 각 attention layer에 사용할 attention head의 수입니다.
  • intermediate_size (int, 선택 사항, 기본값 3072) — MLP 표현의 차원입니다.
  • hidden_act (str, 선택 사항, 기본값 gelu) — 디코더에서 사용되는 비선형 활성화 함수(함수 또는 문자열)입니다. 예를 들어, "gelu", "relu", "silu" 등이 있습니다.
  • hidden_dropout_prob (Union[float, int], 선택 사항, 기본값 0.1) — 임베딩, 인코더, 풀러의 모든 완전 연결 계층에 적용되는 드롭아웃 확률입니다.
  • attention_probs_dropout_prob (Union[float, int], 선택 사항, 기본값 0.1) — Attention 확률에 적용할 dropout 비율입니다.
  • max_position_embeddings (int, 선택 사항, 기본값 512) — 이 모델이 사용될 수 있는 최대 시퀀스 길이입니다.
  • type_vocab_size (int, 선택 사항, 기본값 2) — token_type_ids의 어휘 크기입니다.
  • initializer_range (float, 선택 사항, 기본값 0.02) — 모든 가중치 행렬을 초기화하는 truncated_normal_initializer의 표준 편차입니다.
  • layer_norm_eps (float, 선택 사항, 기본값 1e-12) — 레이어 정규화 레이어에서 사용되는 epsilon 값입니다.
  • pad_token_id (int, 선택 사항, 기본값 0) — 어휘에서 패딩에 사용되는 토큰 ID입니다.
  • bos_token_id (int, 선택 사항, 기본값 0) — 어휘에서 스트림 시작에 사용되는 토큰 id입니다.
  • eos_token_id (Union[int, list[int]], 선택 사항, 기본값 2) — 어휘에서 스트림 종료에 사용되는 토큰 ID입니다.
  • max_xpath_tag_unit_embeddings (int, 선택, 기본값 256) — xpath 태그 단위 임베딩이 사용할 수 있는 최대 값입니다. 안전을 위해 일반적으로 큰 값(예: 256)으로 설정합니다.
  • max_xpath_subs_unit_embeddings (int, 선택, 기본값 1024) — xpath subscript unit embedding이 사용할 수 있는 최대 값입니다. 일반적으로 안전을 위해 충분히 큰 값(예: 1024)으로 설정합니다.
  • tag_pad_id (int, 선택, 기본값 216) — xpath 태그에서 패딩 토큰의 id입니다.
  • subs_pad_id (int, 선택 사항, 기본값 1001) — xpath 하위 인덱스에서 패딩 토큰의 id입니다.
  • xpath_unit_hidden_size (int, 선택 사항, 기본값 32) — xpath의 각 unit의 hidden size입니다.
  • max_depth (int, 선택 사항, 기본값 50) — xpath의 최대 깊이입니다.
  • use_cache (bool, 선택 사항, 기본값 True) — 모델이 마지막 key/values attention을 반환할지 여부입니다(모든 모델에서 사용되지 않음). config.is_decoder=True인 경우 또는 모델이 decoder-only 생성 모델인 경우에만 관련이 있습니다.
  • classifier_dropout (Union[float, int], 선택) — 분류기에 적용할 dropout 비율입니다.

이것은 MarkupLMModel의 구성을 저장하기 위한 구성 클래스입니다. 지정된 인자에 따라 Markuplm 모델을 인스턴스화하여 모델 아키텍처를 정의하는 데 사용됩니다. 기본값으로 구성을 인스턴스화하면 microsoft/markuplm-base와 유사한 구성이 생성됩니다.

Configuration 객체는 PreTrainedConfig를 상속하며 모델 출력을 제어하는 데 사용할 수 있습니다. 자세한 내용은 PreTrainedConfig의 문서를 참고하세요.

예:

>>> from transformers import MarkupLMModel, MarkupLMConfig

>>> # Initializing a MarkupLM microsoft/markuplm-base style configuration
>>> configuration = MarkupLMConfig()

>>> # Initializing a model from the microsoft/markuplm-base style configuration
>>> model = MarkupLMModel(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config

MarkupLMFeatureExtractor

클래스 transformers.MarkupLMFeatureExtractor

< >

( **kwargs )

MarkupLM feature extractor를 생성합니다. 이를 사용하면 HTML 문자열에서 노드 목록과 해당 xpath를 가져올 수 있습니다.

이 feature extractor는 PreTrainedFeatureExtractor()를 상속하며, 이 클래스에는 대부분의 주요 메서드가 포함되어 있습니다. 해당 메서드에 대한 자세한 내용은 이 상위 클래스를 참고하세요.

__call__

< >

( html_strings ) → BatchFeature

매개변수

  • html_strings (str, list[str]) — 노드와 해당 xpath를 추출할 HTML 문자열 또는 HTML 문자열 배치입니다.

반환값

BatchFeature

다음 필드를 가진 BatchFeature:

  • nodes — 노드.
  • xpaths — 해당 xpaths.

하나 이상의 HTML 문자열을 모델에 맞게 준비하는 주요 메서드입니다.

예:

>>> from transformers import MarkupLMFeatureExtractor

>>> page_name_1 = "page1.html"
>>> page_name_2 = "page2.html"
>>> page_name_3 = "page3.html"

>>> with open(page_name_1) as f:
...     single_html_string = f.read()

>>> feature_extractor = MarkupLMFeatureExtractor()

>>> # single example
>>> encoding = feature_extractor(single_html_string)
>>> print(encoding.keys())
>>> # dict_keys(['nodes', 'xpaths'])

>>> # batched example

>>> multi_html_strings = []

>>> with open(page_name_2) as f:
...     multi_html_strings.append(f.read())
>>> with open(page_name_3) as f:
...     multi_html_strings.append(f.read())

>>> encoding = feature_extractor(multi_html_strings)
>>> print(encoding.keys())
>>> # dict_keys(['nodes', 'xpaths'])

MarkupLMTokenizer

클래스 transformers.MarkupLMTokenizer

< >

( tags_dictvocab: str | dict[str, int] | list[tuple[str, float]] | None = Nonemerges: str | list[str] | None = Noneerrors = 'replace'bos_token = '<s>'eos_token = '</s>'sep_token = '</s>'cls_token = '<s>'unk_token = '<unk>'pad_token = '<pad>'mask_token = '<mask>'add_prefix_space = Falsemax_depth = 50max_width = 1000pad_width = 1001pad_token_label = -100only_label_first_subword = Truetrim_offsets = False**kwargs )

매개변수

  • vocab (str 또는 dict[str, int], 선택) — 사용자 정의 어휘 사전입니다. 제공되지 않으면 vocab_file에서 어휘가 로드됩니다.
  • merges (str 또는 list[str], 선택) — 사용자 정의 merges 목록입니다. 제공되지 않으면 merges_file에서 merges를 로드합니다.
  • errors (str, 선택, 기본값 "replace") — 바이트를 UTF-8로 디코딩할 때 따를 패러다임. 자세한 내용은 bytes.decode를 참조하세요.
  • bos_token (str, 선택 사항, 기본값은 "<s>") — 사전 학습 시 사용된 시퀀스 시작 토큰입니다. 시퀀스 분류기 토큰으로 사용할 수 있습니다.

    특수 토큰을 사용하여 시퀀스를 구성할 때, 시퀀스의 시작에 사용되는 토큰은 이 토큰이 아닙니다. 사용되는 토큰은 cls_token입니다.

  • eos_token (str, 선택 사항, 기본값은 "</s>") — 시퀀스 종료 토큰입니다. 특수 토큰을 사용하여 시퀀스를 구성할 때, 시퀀스 종료에 사용되는 토큰은 이 토큰이 아닙니다. 시퀀스 종료에 사용되는 토큰은 sep_token입니다.

    특수 토큰을 사용하여 시퀀스를 구성할 때, 시퀀스 끝에는 이 토큰이 사용되지 않습니다. 사용되는 토큰은 sep_token입니다.

  • sep_token (str, 선택, 기본값 "</s>") — 여러 시퀀스로 시퀀스를 구성할 때 사용되는 구분 토큰입니다. 예를 들어 시퀀스 분류의 두 시퀀스나 질의응답의 텍스트와 질문 등에 사용됩니다. 특수 토큰으로 구성된 시퀀스의 마지막 토큰으로도 사용됩니다.
  • cls_token (str, 선택 사항, 기본값 "<s>") — 시퀀스 분류(토큰별 분류가 아닌 전체 시퀀스 분류)를 수행할 때 사용되는 분류기 토큰입니다. 특수 토큰을 사용하여 시퀀스를 구성할 경우 시퀀스의 첫 번째 토큰입니다.
  • unk_token (str, 선택 사항, 기본값 "<unk>") — 미지의 토큰입니다. 어휘에 없는 토큰은 ID로 변환할 수 없으므로, 대신 이 토큰으로 설정됩니다.
  • pad_token (str, 선택 사항, 기본값 "<pad>") — 패딩에 사용되는 토큰입니다. 예를 들어, 길이가 다른 시퀀스를 배치(batching)할 때 사용됩니다.
  • mask_token (str, 선택 사항, 기본값 "<mask>") — 값을 마스킹하는 데 사용되는 토큰입니다. 이는 masked language modeling으로 이 모델을 학습할 때 사용되는 토큰이며, 모델이 예측을 시도하는 대상이 되는 토큰입니다.
  • add_prefix_space (bool, 선택 사항, 기본값 False) — 입력에 공백을 앞에 추가할지 여부입니다. 이를 통해 첫 번째 단어를 다른 단어와 동일하게 처리할 수 있습니다. (RoBERTa 토크나이저는 앞선 공백을 통해 단어의 시작을 감지합니다).

MarkupLM 토크나이저를 구성합니다. 바이트 수준 Byte-Pair-Encoding(BPE)에 기반합니다.

MarkupLMTokenizer는 HTML 문자열을 토큰 수준의 input_ids, attention_mask, token_type_ids, xpath_tags_seq, xpath_tags_seq로 변환하는 데 사용할 수 있습니다. 이 토크나이저는 TokenizersBackend를 상속하며, 대부분의 주요 메서드를 포함하고 tokenizers 백엔드가 항상 인스턴스화되도록 보장합니다.

이 메서드에 대한 자세한 내용은 이 상위 클래스를 참고하세요.

build_inputs_with_special_tokens

< >

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

매개변수

  • token_ids_0 (list[int]) — 특별 토큰이 추가될 ID 목록입니다.
  • token_ids_1 (list[int], 선택 사항) — 시퀀스 쌍을 위한 선택적 두 번째 ID 목록입니다.

반환값

list[int]

적절한 특수 토큰이 포함된 입력 ID 목록

시퀀스 분류 작업을 위해 시퀀스 하나 또는 시퀀스 쌍을 연결하고 특수 토큰을 추가하여 모델 입력을 구성합니다. RoBERTa 시퀀스는 다음 형식을 가집니다:

  • 단일 시퀀스: <s> X </s>
  • 시퀀스 쌍: <s> A </s></s> B </s>

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]

매개변수

  • token_ids_0 — (이미 포맷된) 시퀀스의 ID 목록.
  • token_ids_1 — already_has_special_tokens=True인 경우 사용되지 않습니다. 이 경우 None이어야 합니다.
  • already_has_special_tokens — 시퀀스가 이미 특수 토큰으로 포맷되어 있는지 여부.

반환값

범위 [0, 1]의 정수 목록

특수 토큰은 1, 시퀀스 토큰은 0입니다.

…

빠른 토크나이저의 경우, 데이터 콜레이터는 이미 포맷된 시퀀스에 대한 마스크를 생성하기 위해 already_has_special_tokens=True를 전달하여 이 함수를 호출합니다. 이 경우 all_special_ids에 대한 멤버십을 확인하여 마스크를 계산합니다.

create_token_type_ids_from_sequences

< >

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

매개변수

  • token_ids_0 (list[int]) — ID 목록.
  • token_ids_1 (list[int], 선택 사항) — 시퀀스 쌍을 위한 선택적 두 번째 ID 목록입니다.

반환값

list[int]

0으로만 이루어진 리스트.

시퀀스-페어 분류 작업에 사용될 두 시퀀스로부터 마스크를 생성합니다. RoBERTa는 토큰 타입 ID를 사용하지 않으므로, 0의 리스트가 반환됩니다.

save_vocabulary

< >

( save_directory: strfilename_prefix: str | None = None )

MarkupLMTokenizerFast

클래스 transformers.MarkupLMTokenizer

< >

( tags_dictvocab: str | dict[str, int] | list[tuple[str, float]] | None = Nonemerges: str | list[str] | None = Noneerrors = 'replace'bos_token = '<s>'eos_token = '</s>'sep_token = '</s>'cls_token = '<s>'unk_token = '<unk>'pad_token = '<pad>'mask_token = '<mask>'add_prefix_space = Falsemax_depth = 50max_width = 1000pad_width = 1001pad_token_label = -100only_label_first_subword = Truetrim_offsets = False**kwargs )

매개변수

  • vocab (str 또는 dict[str, int], 선택) — 사용자 정의 어휘 사전입니다. 제공되지 않으면 vocab_file에서 어휘가 로드됩니다.
  • merges (str 또는 list[str], 선택) — 사용자 정의 merges 목록입니다. 제공되지 않으면 merges_file에서 merges를 로드합니다.
  • errors (str, 선택, 기본값 "replace") — 바이트를 UTF-8로 디코딩할 때 따를 패러다임. 자세한 내용은 bytes.decode를 참조하세요.
  • bos_token (str, 선택 사항, 기본값은 "<s>") — 사전 학습 시 사용된 시퀀스 시작 토큰입니다. 시퀀스 분류기 토큰으로 사용할 수 있습니다.

    특수 토큰을 사용하여 시퀀스를 구성할 때, 시퀀스의 시작에 사용되는 토큰은 이 토큰이 아닙니다. 사용되는 토큰은 cls_token입니다.

  • eos_token (str, 선택 사항, 기본값은 "</s>") — 시퀀스 종료 토큰입니다. 특수 토큰을 사용하여 시퀀스를 구성할 때, 시퀀스 종료에 사용되는 토큰은 이 토큰이 아닙니다. 시퀀스 종료에 사용되는 토큰은 sep_token입니다.

    특수 토큰을 사용하여 시퀀스를 구성할 때, 시퀀스 끝에는 이 토큰이 사용되지 않습니다. 사용되는 토큰은 sep_token입니다.

  • sep_token (str, 선택, 기본값 "</s>") — 여러 시퀀스로 시퀀스를 구성할 때 사용되는 구분 토큰입니다. 예를 들어 시퀀스 분류의 두 시퀀스나 질의응답의 텍스트와 질문 등에 사용됩니다. 특수 토큰으로 구성된 시퀀스의 마지막 토큰으로도 사용됩니다.
  • cls_token (str, 선택 사항, 기본값 "<s>") — 시퀀스 분류(토큰별 분류가 아닌 전체 시퀀스 분류)를 수행할 때 사용되는 분류기 토큰입니다. 특수 토큰을 사용하여 시퀀스를 구성할 경우 시퀀스의 첫 번째 토큰입니다.
  • unk_token (str, 선택 사항, 기본값 "<unk>") — 미지의 토큰입니다. 어휘에 없는 토큰은 ID로 변환할 수 없으므로, 대신 이 토큰으로 설정됩니다.
  • pad_token (str, 선택 사항, 기본값 "<pad>") — 패딩에 사용되는 토큰입니다. 예를 들어, 길이가 다른 시퀀스를 배치(batching)할 때 사용됩니다.
  • mask_token (str, 선택 사항, 기본값 "<mask>") — 값을 마스킹하는 데 사용되는 토큰입니다. 이는 masked language modeling으로 이 모델을 학습할 때 사용되는 토큰이며, 모델이 예측을 시도하는 대상이 되는 토큰입니다.
  • add_prefix_space (bool, 선택 사항, 기본값 False) — 입력에 공백을 앞에 추가할지 여부입니다. 이를 통해 첫 번째 단어를 다른 단어와 동일하게 처리할 수 있습니다. (RoBERTa 토크나이저는 앞선 공백을 통해 단어의 시작을 감지합니다).

MarkupLM 토크나이저를 구성합니다. 바이트 수준 Byte-Pair-Encoding(BPE)에 기반합니다.

MarkupLMTokenizer는 HTML 문자열을 토큰 수준의 input_ids, attention_mask, token_type_ids, xpath_tags_seq, xpath_tags_seq로 변환하는 데 사용할 수 있습니다. 이 토크나이저는 TokenizersBackend를 상속하며, 대부분의 주요 메서드를 포함하고 tokenizers 백엔드가 항상 인스턴스화되도록 보장합니다.

이 메서드에 대한 자세한 내용은 이 상위 클래스를 참고하세요.

batch_encode_plus

< >

( batch_text_or_text_pairs: list[str] | list[tuple[str, str]] | list[list[str]]is_pair: bool | None = Nonexpaths: list[list[list[int]]] | None = Nonenode_labels: list[int] | list[list[int]] | 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 = Nonestride: int = 0pad_to_multiple_of: int | None = Nonepadding_side: str | None = Nonereturn_tensors: str | transformers.utils.generic.TensorType | None = Nonereturn_token_type_ids: bool | None = Nonereturn_attention_mask: bool | None = Nonereturn_overflowing_tokens: bool = Falsereturn_special_tokens_mask: bool = Falsereturn_offsets_mapping: bool = Falsereturn_length: bool = Falseverbose: bool = True**kwargs )

add_special_tokens (bool, 선택 사항, 기본값 True): 시퀀스를 인코딩할 때 특수 토큰을 추가할지 여부입니다. 이는 입력 id에 자동으로 추가되는 토큰을 정의하는 PretrainedTokenizerBase.build_inputs_with_special_tokens 함수를 사용합니다. bos 또는 eos 토큰을 자동으로 추가하려는 경우 유용합니다. padding (bool, str 또는 PaddingStrategy, 선택 사항, 기본값 False): 패딩을 활성화하고 제어합니다. 다음 값을 허용합니다:

  • True 또는 'longest': 배치 내 가장 긴 시퀀스 길이에 맞게 패딩을 수행합니다(단일 시퀀스만 제공된 경우 패딩을 하지 않음).

  • 'max_length': max_length 인수로 지정된 최대 길이로 패딩하거나, 해당 인수가 제공되지 않으면 모델이 허용하는 최대 입력 길이로 패딩합니다.

  • False 또는 'do_not_pad'(기본값): 패딩을 하지 않습니다(즉, 길이가 서로 다른 시퀀스로 구성된 배치로 출력할 수 있습니다). truncation(bool, str 또는 TruncationStrategy, 선택 사항, 기본값 False): 트렁케이션을 활성화하고 제어합니다. 다음 값을 허용합니다:

  • True 또는 'longest_first': max_length 인수로 지정된 최대 길이로 잘라내거나, 해당 인수가 제공되지 않으면 모델이 허용하는 최대 입력 길이로 잘라냅니다. 이 경우 토큰 단위로 잘라내며, 시퀀스 쌍(또는 쌍의 배치)이 제공되면 쌍 중 가장 긴 시퀀스에서 토큰을 하나씩 제거합니다.

  • 'only_first': max_length 인수로 지정된 최대 길이 또는 해당 인수가 제공되지 않은 경우 모델이 허용하는 최대 입력 길이로 잘립니다. 이 옵션은 시퀀스 쌍(또는 쌍의 배치)이 제공된 경우 쌍의 첫 번째 시퀀스만 잘립니다.

  • 'only_second': max_length 인수로 지정된 최대 길이로 잘라내거나, 해당 인수가 제공되지 않은 경우 모델이 허용하는 최대 입력 길이로 잘라냅니다. 이 옵션은 시퀀스 쌍(또는 쌍의 배치)이 제공된 경우에만 쌍의 두 번째 시퀀스를 잘라냅니다.

  • False 또는 'do_not_truncate' (기본값): 잘라내지 않음(즉, 모델이 허용하는 최대 입력 크기보다 긴 시퀀스 길이를 가진 배치로 출력할 수 있음). max_length (int, 선택 사항): 잘라내기/패딩 매개변수 중 하나로 사용할 최대 길이를 제어합니다.

If left unset or set to None, this will use the predefined model maximum length if a maximum length is required by one of the truncation/padding parameters. If the model has no specific maximum input length (like XLNet) truncation/padding to a maximum length will be deactivated. stride (int, optional, defaults to 0): If set to a number along with max_length, the overflowing tokens returned when return_overflowing_tokens=True will contain some tokens from the end of the truncated sequence returned to provide some overlap between truncated and overflowing sequences. The value of this argument defines the number of overlapping tokens. is_split_into_words (bool, optional, defaults to False): Whether or not the input is already pre-tokenized (e.g., split into words). If set to True, the tokenizer assumes the input is already split into words (for instance, by splitting it on whitespace) which it will tokenize. This is useful for NER or token classification. pad_to_multiple_of (int, optional): If set will pad the sequence to a multiple of the provided value. Requires padding to be activated. This is especially useful to enable the use of Tensor Cores on NVIDIA hardware with compute capability >= 7.5 (Volta). padding_side (str, optional): The side on which the model should have padding applied. Should be selected between [‘right’, ‘left’]. Default value is picked from the class attribute of the same name. return_tensors (str or TensorType, optional): If set, will return tensors instead of list of python integers. Acceptable values are:

  • 'pt': PyTorch torch.Tensor 객체를 반환합니다.
  • 'np': Numpy np.ndarray 객체를 반환합니다.

add_special_tokens (bool, 선택 사항, 기본값 True): 모델에 해당하는 특수 토큰을 포함하여 시퀀스를 인코딩할지 여부입니다. padding (bool, str 또는 PaddingStrategy, 선택 사항, 기본값 False): 패딩을 활성화하고 제어합니다. 다음 값을 허용합니다:

  • True 또는 'longest': 배치 내 가장 긴 시퀀스 길이에 맞게 패딩을 수행합니다(단일 시퀀스만 제공된 경우 패딩을 하지 않음).

  • 'max_length': max_length 인수로 지정된 최대 길이로 패딩하거나, 해당 인수가 제공되지 않으면 모델이 허용하는 최대 입력 길이로 패딩합니다.

  • False 또는 'do_not_pad'(기본값): 패딩을 하지 않습니다(즉, 길이가 서로 다른 시퀀스로 구성된 배치로 출력할 수 있습니다). truncation(bool, str 또는 TruncationStrategy, 선택 사항, 기본값 False): 트렁케이션을 활성화하고 제어합니다. 다음 값을 허용합니다:

  • True 또는 'longest_first': max_length 인수로 지정된 최대 길이로 잘라내거나, 해당 인수가 제공되지 않으면 모델이 허용하는 최대 입력 길이로 잘라냅니다. 이 경우 토큰 단위로 잘라내며, 시퀀스 쌍(또는 쌍의 배치)이 제공되면 쌍 중 가장 긴 시퀀스에서 토큰을 하나씩 제거합니다.

  • 'only_first': max_length 인수로 지정된 최대 길이 또는 해당 인수가 제공되지 않은 경우 모델이 허용하는 최대 입력 길이로 잘립니다. 이 옵션은 시퀀스 쌍(또는 쌍의 배치)이 제공된 경우 쌍의 첫 번째 시퀀스만 잘립니다.

  • 'only_second': max_length 인수로 지정된 최대 길이로 잘라내거나, 해당 인수가 제공되지 않은 경우 모델이 허용하는 최대 입력 길이로 잘라냅니다. 이 옵션은 시퀀스 쌍(또는 쌍의 배치)이 제공된 경우에만 쌍의 두 번째 시퀀스를 잘라냅니다.

  • False or 'do_not_truncate' (default): No truncation (i.e., can output batch with sequence lengths greater than the model maximum admissible input size). max_length (int, optional): Controls the maximum length to use by one of the truncation/padding parameters. If left unset or set to None, this will use the predefined model maximum length if a maximum length is required by one of the truncation/padding parameters. If the model has no specific maximum input length (like XLNet) truncation/padding to a maximum length will be deactivated. stride (int, optional, defaults to 0): If set to a number along with max_length, the overflowing tokens returned when return_overflowing_tokens=True will contain some tokens from the end of the truncated sequence returned to provide some overlap between truncated and overflowing sequences. The value of this argument defines the number of overlapping tokens. is_split_into_words (bool, optional, defaults to False): Whether or not the input is already pretokenized (e.g. split into words). Set this to True if you are passing pretokenized inputs to avoid additional tokenization. pad_to_multiple_of (int, optional): If set will pad the sequence to a multiple of the provided value. This is especially useful to enable the use of Tensor Cores on NVIDIA hardware with compute capability >= 7.5 (Volta). return_tensors (str or TensorType, optional): If set, will return tensors instead of list of python integers. Acceptable values are:

  • 'pt': PyTorch torch.Tensor 객체를 반환합니다.

  • 'np': Numpy np.ndarray 객체를 반환합니다.

build_inputs_with_special_tokens

< >

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

매개변수

  • token_ids_0 (list[int]) — 특별 토큰이 추가될 ID 목록입니다.
  • token_ids_1 (list[int], 선택 사항) — 시퀀스 쌍을 위한 선택적 두 번째 ID 목록입니다.

반환값

list[int]

적절한 특수 토큰이 포함된 입력 ID 목록

시퀀스 분류 작업을 위해 시퀀스 하나 또는 시퀀스 쌍을 연결하고 특수 토큰을 추가하여 모델 입력을 구성합니다. RoBERTa 시퀀스는 다음 형식을 가집니다:

  • 단일 시퀀스: <s> X </s>
  • 시퀀스 쌍: <s> A </s></s> B </s>

create_token_type_ids_from_sequences

< >

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

매개변수

  • token_ids_0 (list[int]) — ID 목록.
  • token_ids_1 (list[int], 선택 사항) — 시퀀스 쌍을 위한 선택적 두 번째 ID 목록입니다.

반환값

list[int]

0으로만 이루어진 리스트.

시퀀스-페어 분류 작업에 사용될 두 시퀀스로부터 마스크를 생성합니다. RoBERTa는 토큰 타입 ID를 사용하지 않으므로, 0의 리스트가 반환됩니다.

encode_plus

< >

( text: str | list[str]text_pair: list[str] | None = Nonexpaths: list[list[int]] | None = Nonenode_labels: list[int] | 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 = Nonestride: int = 0pad_to_multiple_of: int | None = Nonepadding_side: str | None = Nonereturn_tensors: str | transformers.utils.generic.TensorType | None = Nonereturn_token_type_ids: bool | None = Nonereturn_attention_mask: bool | None = Nonereturn_overflowing_tokens: bool = Falsereturn_special_tokens_mask: bool = Falsereturn_offsets_mapping: bool = Falsereturn_length: bool = Falseverbose: bool = True**kwargs )

매개변수

  • text (str, list[str], list[list[str]]) — 인코딩할 첫 번째 시퀀스입니다. 문자열, 문자열 목록, 문자열 목록의 목록 형태일 수 있습니다.
  • text_pair (list[str] 또는 list[int], 선택 사항) — 인코딩할 선택적 두 번째 시퀀스입니다. 이는 문자열 목록(단일 예시의 단어) 또는 문자열 목록의 목록(배치의 예시 단어)일 수 있습니다.
  • add_special_tokens (bool, 선택 사항, 기본값 True) — 시퀀스를 인코딩할 때 특수 토큰을 추가할지 여부입니다. 이는 입력 ID에 자동으로 추가되는 토큰을 정의하는 기반 함수인 PretrainedTokenizerBase.build_inputs_with_special_tokens를 사용합니다. bos 또는 eos 토큰을 자동으로 추가하려는 경우 유용합니다.
  • padding (bool, str 또는 PaddingStrategy, 선택 사항, 기본값은 False) — 패딩을 활성화하고 제어합니다. 다음 값을 허용합니다:
    • True 또는 'longest': 배치 내 가장 긴 시퀀스 길이에 맞게 패딩을 수행합니다(단일 시퀀스만 제공된 경우 패딩을 하지 않음).
    • 'max_length': max_length 인수로 지정된 최대 길이로 패딩하거나, 해당 인수가 제공되지 않으면 모델이 허용하는 최대 입력 길이로 패딩합니다.
    • False 또는 'do_not_pad' (기본값): 패딩을 하지 않습니다(즉, 서로 다른 길이의 시퀀스로 구성된 배치로 출력할 수 있습니다).
  • truncation (bool, str 또는 TruncationStrategy, 선택 사항, 기본값은 False) — 잘림을 활성화하고 제어합니다. 다음 값을 허용합니다:
    • True 또는 'longest_first': max_length 인수로 지정된 최대 길이로 잘라내거나, 해당 인수가 제공되지 않으면 모델이 허용하는 최대 입력 길이로 잘라냅니다. 이 경우 토큰 단위로 잘라내며, 시퀀스 쌍(또는 쌍의 배치)이 제공되면 쌍 중 가장 긴 시퀀스에서 토큰을 하나씩 제거합니다.
    • 'only_first': max_length 인수로 지정된 최대 길이 또는 해당 인수가 제공되지 않은 경우 모델이 허용하는 최대 입력 길이로 잘립니다. 이 옵션은 시퀀스 쌍(또는 쌍의 배치)이 제공된 경우 쌍의 첫 번째 시퀀스만 잘립니다.
    • 'only_second': max_length 인수로 지정된 최대 길이로 잘라내거나, 해당 인수가 제공되지 않은 경우 모델이 허용하는 최대 입력 길이로 잘라냅니다. 이 옵션은 시퀀스 쌍(또는 쌍의 배치)이 제공된 경우에만 쌍의 두 번째 시퀀스를 잘라냅니다.
    • False 또는 'do_not_truncate' (기본값): 잘라내기 없음 (즉, 모델이 허용하는 최대 입력 크기보다 긴 시퀀스 길이를 가진 배치 출력 가능).
  • max_length (int, 선택 사항) — truncation/padding 파라미터 중 하나가 사용할 최대 길이를 제어합니다.

    설정하지 않거나 None으로 설정하면, truncation/padding 파라미터 중 하나가 최대 길이를 요구할 경우 미리 정의된 모델 최대 길이를 사용합니다. 모델에 특정 최대 입력 길이가 없는 경우(XLNet 등) 최대 길이로 truncation/padding하는 기능이 비활성화됩니다.

  • stride (int, 선택 사항, 기본값 0) — max_length와 함께 숫자로 설정하면, return_overflowing_tokens=True일 때 반환되는 오버플로 토큰에는 잘린 시퀀스의 끝부분에서 가져온 일부 토큰이 포함됩니다. 이를 통해 잘린 시퀀스와 오버플로 시퀀스 사이에 일부 중복이 생깁니다. 이 인수의 값은 중복되는 토큰의 수를 정의합니다.
  • is_split_into_words (bool, 선택 사항, 기본값 False) — 입력이 이미 사전 토큰화(예: 단어 단위로 분리)되었는지 여부입니다. True로 설정하면 토크나이저는 입력이 이미 단어 단위로 분리되어 있다고 가정하고(예: 공백 기준으로 분리) 이를 토큰화합니다. 이는 NER 또는 토큰 분류에 유용합니다.
  • pad_to_multiple_of (int, 선택 사항) — 설정하면 시퀀스를 제공된 값의 배수로 패딩합니다. padding이 활성화되어 있어야 합니다. 이는 Volta에서 >= 7.5의 컴퓨트 기능을 가진 NVIDIA 하드웨어에서 Tensor Cores 사용을 활성화하는 데 특히 유용합니다.
  • padding_side (str, 선택 사항) — 모델에 패딩을 적용할 쪽입니다. [‘right’, ‘left’] 중에서 선택해야 합니다. 기본값은 동일한 이름의 클래스 속성에서 가져옵니다.
  • return_tensors (str 또는 TensorType, 선택 사항) — 설정된 경우, Python 정수 목록 대신 텐서를 반환합니다. 허용되는 값은 다음과 같습니다:
    • 'pt': PyTorch torch.Tensor 객체를 반환합니다.
    • 'np': Numpy np.ndarray 객체를 반환합니다.
  • add_special_tokens (bool, 선택 사항, 기본값 True) — 해당 모델에 대한 특수 토큰을 포함하여 시퀀스를 인코딩할지 여부입니다.
  • padding (bool, str 또는 PaddingStrategy, 선택 사항, 기본값은 False) — 패딩을 활성화하고 제어합니다. 다음 값을 받을 수 있습니다: True 또는 'longest': 배치 내 가장 긴 시퀀스 길이로 패딩합니다(단일 시퀀스만 제공된 경우 패딩하지 않음). 'max_length': max_length 인수로 지정된 최대 길이로 패딩하거나, 해당 인수가 제공되지 않은 경우 모델이 허용하는 최대 입력 길이로 패딩합니다. False 또는 'do_not_pad' (기본값): 패딩하지 않음(즉, 서로 다른 길이의 시퀀스로 구성된 배치 출력 가능).
    • True 또는 'longest': 배치 내 가장 긴 시퀀스 길이에 맞게 패딩을 수행합니다(단일 시퀀스만 제공된 경우 패딩을 하지 않음).
    • 'max_length': max_length 인수로 지정된 최대 길이로 패딩하거나, 해당 인수가 제공되지 않으면 모델이 허용하는 최대 입력 길이로 패딩합니다.
    • False 또는 'do_not_pad' (기본값): 패딩을 하지 않습니다(즉, 서로 다른 길이의 시퀀스로 구성된 배치로 출력할 수 있습니다).
  • truncation (bool, str 또는 TruncationStrategy, 선택 사항, 기본값은 False) — 잘림을 활성화하고 제어합니다. 다음 값을 허용합니다:
    • True 또는 'longest_first': max_length 인수로 지정된 최대 길이로 잘라내거나, 해당 인수가 제공되지 않으면 모델이 허용하는 최대 입력 길이로 잘라냅니다. 이 경우 토큰 단위로 잘라내며, 시퀀스 쌍(또는 쌍의 배치)이 제공되면 쌍 중 가장 긴 시퀀스에서 토큰을 하나씩 제거합니다.
    • 'only_first': max_length 인수로 지정된 최대 길이 또는 해당 인수가 제공되지 않은 경우 모델이 허용하는 최대 입력 길이로 잘립니다. 이 옵션은 시퀀스 쌍(또는 쌍의 배치)이 제공된 경우 쌍의 첫 번째 시퀀스만 잘립니다.
    • 'only_second': max_length 인수로 지정된 최대 길이로 잘라내거나, 해당 인수가 제공되지 않은 경우 모델이 허용하는 최대 입력 길이로 잘라냅니다. 이 옵션은 시퀀스 쌍(또는 쌍의 배치)이 제공된 경우에만 쌍의 두 번째 시퀀스를 잘라냅니다.
    • False 또는 'do_not_truncate' (기본값): 잘라내기 없음 (즉, 모델이 허용하는 최대 입력 크기보다 긴 시퀀스 길이를 가진 배치 출력 가능).
  • max_length (int, 선택 사항) — truncation/padding 파라미터 중 하나가 사용할 최대 길이를 제어합니다. 설정하지 않거나 None으로 설정한 경우, truncation/padding 파라미터 중 하나가 최대 길이를 요구하면 미리 정의된 모델의 최대 길이를 사용합니다. 모델에 특정 최대 입력 길이가 없는 경우(XLNet 등) 최대 길이로 truncation/padding하는 기능이 비활성화됩니다.
  • stride (int, 선택 사항, 기본값 0) — max_length와 함께 숫자로 설정하면, return_overflowing_tokens=True일 때 반환되는 오버플로 토큰에는 잘린 시퀀스의 끝부분에서 가져온 일부 토큰이 포함됩니다. 이를 통해 잘린 시퀀스와 오버플로 시퀀스 사이에 일부 중복이 생깁니다. 이 인수의 값은 중복되는 토큰의 수를 정의합니다.
  • is_split_into_words (bool, 선택 사항, 기본값 False) — 입력이 이미 사전 토큰화(예: 단어 단위로 분할)되었는지 여부입니다. 추가 토큰화를 피하기 위해 사전 토큰화된 입력을 전달하는 경우 이 값을 True로 설정하세요.
  • pad_to_multiple_of (int, 선택 사항) — 설정된 경우, 시퀀스를 제공된 값의 배수로 패딩합니다. 이는 NVIDIA 하드웨어에서 Volta 아키텍처의 연산 능력 >= 7.5를 활용하여 Tensor Cores를 사용하는 데 특히 유용합니다.
  • return_tensors (str 또는 TensorType, 선택 사항) — 설정된 경우, Python 정수 목록 대신 텐서를 반환합니다. 허용되는 값은 다음과 같습니다:
    • 'pt': PyTorch torch.Tensor 객체를 반환합니다.
    • 'np': Numpy np.ndarray 객체를 반환합니다.

시퀀스 또는 시퀀스 쌍을 토큰화하여 모델에 맞게 준비합니다. .. warning:: 이 메서드는 비추천(deprecated)되었습니다. 대신 __call__를 사용해야 합니다.

get_xpath_seq

< >

( xpath )

…

MarkupLMProcessor

클래스 transformers.MarkupLMProcessor

< >

( feature_extractortokenizer )

매개변수

  • feature_extractor (feature_extractor_class) — feature extractor는 필수 입력입니다.
  • tokenizer (MarkupLMTokenizer) — 토크나이저는 필수 입력값입니다.

MarkupLMProcessor를 생성하며, feature extractor와 tokenizer를 단일 processor로 래핑합니다.

MarkupLMProcessor는 feature_extractor_class와 MarkupLMTokenizer의 모든 기능을 제공합니다. 자세한 내용은 ~feature_extractor_class와 ~MarkupLMTokenizer를 참고하세요.

__call__

< >

( html_strings = Nonenodes = Nonexpaths = Nonenode_labels = Nonequestions = Noneadd_special_tokens: bool = Truepadding: bool | str | transformers.utils.generic.PaddingStrategy = Falsetruncation: bool | str | transformers.tokenization_utils_base.TruncationStrategy = Nonemax_length: int | None = Nonestride: int = 0pad_to_multiple_of: int | 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 = Truereturn_tensors: str | transformers.utils.generic.TensorType | None = None**kwargs ) → ~tokenization_utils_base.BatchEncoding

매개변수

  • html_strings (str 또는 list[str], 선택) — 파싱 및 처리할 원시 HTML 문자열입니다. parse_html=True(기본값)인 경우, 이 문자열을 파싱하여 노드와 xpath를 자동으로 추출합니다. 이 인수를 제공하면 nodes, xpaths, node_labels는 제공하지 않아야 합니다. parse_html=True인 경우 필수입니다.
  • nodes (list[list[str]], 선택) — 각 내부 리스트가 단일 문서의 노드 텍스트 내용을 포함하는 리스트의 리스트 형태로, 미리 추출된 HTML 노드입니다. parse_html=False인 경우 필수입니다. parse_html=True인 경우 제공해서는 안 됩니다.
  • xpaths (list[list[str]], 선택 사항) — 노드에 해당하는 사전 추출된 XPath 표현식입니다. nodes와 동일한 구조를 가진 리스트의 리스트여야 하며, 각 XPath는 HTML 트리에서 해당 노드의 위치를 식별합니다. parse_html=False인 경우 필수입니다. parse_html=True인 경우 제공해서는 안 됩니다.
  • node_labels (list[list[int]], 선택 사항) — 노드의 라벨입니다. 일반적으로 학습 또는 파인튜닝 작업에 사용됩니다. nodes와 동일한 구조를 가진 리스트의 리스트여야 하며, 각 라벨은 노드 하나에 대응합니다. 선택 사항이며, parse_html=False인 경우에만 사용됩니다.
  • questions (str 또는 list[str], 선택 사항) — 질문-답변 작업에 사용할 질문 문자열입니다. 이 인자가 제공되면 토크나이저는 질문을 첫 번째 시퀀스로, 노드를 두 번째 시퀀스(text_pair)로 처리합니다. 단일 문자열이 제공되면 파싱된 HTML의 배치 차원과 일치하도록 리스트로 변환됩니다.
  • add_special_tokens (bool, 선택 사항, 기본값 True) — 시퀀스를 인코딩할 때 특수 토큰을 추가할지 여부입니다. 이는 입력 ID에 자동으로 추가되는 토큰을 정의하는 기반 함수인 PretrainedTokenizerBase.build_inputs_with_special_tokens를 사용합니다. bos 또는 eos 토큰을 자동으로 추가하려는 경우 유용합니다.
  • padding (bool, str 또는 PaddingStrategy, 선택 사항, 기본값은 False) — 패딩을 활성화하고 제어합니다. 다음 값을 받을 수 있습니다:
    • True 또는 'longest': 배치 내 가장 긴 시퀀스 길이에 맞게 패딩을 수행합니다(단일 시퀀스만 제공된 경우 패딩을 하지 않음).
    • 'max_length': max_length 인수로 지정된 최대 길이로 패딩하거나, 해당 인수가 제공되지 않으면 모델이 허용하는 최대 입력 길이로 패딩합니다.
    • False 또는 'do_not_pad' (기본값): 패딩을 하지 않습니다(즉, 서로 다른 길이의 시퀀스로 구성된 배치로 출력할 수 있습니다).
  • truncation (bool, str 또는 TruncationStrategy, 선택 사항) — 잘림(truncation)을 활성화하고 제어합니다. 다음 값을 받을 수 있습니다:
    • True 또는 'longest_first': max_length 인수로 지정된 최대 길이로 잘라내거나, 해당 인수가 제공되지 않으면 모델이 허용하는 최대 입력 길이로 잘라냅니다. 이 경우 토큰 단위로 잘라내며, 시퀀스 쌍(또는 쌍의 배치)이 제공되면 쌍 중 가장 긴 시퀀스에서 토큰을 하나씩 제거합니다.
    • 'only_first': max_length 인수로 지정된 최대 길이 또는 해당 인수가 제공되지 않은 경우 모델이 허용하는 최대 입력 길이로 잘립니다. 이 옵션은 시퀀스 쌍(또는 쌍의 배치)이 제공된 경우 쌍의 첫 번째 시퀀스만 잘립니다.
    • 'only_second': max_length 인수로 지정된 최대 길이로 잘라내거나, 해당 인수가 제공되지 않은 경우 모델이 허용하는 최대 입력 길이로 잘라냅니다. 이 옵션은 시퀀스 쌍(또는 쌍의 배치)이 제공된 경우에만 쌍의 두 번째 시퀀스를 잘라냅니다.
    • False 또는 'do_not_truncate' (기본값): 잘라내기 없음 (즉, 모델이 허용하는 최대 입력 크기보다 긴 시퀀스 길이를 가진 배치 출력 가능).
  • max_length (int, 선택 사항) — truncation/padding 파라미터 중 하나가 사용할 최대 길이를 제어합니다.

    설정하지 않거나 None으로 설정하면, truncation/padding 파라미터 중 하나가 최대 길이를 요구할 경우 미리 정의된 모델 최대 길이를 사용합니다. 모델에 특정 최대 입력 길이가 없는 경우(XLNet 등) 최대 길이로 truncation/padding하는 기능이 비활성화됩니다.

  • stride (int, 선택 사항, 기본값 0) — max_length와 함께 숫자로 설정하면, return_overflowing_tokens=True일 때 반환되는 오버플로 토큰에는 잘린 시퀀스의 끝부분에서 가져온 일부 토큰이 포함됩니다. 이를 통해 잘린 시퀀스와 오버플로 시퀀스 사이에 일부 중복이 생깁니다. 이 인수의 값은 중복되는 토큰의 수를 정의합니다.
  • pad_to_multiple_of (int, 선택 사항) — 설정된 경우, 제공된 값의 배수가 되도록 시퀀스를 패딩합니다. padding이 활성화되어 있어야 합니다. 이는 Volta에서 >= 7.5의 컴퓨트 기능을 가진 NVIDIA 하드웨어에서 Tensor Cores를 사용하도록 하는 데 특히 유용합니다.
  • return_token_type_ids (bool, 선택 사항) — 토큰 타입 ID를 반환할지 여부. 기본값으로 두면, 해당 토크나이저의 기본값에 따라 토큰 타입 ID를 반환합니다. 이 기본값은 return_outputs 속성으로 정의됩니다.

    토큰 타입 ID란 무엇인가요?

  • return_attention_mask (bool, 선택 사항) — attention mask를 반환할지 여부. 기본값으로 두면, return_outputs 속성에 의해 정의된 해당 tokenizer의 기본값에 따라 attention mask를 반환합니다.

    어텐션 마스크란 무엇인가요?

  • return_overflowing_tokens (bool, 선택 사항, 기본값 False) — 넘치는 토큰 시퀀스를 반환할지 여부입니다. 입력 ID의 시퀀스 쌍(또는 쌍의 배치)이 truncation_strategy = longest_first 또는 True와 함께 제공되면, 넘치는 토큰을 반환하는 대신 오류가 발생합니다.
  • return_special_tokens_mask (bool, 선택 사항, 기본값 False) — 특수 토큰 마스크 정보를 반환할지 여부.
  • return_offsets_mapping (bool, 선택 사항, 기본값은 False) — 각 토큰에 대해 (char_start, char_end) 를 반환할지 여부입니다.

    이 기능은 PreTrainedTokenizerFast를 상속하는 빠른 토크나이저에서만 사용할 수 있으며, Python의 토크나이저를 사용하는 경우 이 메서드는 NotImplementedError를 발생시킵니다.

  • return_length (bool, 선택 사항, 기본값 False) — 인코딩된 입력의 길이를 반환할지 여부.
  • verbose (bool, 선택 사항, 기본값 True) — 추가 정보와 경고를 출력할지 여부.
  • return_tensors (Union[str, ~utils.generic.TensorType], 선택 사항) — 설정된 경우, 특정 프레임워크의 텐서를 반환합니다. 허용되는 값은 다음과 같습니다:
    • 'pt': PyTorch torch.Tensor 객체를 반환합니다.
    • 'np': NumPy np.ndarray 객체를 반환합니다.

반환값

~tokenization_utils_base.BatchEncoding

  • data (dict, 선택) — __call__/encode_plus/batch_encode_plus 메서드가 반환하는 리스트/배열/텐서 딕셔너리 (‘input_ids’, ‘attention_mask’ 등).
  • encoding (tokenizers.Encoding 또는 Sequence[tokenizers.Encoding], 선택 사항) — 토크나이저가 워드/문자 공간에서 토큰 공간으로의 매핑과 같은 추가 정보를 출력하는 fast tokenizer인 경우, tokenizers.Encoding 인스턴스 또는 인스턴스 목록(배치의 경우)에 이 정보가 저장됩니다.
  • tensor_type (Union[None, str, TensorType], 선택 사항) — 초기화 시 PyTorch/Numpy 텐서에서 정수 목록을 변환하려면 여기에 tensor_type를 지정할 수 있습니다.
  • prepend_batch_axis (bool, 선택 사항, 기본값 False) — 텐서로 변환할 때 배치 축을 추가할지 여부(위에서 설명한 tensor_type 참조). tensor_type 매개변수가 설정된 경우에만 이 매개변수가 효과를 가지며, 그렇지 않으면 효과가 없습니다.
  • n_sequences (int, 선택 사항) — 각 인코딩이 나타내는 입력 시퀀스의 수(알 수 없는 경우 None, 단일 시퀀스인 경우 1, 시퀀스 쌍인 경우 2).

MarkupLMModel

클래스 transformers.MarkupLMModel

< >

( config: MarkupLMConfigadd_pooling_layer = True )

매개변수

  • config (MarkupLMConfig) — 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 관련된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.
  • add_pooling_layer (bool, 선택 사항, 기본값 True) — pooling layer를 추가할지 여부

특정 헤드가 위에 없는 상태에서 원시 hidden-states를 출력하는 기본 Markuplm Model입니다.

이 모델은 PreTrainedModel에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대한 세부 사항은 상위 클래스 문서를 확인하세요.

이 모델은 또한 PyTorch torch.nn.Module의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법 및 동작과 관련된 모든 사항은 PyTorch 문서를 참조하세요.

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Nonexpath_tags_seq: typing.Optional[torch.LongTensor] = Nonexpath_subs_seq: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.LongTensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutputWithPooling or tuple(torch.Tensor)

매개변수

  • input_ids (torch.LongTensor 형상이 (batch_size, sequence_length), 선택 사항) — 어휘(input vocabulary)에서 입력 시퀀스 토큰의 인덱스입니다. 기본적으로 패딩은 무시됩니다.

    AutoTokenizer를 사용하여 인덱스를 얻을 수 있습니다. 자세한 내용은 PreTrainedTokenizer.encode() 및 PreTrainedTokenizer.call()를 참조하세요.

    입력 ID란 무엇인가요?

  • xpath_tags_seq (torch.LongTensor, shape (batch_size, sequence_length, config.max_depth), 선택 사항) — 입력 시퀀스의 각 토큰에 대한 태그 ID이며, config.max_depth까지 패딩됩니다.
  • xpath_subs_seq (torch.LongTensor, shape (batch_size, sequence_length, config.max_depth), 선택 사항) — 입력 시퀀스의 각 토큰에 대한 서브스크립트 ID입니다. config.max_depth까지 패딩되어 있습니다.
  • attention_mask (torch.Tensor 형상이 (batch_size, sequence_length), 선택 사항) — 패딩 토큰 인덱스에 대한 attention을 수행하지 않도록 방지하는 마스크. [0, 1]에서 선택된 마스크 값: 마스크되지 않은 토큰은 1, 마스크된 토큰은 0. attention mask란 무엇인가요? [0, 1]:
    • 마스크되지 않은 토큰에 대해 1
    • 마스크된 토큰에 대해 0

    어텐션 마스크란 무엇인가요?

  • token_type_ids (torch.LongTensor 형상이 (batch_size, sequence_length), 선택 사항) — 입력의 첫 번째 및 두 번째 부분을 나타내는 세그먼트 토큰 인덱스. 인덱스는 [0, 1]:
    • 0은 sentence A 토큰에 해당합니다.
    • 1은 sentence B 토큰에 해당합니다.

    토큰 타입 ID란 무엇인가요?

  • position_ids (torch.LongTensor 의 shape (batch_size, sequence_length), , 선택 사항) — 위치 임베딩에서 각 입력 시퀀스 토큰의 위치 인덱스. 범위 [0, config.n_positions - 1].

    포지션 ID란 무엇인가요?

  • inputs_embeds (torch.Tensor, shape (batch_size, sequence_length, hidden_size), 선택) — input_ids를 전달하는 대신 임베딩 표현을 직접 전달할 수 있습니다. 이는 모델 내부의 임베딩 조회 행렬보다 input_ids 인덱스를 관련 벡터로 변환하는 방식에 대해 더 세밀한 제어가 필요한 경우에 유용합니다.

반환값

BaseModelOutputWithPooling 또는 tuple(torch.Tensor)

torch.Tensor의 튜플 또는 BaseModelOutputWithPooling (return_dict=False가 전달되었거나 config.return_dict=False인 경우)로, 구성(MarkupLMConfig)과 입력에 따라 다양한 요소를 포함합니다.

MarkupLMModel의 forward 메서드는 __call__ 특수 메서드를 오버라이드합니다.

이 함수 내에서 forward pass의 레시피를 정의해야 하지만, 이후에는 이 함수 대신 Module 인스턴스를 호출해야 합니다. 전자는 전처리 및 후처리 단계를 실행하는 것을 처리하는 반면, 후자는 이를 조용히 무시하기 때문입니다.

  • last_hidden_state (torch.Tensor, shape (batch_size, sequence_length, hidden_size)) — 모델의 마지막 레이어 출력에서 생성된 hidden-state 시퀀스입니다.

  • pooler_output (torch.Tensor, shape (batch_size, hidden_size)) — 보조 사전 학습 작업을 위해 사용되는 레이어들을 통해 추가 처리된 시퀀스의 첫 번째 토큰(분류 토큰)의 마지막 레이어 hidden-state입니다. 예를 들어 BERT 계열 모델의 경우, 선형 레이어와 tanh 활성화 함수를 통해 처리된 후의 분류 토큰을 반환합니다. 선형 레이어의 가중치는 사전 학습 동안 다음 문장 예측(분류) 목적 함수를 통해 학습됩니다.

  • hidden_states (tuple(torch.Tensor), 선택 사항, output_hidden_states=True가 전달되거나 config.output_hidden_states=True인 경우 반환됨) — torch.Tensor의 튜플(모델에 임베딩 레이어가 있는 경우 임베딩 출력 1개 + 각 레이어의 출력 1개)로, 모양은 (batch_size, sequence_length, hidden_size)입니다.

    각 레이어의 출력에서 모델의 Hidden-states와 선택적 초기 임베딩 출력을 포함합니다.

  • attentions (tuple(torch.Tensor), 선택 사항, output_attentions=True가 전달되었거나 config.output_attentions=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된 torch.Tensor의 튜플로, 모양은 (batch_size, num_heads, sequence_length, sequence_length)입니다.

    self-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention softmax 이후의 attention 가중치.

예:

>>> from transformers import AutoProcessor, MarkupLMModel

>>> processor = AutoProcessor.from_pretrained("microsoft/markuplm-base")
>>> model = MarkupLMModel.from_pretrained("microsoft/markuplm-base")

>>> html_string = "<html> <head> <title>Page Title</title> </head> </html>"

>>> encoding = processor(html_string, return_tensors="pt")

>>> outputs = model(**encoding)
>>> last_hidden_states = outputs.last_hidden_state
>>> list(last_hidden_states.shape)
[1, 4, 768]

MarkupLMForSequenceClassification

class transformers.MarkupLMForSequenceClassification

< >

( config: MarkupLMConfig )

매개변수

  • config (MarkupLMConfig) — 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 관련된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.

MarkupLM은 풀링된 출력 위에 선형 레이어를 배치한 시퀀스 분류/회귀 헤드를 갖춘 Transformer 모델로, GLUE 작업 등에 사용됩니다.

이 모델은 PreTrainedModel에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대한 세부 사항은 상위 클래스 문서를 확인하세요.

이 모델은 또한 PyTorch torch.nn.Module의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법 및 동작과 관련된 모든 사항은 PyTorch 문서를 참조하세요.

forward

< >

( input_ids: typing.Optional[torch.Tensor] = Nonexpath_tags_seq: typing.Optional[torch.Tensor] = Nonexpath_subs_seq: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → SequenceClassifierOutput or tuple(torch.Tensor)

매개변수

  • input_ids (torch.Tensor 의 shape (batch_size, sequence_length), , 선택 사항) — 어휘(input vocabulary)에서 입력 시퀀스 토큰의 인덱스입니다. 기본적으로 패딩은 무시됩니다.

    AutoTokenizer를 사용하여 인덱스를 얻을 수 있습니다. 자세한 내용은 PreTrainedTokenizer.encode() 및 PreTrainedTokenizer.call()를 참조하세요.

    입력 ID란 무엇인가요?

  • xpath_tags_seq (torch.LongTensor, shape (batch_size, sequence_length, config.max_depth), 선택 사항) — 입력 시퀀스의 각 토큰에 대한 태그 ID이며, config.max_depth까지 패딩됩니다.
  • xpath_subs_seq (torch.LongTensor, shape (batch_size, sequence_length, config.max_depth), 선택 사항) — 입력 시퀀스의 각 토큰에 대한 서브스크립트 ID입니다. config.max_depth까지 패딩되어 있습니다.
  • attention_mask (torch.Tensor 형상이 (batch_size, sequence_length), 선택 사항) — 패딩 토큰 인덱스에 대한 attention을 수행하지 않도록 방지하는 마스크. [0, 1]에서 선택된 마스크 값: 마스크되지 않은 토큰은 1, 마스크된 토큰은 0. attention mask란 무엇인가요? [0, 1]:
    • 마스크되지 않은 토큰에 대해 1
    • 마스크된 토큰에 대해 0

    어텐션 마스크란 무엇인가요?

  • token_type_ids (torch.Tensor 형상 (batch_size, sequence_length), 선택 사항) — 입력의 첫 번째 및 두 번째 부분을 나타내는 세그먼트 토큰 인덱스. 인덱스는 [0, 1]:
    • 0은 sentence A 토큰에 해당합니다.
    • 1은 sentence B 토큰에 해당합니다.

    토큰 타입 ID란 무엇인가요?

  • position_ids (torch.Tensor 의 shape (batch_size, sequence_length), , 선택 사항) — 입력 시퀀스 토큰의 위치 임베딩에서 각 토큰의 위치 인덱스. 범위는 [0, config.n_positions - 1].

    포지션 ID란 무엇인가요?

  • inputs_embeds (torch.Tensor, shape (batch_size, sequence_length, hidden_size), 선택) — input_ids를 전달하는 대신 임베딩 표현을 직접 전달할 수 있습니다. 이는 모델 내부의 임베딩 조회 행렬보다 input_ids 인덱스를 관련 벡터로 변환하는 방식에 대해 더 세밀한 제어가 필요한 경우에 유용합니다.
  • labels (torch.LongTensor, shape (batch_size,), 선택 사항) — 시퀀스 분류/회귀 손실을 계산하는 데 사용되는 라벨입니다. 인덱스는 [0, ..., config.num_labels - 1] 범위에 있어야 합니다. config.num_labels == 1인 경우 회귀 손실(Mean-Square loss)이 계산되고, config.num_labels > 1인 경우 분류 손실(Cross-Entropy)이 계산됩니다.

반환값

SequenceClassifierOutput 또는 tuple(torch.Tensor)

torch.Tensor의 튜플 또는 SequenceClassifierOutput입니다. return_dict=False가 전달되거나 config.return_dict=False인 경우, 구성(MarkupLMConfig)과 입력에 따라 다양한 요소로 구성됩니다.

MarkupLMForSequenceClassification의 forward 메서드는 __call__ 특수 메서드를 오버라이드합니다.

이 함수 내에서 forward pass의 레시피를 정의해야 하지만, 이후에는 이 함수 대신 Module 인스턴스를 호출해야 합니다. 전자는 전처리 및 후처리 단계를 실행하는 것을 처리하는 반면, 후자는 이를 조용히 무시하기 때문입니다.

  • loss (torch.Tensor, shape (1,), 선택 사항, labels이 제공될 때 반환됨) — 분류 (또는 config.num_labels==1인 경우 회귀) 손실.

  • logits (torch.Tensor, shape (batch_size, config.num_labels)) — SoftMax 적용 전 분류(또는 config.num_labels==1인 경우 회귀) 점수.

  • hidden_states (tuple(torch.Tensor), 선택 사항, output_hidden_states=True가 전달되거나 config.output_hidden_states=True인 경우 반환됨) — torch.Tensor의 튜플(모델에 임베딩 레이어가 있는 경우 임베딩 출력 1개 + 각 레이어의 출력 1개)로, 모양은 (batch_size, sequence_length, hidden_size)입니다.

    각 레이어의 출력에서 모델의 Hidden-states와 선택적 초기 임베딩 출력을 포함합니다.

  • attentions (tuple(torch.Tensor), 선택 사항, output_attentions=True가 전달되었거나 config.output_attentions=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된 torch.Tensor의 튜플로, 모양은 (batch_size, num_heads, sequence_length, sequence_length)입니다.

    self-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention softmax 이후의 attention 가중치.

예:

>>> from transformers import AutoProcessor, AutoModelForSequenceClassification
>>> import torch

>>> processor = AutoProcessor.from_pretrained("microsoft/markuplm-base")
>>> model = AutoModelForSequenceClassification.from_pretrained("microsoft/markuplm-base", num_labels=7)

>>> html_string = "<html> <head> <title>Page Title</title> </head> </html>"
>>> encoding = processor(html_string, return_tensors="pt")

>>> with torch.no_grad():
...     outputs = model(**encoding)

>>> loss = outputs.loss
>>> logits = outputs.logits

MarkupLMForTokenClassification

class transformers.MarkupLMForTokenClassification

< >

( config: MarkupLMConfig )

매개변수

  • config (MarkupLMConfig) — 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 관련된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.

token_classification 헤드가 위에 있는 MarkupLM 모델.

이 모델은 PreTrainedModel에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대한 세부 사항은 상위 클래스 문서를 확인하세요.

이 모델은 또한 PyTorch torch.nn.Module의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법 및 동작과 관련된 모든 사항은 PyTorch 문서를 참조하세요.

forward

< >

( input_ids: typing.Optional[torch.Tensor] = Nonexpath_tags_seq: typing.Optional[torch.Tensor] = Nonexpath_subs_seq: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → MaskedLMOutput or tuple(torch.Tensor)

매개변수

  • input_ids (torch.Tensor 의 shape (batch_size, sequence_length), , 선택 사항) — 어휘(input vocabulary)에서 입력 시퀀스 토큰의 인덱스입니다. 기본적으로 패딩은 무시됩니다.

    AutoTokenizer를 사용하여 인덱스를 얻을 수 있습니다. 자세한 내용은 PreTrainedTokenizer.encode() 및 PreTrainedTokenizer.call()를 참조하세요.

    입력 ID란 무엇인가요?

  • xpath_tags_seq (torch.LongTensor, shape (batch_size, sequence_length, config.max_depth), 선택 사항) — 입력 시퀀스의 각 토큰에 대한 태그 ID이며, config.max_depth까지 패딩됩니다.
  • xpath_subs_seq (torch.LongTensor, shape (batch_size, sequence_length, config.max_depth), 선택 사항) — 입력 시퀀스의 각 토큰에 대한 서브스크립트 ID입니다. config.max_depth까지 패딩되어 있습니다.
  • attention_mask (torch.Tensor 형상이 (batch_size, sequence_length), 선택 사항) — 패딩 토큰 인덱스에 대한 attention을 수행하지 않도록 방지하는 마스크. [0, 1]에서 선택된 마스크 값: 마스크되지 않은 토큰은 1, 마스크된 토큰은 0. attention mask란 무엇인가요? [0, 1]:
    • 마스크되지 않은 토큰에 대해 1
    • 마스크된 토큰에 대해 0

    어텐션 마스크란 무엇인가요?

  • token_type_ids (torch.Tensor 형상 (batch_size, sequence_length), 선택 사항) — 입력의 첫 번째 및 두 번째 부분을 나타내는 세그먼트 토큰 인덱스. 인덱스는 [0, 1]:
    • 0은 sentence A 토큰에 해당합니다.
    • 1은 sentence B 토큰에 해당합니다.

    토큰 타입 ID란 무엇인가요?

  • position_ids (torch.Tensor 의 shape (batch_size, sequence_length), , 선택 사항) — 입력 시퀀스 토큰의 위치 임베딩에서 각 토큰의 위치 인덱스. 범위는 [0, config.n_positions - 1].

    포지션 ID란 무엇인가요?

  • inputs_embeds (torch.Tensor, shape (batch_size, sequence_length, hidden_size), 선택) — input_ids를 전달하는 대신 임베딩 표현을 직접 전달할 수 있습니다. 이는 모델 내부의 임베딩 조회 행렬보다 input_ids 인덱스를 관련 벡터로 변환하는 방식에 대해 더 세밀한 제어가 필요한 경우에 유용합니다.
  • labels (torch.LongTensor, shape (batch_size, sequence_length), 선택 사항) — 토큰 분류 손실을 계산하는 데 사용되는 라벨입니다. 인덱스는 [0, ..., config.num_labels - 1] 범위에 있어야 합니다.

반환값

MaskedLMOutput 또는 tuple(torch.Tensor)

torch.Tensor의 튜플 또는 MaskedLMOutput입니다. return_dict=False가 전달되거나 config.return_dict=False인 경우, 구성(MarkupLMConfig)과 입력에 따라 다양한 요소를 포함합니다.

MarkupLMForTokenClassification의 forward 메서드는 __call__ 특수 메서드를 오버라이드합니다.

이 함수 내에서 forward pass의 레시피를 정의해야 하지만, 이후에는 이 함수 대신 Module 인스턴스를 호출해야 합니다. 전자는 전처리 및 후처리 단계를 실행하는 것을 처리하는 반면, 후자는 이를 조용히 무시하기 때문입니다.

  • loss (torch.Tensor, shape (1,), 선택 사항, labels이 제공될 때 반환됨) — Masked language modeling (MLM) loss.

  • logits (torch.Tensor, shape (batch_size, sequence_length, config.vocab_size)) — 언어 모델링 헤드에서 생성된 예측 점수(SoftMax 적용 전 각 어휘 토큰에 대한 점수).

  • hidden_states (tuple(torch.Tensor), 선택 사항, output_hidden_states=True가 전달되거나 config.output_hidden_states=True인 경우 반환됨) — torch.Tensor의 튜플(모델에 임베딩 레이어가 있는 경우 임베딩 출력 1개 + 각 레이어의 출력 1개)로, 모양은 (batch_size, sequence_length, hidden_size)입니다.

    각 레이어의 출력에서 모델의 Hidden-states와 선택적 초기 임베딩 출력을 포함합니다.

  • attentions (tuple(torch.Tensor), 선택 사항, output_attentions=True가 전달되었거나 config.output_attentions=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된 torch.Tensor의 튜플로, 모양은 (batch_size, num_heads, sequence_length, sequence_length)입니다.

    self-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention softmax 이후의 attention 가중치.

예:

>>> from transformers import AutoProcessor, AutoModelForTokenClassification
>>> import torch

>>> processor = AutoProcessor.from_pretrained("microsoft/markuplm-base")
>>> processor.parse_html = False
>>> model = AutoModelForTokenClassification.from_pretrained("microsoft/markuplm-base", num_labels=7)

>>> nodes = ["hello", "world"]
>>> xpaths = ["/html/body/div/li[1]/div/span", "/html/body/div/li[1]/div/span"]
>>> node_labels = [1, 2]
>>> encoding = processor(nodes=nodes, xpaths=xpaths, node_labels=node_labels, return_tensors="pt")

>>> with torch.no_grad():
...     outputs = model(**encoding)

>>> loss = outputs.loss
>>> logits = outputs.logits

MarkupLMForQuestionAnswering

class transformers.MarkupLMForQuestionAnswering

< >

( config: MarkupLMConfig )

매개변수

  • config (MarkupLMConfig) — 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 관련된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.

SQuAD와 같은 추출형 질의응답 작업을 위해 Markuplm transformer 위에 스팬 분류 헤드를 적용한 모델(숨겨진 상태 출력 위에 선형 레이어를 올려 span start logits과 span end logits을 계산).

이 모델은 PreTrainedModel에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대한 세부 사항은 상위 클래스 문서를 확인하세요.

이 모델은 또한 PyTorch torch.nn.Module의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법 및 동작과 관련된 모든 사항은 PyTorch 문서를 참조하세요.

forward

< >

( input_ids: typing.Optional[torch.Tensor] = Nonexpath_tags_seq: typing.Optional[torch.Tensor] = Nonexpath_subs_seq: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonestart_positions: typing.Optional[torch.Tensor] = Noneend_positions: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → QuestionAnsweringModelOutput or tuple(torch.Tensor)

매개변수

  • input_ids (torch.Tensor 의 shape (batch_size, sequence_length), , 선택 사항) — 어휘(input vocabulary)에서 입력 시퀀스 토큰의 인덱스입니다. 기본적으로 패딩은 무시됩니다.

    AutoTokenizer를 사용하여 인덱스를 얻을 수 있습니다. 자세한 내용은 PreTrainedTokenizer.encode() 및 PreTrainedTokenizer.call()를 참조하세요.

    입력 ID란 무엇인가요?

  • xpath_tags_seq (torch.LongTensor, shape (batch_size, sequence_length, config.max_depth), 선택 사항) — 입력 시퀀스의 각 토큰에 대한 태그 ID이며, config.max_depth까지 패딩됩니다.
  • xpath_subs_seq (torch.LongTensor, shape (batch_size, sequence_length, config.max_depth), 선택 사항) — 입력 시퀀스의 각 토큰에 대한 서브스크립트 ID입니다. config.max_depth까지 패딩되어 있습니다.
  • attention_mask (torch.Tensor 형상이 (batch_size, sequence_length), 선택 사항) — 패딩 토큰 인덱스에 대한 attention을 수행하지 않도록 방지하는 마스크. [0, 1]에서 선택된 마스크 값: 마스크되지 않은 토큰은 1, 마스크된 토큰은 0. attention mask란 무엇인가요? [0, 1]:
    • 마스크되지 않은 토큰에 대해 1
    • 마스크된 토큰에 대해 0

    어텐션 마스크란 무엇인가요?

  • token_type_ids (torch.Tensor 형상 (batch_size, sequence_length), 선택 사항) — 입력의 첫 번째 및 두 번째 부분을 나타내는 세그먼트 토큰 인덱스. 인덱스는 [0, 1]:
    • 0은 sentence A 토큰에 해당합니다.
    • 1은 sentence B 토큰에 해당합니다.

    토큰 타입 ID란 무엇인가요?

  • position_ids (torch.Tensor 의 shape (batch_size, sequence_length), , 선택 사항) — 입력 시퀀스 토큰의 위치 임베딩에서 각 토큰의 위치 인덱스. 범위는 [0, config.n_positions - 1].

    포지션 ID란 무엇인가요?

  • inputs_embeds (torch.Tensor, shape (batch_size, sequence_length, hidden_size), 선택) — input_ids를 전달하는 대신 임베딩 표현을 직접 전달할 수 있습니다. 이는 모델 내부의 임베딩 조회 행렬보다 input_ids 인덱스를 관련 벡터로 변환하는 방식에 대해 더 세밀한 제어가 필요한 경우에 유용합니다.
  • start_positions (torch.Tensor, shape (batch_size,), 선택 사항) — 토큰 분류 손실을 계산하기 위해 라벨이 지정된 스팬의 시작 위치(인덱스)에 대한 라벨입니다. 위치는 시퀀스 길이(sequence_length)로 클램프됩니다. 시퀀스 범위를 벗어난 위치는 손실 계산에 반영되지 않습니다.
  • end_positions (torch.Tensor, shape (batch_size,), 선택 사항) — 토큰 분류 손실을 계산하기 위해 라벨이 지정된 스팬의 끝 위치(인덱스)에 대한 라벨입니다. 위치는 시퀀스 길이(sequence_length)로 클램프됩니다. 시퀀스 범위를 벗어난 위치는 손실 계산에 반영되지 않습니다.

반환값

QuestionAnsweringModelOutput 또는 tuple(torch.Tensor)

torch.Tensor의 튜플 또는 QuestionAnsweringModelOutput입니다. return_dict=False가 전달되었거나 config.return_dict=False인 경우, 구성(MarkupLMConfig)과 입력에 따라 다양한 요소로 구성됩니다.

MarkupLMForQuestionAnswering의 forward 메서드는 __call__ 특수 메서드를 오버라이드합니다.

이 함수 내에서 forward pass의 레시피를 정의해야 하지만, 이후에는 이 함수 대신 Module 인스턴스를 호출해야 합니다. 전자는 전처리 및 후처리 단계를 실행하는 것을 처리하는 반면, 후자는 이를 조용히 무시하기 때문입니다.

  • loss (torch.Tensor, shape (1,), 선택 사항, labels이 제공될 때 반환됨) — 전체 span 추출 손실은 시작 및 끝 위치의 Cross-Entropy 합입니다.

  • start_logits (torch.Tensor, shape (batch_size, sequence_length)) — SoftMax 적용 전 스팬 시작 점수.

  • end_logits (torch.Tensor, shape (batch_size, sequence_length)) — SoftMax 적용 전 스팬 끝 점수.

  • hidden_states (tuple(torch.Tensor), 선택 사항, output_hidden_states=True가 전달되거나 config.output_hidden_states=True인 경우 반환됨) — torch.Tensor의 튜플(모델에 임베딩 레이어가 있는 경우 임베딩 출력 1개 + 각 레이어의 출력 1개)로, 모양은 (batch_size, sequence_length, hidden_size)입니다.

    각 레이어의 출력에서 모델의 Hidden-states와 선택적 초기 임베딩 출력을 포함합니다.

  • attentions (tuple(torch.Tensor), 선택 사항, output_attentions=True가 전달되었거나 config.output_attentions=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된 torch.Tensor의 튜플로, 모양은 (batch_size, num_heads, sequence_length, sequence_length)입니다.

    self-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention softmax 이후의 attention 가중치.

예:

>>> from transformers import AutoProcessor, MarkupLMForQuestionAnswering
>>> import torch

>>> processor = AutoProcessor.from_pretrained("microsoft/markuplm-base-finetuned-websrc")
>>> model = MarkupLMForQuestionAnswering.from_pretrained("microsoft/markuplm-base-finetuned-websrc")

>>> html_string = "<html> <head> <title>My name is Niels</title> </head> </html>"
>>> question = "What's his name?"

>>> encoding = processor(html_string, questions=question, return_tensors="pt")

>>> with torch.no_grad():
...     outputs = model(**encoding)

>>> answer_start_index = outputs.start_logits.argmax()
>>> answer_end_index = outputs.end_logits.argmax()

>>> predict_answer_tokens = encoding.input_ids[0, answer_start_index : answer_end_index + 1]
>>> processor.decode(predict_answer_tokens).strip()
'Niels'
Update on GitHub