Transformers documentation
MarkupLM
Este modelo se publicó en HF papers el 2021-10-16 y se contribuyó a Hugging Face Transformers el 2022-09-30.
MarkupLM
Resumen
El modelo MarkupLM se propuso en MarkupLM: Pre-training of Text and Markup Language for Visually-rich Document Understanding de Junlong Li, Yiheng Xu, Lei Cui, Furu Wei. MarkupLM es BERT, pero aplicado a páginas HTML en lugar de documentos de texto sin formato. El modelo incorpora capas de embedding adicionales para mejorar el rendimiento, de manera similar a LayoutLM.
El modelo puede utilizarse para tareas como la respuesta a preguntas en páginas web o la extracción de información de páginas web. Obtiene resultados de última generación en 2 benchmarks importantes:
- WebSRC, un conjunto de datos para la comprensión lectora estructural basada en la web (algo similar a SQuAD pero para páginas web)
- SWDE, un conjunto de datos para la extracción de información de páginas web (básicamente, reconocimiento de entidades nombradas en páginas web)
El resumen del artículo es el siguiente:
El preentrenamiento multimodal con texto, diseño e imagen ha logrado avances significativos para la comprensión de documentos visualmente ricos (VrDU), especialmente en documentos de diseño fijo, como imágenes de documentos escaneados. Sin embargo, aún existe un gran número de documentos digitales en los que la información de diseño no es fija y debe renderizarse de forma interactiva y dinámica para su visualización, lo que dificulta la aplicación de los enfoques de preentrenamiento basados en diseño existentes. En este artículo, proponemos MarkupLM para tareas de comprensión de documentos que utilizan lenguajes de marcado como base, como los documentos basados en HTML/XML, donde la información de texto y marcado se preentrena conjuntamente. Los resultados experimentales muestran que el MarkupLM preentrenado supera significativamente a los modelos de línea base existentes y fuertes en varias tareas de comprensión de documentos. El modelo preentrenado y el código estarán disponibles públicamente.
Este modelo fue aportado por nielsr. El código original se puede encontrar aquí.
Consejos de uso
- Además de
input_ids, forward() espera 2 entradas adicionales, a saber,xpath_tags_seqyxpath_subs_seq. Estas son las etiquetas XPATH y los subíndices, respectivamente, para cada token de la secuencia de entrada. - Se puede usar MarkupLMProcessor para preparar todos los datos para el modelo. Consulte la guía de uso para obtener más información.
MarkupLM architecture. Taken from the original paper. Uso: MarkupLMProcessor
La forma más sencilla de preparar los datos para el modelo es utilizar MarkupLMProcessor, que combina internamente un extractor de características
(MarkupLMFeatureExtractor) y un tokenizador (MarkupLMTokenizer o MarkupLMTokenizerFast). El extractor de características se
utiliza para extraer todos los nodos y xpaths de las cadenas HTML, que luego se proporcionan al tokenizador, el cual los convierte en las
entradas a nivel de token del modelo (input_ids, etc.). Tenga en cuenta que aún puede utilizar el extractor de características y el tokenizador por separado
si solo desea manejar una de las dos tareas.
from transformers import MarkupLMFeatureExtractor, MarkupLMProcessor, MarkupLMTokenizerFast
feature_extractor = MarkupLMFeatureExtractor()
tokenizer = MarkupLMTokenizerFast.from_pretrained("microsoft/markuplm-base")
processor = MarkupLMProcessor(feature_extractor, tokenizer)En resumen, se pueden proporcionar cadenas HTML (y posiblemente datos adicionales) a MarkupLMProcessor, y este creará las entradas que el modelo espera. Internamente, el procesador primero utiliza MarkupLMFeatureExtractor para obtener una lista de nodos y los xpaths correspondientes. A continuación, los nodos y los xpaths se proporcionan a MarkupLMTokenizer o MarkupLMTokenizerFast, que los convierte en input_ids, attention_mask, token_type_ids, xpath_subs_seq y xpath_tags_seq a nivel de token. Opcionalmente, se pueden proporcionar etiquetas de nodo al procesador, que se convierten en labels a nivel de token.
MarkupLMFeatureExtractor utiliza Beautiful Soup, una biblioteca de Python para extraer datos de archivos HTML y XML, internamente. Tenga en cuenta que puede seguir utilizando su propia solución de análisis preferida y proporcionar los nodos y xpaths usted mismo a MarkupLMTokenizer o MarkupLMTokenizerFast.
En total, hay 5 casos de uso que son compatibles con el procesador. A continuación, los enumeramos todos. Tenga en cuenta que cada uno de estos casos de uso funciona tanto para entradas por lotes como para entradas no por lotes (los ilustramos para entradas no por lotes).
Caso de uso 1: clasificación de páginas web (entrenamiento, inferencia) + clasificación de tokens (inferencia), parse_html = True
Este es el caso más simple, en el que el procesador utilizará el extractor de características para obtener todos los nodos y xpaths del HTML.
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'])Caso de uso 2: clasificación de páginas web (entrenamiento, inferencia) + clasificación de tokens (inferencia), parse_html=False
Si ya se han obtenido todos los nodos y xpaths, no se necesita el extractor de características. En ese caso, se deben proporcionar los nodos y los xpaths correspondientes directamente al procesador, y asegurarse de establecer parse_html en 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'])Caso de uso 3: clasificación de tokens (entrenamiento), parse_html=False
Para tareas de clasificación de tokens (como SWDE), también se pueden proporcionar las etiquetas de nodo correspondientes para entrenar un modelo. El procesador convertirá estas etiquetas en labels a nivel de token. De forma predeterminada, solo etiquetará la primera wordpiece de una palabra y etiquetará las wordpieces restantes con -100, que es el ignore_index de CrossEntropyLoss de PyTorch. Si desea que todas las wordpieces de una palabra estén etiquetadas, puede inicializar el tokenizador con only_label_first_subword establecido en 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'])Caso de uso 4: respuesta a preguntas sobre páginas web (inferencia), parse_html=True
Para tareas de respuesta a preguntas en páginas web, puede proporcionar una pregunta al procesador. De forma predeterminada, el procesador utilizará el extractor de características para obtener todos los nodos y xpaths, y crear [CLS] tokens de pregunta [SEP] tokens de palabra [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'])Caso de uso 5: respuesta a preguntas sobre páginas web (inferencia), parse_html=False
Para tareas de respuesta a preguntas (como WebSRC), puede proporcionar una pregunta al procesador. Si ha extraído todos los nodos y xpaths usted mismo, puede proporcionarlos directamente al procesador. Asegúrese de establecer parse_html en 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'])Recursos
- Cuadernos de demostración
- Guía de la tarea de clasificación de texto
- Guía de la tarea de clasificación de tokens
- Guía de la tarea de respuesta a preguntas
MarkupLMConfig
clase transformers.MarkupLMConfig
< source >( 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 )
Parámetros
- vocab_size (
int, opcional, valor predeterminado30522) — Tamaño del vocabulario del modelo. Define el número de tokens diferentes que pueden representarse medianteinput_ids. - hidden_size (
int, opcional, valor predeterminado768) — Dimensión de las representaciones ocultas. - num_hidden_layers (
int, opcional, valor predeterminado12) — Número de capas ocultas en el decodificador del Transformer. - num_attention_heads (
int, opcional, valor predeterminado12) — Número de cabezas de atención para cada capa de atención en el decodificador Transformer. - intermediate_size (
int, opcional, valor predeterminado3072) — Dimensión de las representaciones del MLP. - hidden_act (
str, opcional, valor predeterminadogelu) — La función de activación no lineal (función o cadena) en el decodificador. Por ejemplo,"gelu","relu","silu", etc. - hidden_dropout_prob (
Union[float, int], opcional, valor predeterminado0.1) — La probabilidad de dropout para todas las capas totalmente conectadas en las incrustaciones, el codificador y el pooler. - attention_probs_dropout_prob (
Union[float, int], opcional, valor predeterminado0.1) — La proporción de dropout para las probabilidades de atención. - max_position_embeddings (
int, opcional, valor predeterminado512) — La longitud máxima de secuencia con la que se podría utilizar este modelo. - type_vocab_size (
int, opcional, valor predeterminado2) — El tamaño del vocabulario detoken_type_ids. - initializer_range (
float, opcional, valor predeterminado0.02) — La desviación estándar del truncated_normal_initializer para inicializar todas las matrices de pesos. - layer_norm_eps (
float, opcional, valor predeterminado1e-12) — El epsilon utilizado por las capas de normalización de capa. - pad_token_id (
int, opcional, valor predeterminado0) — Id del token utilizado para el relleno en el vocabulario. - bos_token_id (
int, opcional, valor predeterminado0) — Id del token utilizado para el inicio de la secuencia en el vocabulario. - eos_token_id (
Union[int, list[int]], opcional, valor predeterminado2) — Identificador de token utilizado para el fin de secuencia en el vocabulario. - max_xpath_tag_unit_embeddings (
int, opcional, valor predeterminado 256) — El valor máximo que la incrustación de la unidad de etiqueta xpath podría llegar a utilizar. Normalmente, se establece en un valor grande por si acaso (p. ej., 256). - max_xpath_subs_unit_embeddings (
int, opcional, valor predeterminado 1024) — El valor máximo que podría llegar a usar la incrustación de la unidad de subíndice xpath. Por lo general, se establece en un valor grande por si acaso (p. ej., 1024). - tag_pad_id (
int, opcional, valor predeterminado 216) — El id del token de relleno en las etiquetas xpath. - subs_pad_id (
int, opcional, valor predeterminado 1001) — El id del token de relleno en los subíndices xpath. - xpath_unit_hidden_size (
int, opcional, valor predeterminado 32) — El tamaño oculto de cada unidad en xpath. - max_depth (
int, opcional, valor predeterminado 50) — La profundidad máxima en xpath. - use_cache (
bool, opcional, valor predeterminadoTrue) — Indica si el modelo debe devolver las últimas claves/valores de atención (no utilizado por todos los modelos). Solo es relevante siconfig.is_decoder=Trueo cuando el modelo es un modelo generativo solo de decodificador. - classifier_dropout (
Union[float, int], opcional) — La proporción de dropout para el clasificador.
Esta es la clase de configuración para almacenar la configuración de un MarkupLMModel. Se utiliza para instanciar un modelo Markuplm según los argumentos especificados, definiendo la arquitectura del modelo. Instanciar una configuración con los valores predeterminados producirá una configuración similar a la de microsoft/markuplm-base
Los objetos de configuración heredan de PreTrainedConfig y se pueden usar para controlar las salidas del modelo. Lea la documentación de PreTrainedConfig para obtener más información.
Ejemplos:
>>> 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.configMarkupLMFeatureExtractor
Construye un extractor de características de MarkupLM. Esto se puede usar para obtener una lista de nodos y los xpath correspondientes a partir de cadenas HTML.
Este extractor de características hereda de PreTrainedFeatureExtractor(), que contiene la mayoría de los métodos principales. Los usuarios deben consultar esta superclase para obtener más información sobre dichos métodos.
__call__
< source >( html_strings ) → BatchFeature
Parámetros
- html_strings (
str,list[str]) — La cadena HTML o el lote de cadenas HTML de las que se extraerán los nodos y los xpaths correspondientes.
Devuelve
Un BatchFeature con los siguientes campos:
- nodes — Nodos.
- xpaths — xpaths correspondientes.
Método principal para preparar una o varias cadenas HTML para el modelo.
Ejemplos:
>>> 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
clase transformers.MarkupLMTokenizer
< source >( 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 )
Parámetros
- vocab (
strodict[str, int], opcional) — Diccionario de vocabulario personalizado. Si no se proporciona, el vocabulario se carga desdevocab_file. - merges (
strolist[str], opcional) — Lista de fusiones personalizada. Si no se proporciona, las fusiones se cargan desdemerges_file. - errors (
str, opcional, valor predeterminado"replace") — Paradigma a seguir al decodificar bytes a UTF-8. Consulte bytes.decode para obtener más información. - bos_token (
str, opcional, por defecto"<s>") — El token de inicio de secuencia que se utilizó durante el preentrenamiento. Puede usarse como token de clasificador de secuencias. Al construir una secuencia con tokens especiales, este no es el token que se utiliza para el inicio de la secuencia. El token que se utiliza es cls_token.Al construir una secuencia con tokens especiales, este no es el token que se utiliza para el inicio de la secuencia. El token que se utiliza es
cls_token. - eos_token (
str, opcional, por defecto es"</s>") — El token de fin de secuencia. Al construir una secuencia con tokens especiales, este no es el token que se utiliza para el fin de la secuencia. El token que se utiliza es sep_token.Al construir una secuencia con tokens especiales, este no es el token que se utiliza para el final de la secuencia. El token que se utiliza es
sep_token. - sep_token (
str, opcional, valor predeterminado"</s>") — El token separador, que se utiliza al construir una secuencia a partir de varias secuencias, por ejemplo, dos secuencias para la clasificación de secuencias o un texto y una pregunta para la respuesta a preguntas. También se utiliza como el último token de una secuencia construida con tokens especiales. - cls_token (
str, opcional, valor predeterminado"<s>") — El token clasificador que se utiliza al realizar clasificación de secuencias (clasificación de la secuencia completa en lugar de clasificación por token). Es el primer token de la secuencia cuando se construye con tokens especiales. - unk_token (
str, opcional, valor predeterminado"<unk>") — El token desconocido. Un token que no está en el vocabulario no se puede convertir en un ID y se establece como este token en su lugar. - pad_token (
str, opcional, valor predeterminado"<pad>") — El token utilizado para el relleno, por ejemplo, al agrupar secuencias de diferentes longitudes. - mask_token (
str, opcional, valor predeterminado"<mask>") — El token utilizado para enmascarar valores. Este es el token que se emplea al entrenar este modelo con modelado de lenguaje enmascarado. Es el token que el modelo intentará predecir. - add_prefix_space (
bool, opcional, valor predeterminadoFalse) — Indica si se debe añadir un espacio inicial a la entrada. Esto permite tratar la palabra inicial como cualquier otra palabra. (El tokenizador de RoBERTa detecta el inicio de las palabras mediante el espacio que las precede).
Construye un tokenizador de MarkupLM. Basado en Byte-Pair-Encoding (BPE) a nivel de bytes.
MarkupLMTokenizer se puede utilizar para convertir cadenas HTML en input_ids, attention_mask, token_type_ids, xpath_tags_seq y xpath_tags_seq a nivel de token. Este tokenizador hereda de TokenizersBackend, que contiene la mayoría de los métodos principales y garantiza que siempre se instancie un backend de tokenizers.
Los usuarios deben consultar esta superclase para obtener más información sobre esos métodos.
build_inputs_with_special_tokens
< source >( token_ids_0: listtoken_ids_1: list[int] | None = None ) → list[int]
Parámetros
- token_ids_0 (
list[int]) — Lista de IDs a los que se les añadirán los tokens especiales. - token_ids_1 (
list[int], opcional) — Segunda lista de IDs opcional para pares de secuencias.
Devuelve
list[int]
Lista de ID de entrada con los tokens especiales apropiados.
Construye las entradas del modelo a partir de una secuencia o un par de secuencias para tareas de clasificación de secuencias, concatenando y añadiendo tokens especiales. Una secuencia de RoBERTa tiene el siguiente formato:
- secuencia única:
<s> X </s> - par de secuencias:
<s> A </s></s> B </s>
get_special_tokens_mask
< source >( token_ids_0: list[int]token_ids_1: list[int] | None = Nonealready_has_special_tokens: bool = False ) → A list of integers in the range [0, 1]
Parámetros
- token_ids_0 — Lista de IDs de la secuencia (posiblemente ya formateada).
- token_ids_1 — No se usa cuando
already_has_special_tokens=True. Debe ser None en ese caso. - already_has_special_tokens — Indica si la secuencia ya está formateada con tokens especiales.
Devuelve
Una lista de enteros en el rango [0, 1]
1 para un token especial, 0 para un token de secuencia.
Obtener los ids de secuencia de una lista de tokens a la que no se le han añadido tokens especiales.
Para los tokenizadores rápidos, los collators de datos llaman a esto con already_has_special_tokens=True para construir una máscara sobre una secuencia ya formateada. En ese caso, calculamos la máscara comprobando la pertenencia en all_special_ids.
create_token_type_ids_from_sequences
< source >( token_ids_0: listtoken_ids_1: list[int] | None = None ) → list[int]
Crea una máscara a partir de las dos secuencias pasadas para ser utilizada en una tarea de clasificación de pares de secuencias. RoBERTa no utiliza ids de tipo de token, por lo que se devuelve una lista de ceros.
MarkupLMTokenizerFast
clase transformers.MarkupLMTokenizer
< source >( 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 )
Parámetros
- vocab (
strodict[str, int], opcional) — Diccionario de vocabulario personalizado. Si no se proporciona, el vocabulario se carga desdevocab_file. - merges (
strolist[str], opcional) — Lista de fusiones personalizada. Si no se proporciona, las fusiones se cargan desdemerges_file. - errors (
str, opcional, valor predeterminado"replace") — Paradigma a seguir al decodificar bytes a UTF-8. Consulte bytes.decode para obtener más información. - bos_token (
str, opcional, por defecto"<s>") — El token de inicio de secuencia que se utilizó durante el preentrenamiento. Puede usarse como token de clasificador de secuencias. Al construir una secuencia con tokens especiales, este no es el token que se utiliza para el inicio de la secuencia. El token que se utiliza es cls_token.Al construir una secuencia con tokens especiales, este no es el token que se utiliza para el inicio de la secuencia. El token que se utiliza es
cls_token. - eos_token (
str, opcional, por defecto es"</s>") — El token de fin de secuencia. Al construir una secuencia con tokens especiales, este no es el token que se utiliza para el fin de la secuencia. El token que se utiliza es sep_token.Al construir una secuencia con tokens especiales, este no es el token que se utiliza para el final de la secuencia. El token que se utiliza es
sep_token. - sep_token (
str, opcional, valor predeterminado"</s>") — El token separador, que se utiliza al construir una secuencia a partir de varias secuencias, por ejemplo, dos secuencias para la clasificación de secuencias o un texto y una pregunta para la respuesta a preguntas. También se utiliza como el último token de una secuencia construida con tokens especiales. - cls_token (
str, opcional, valor predeterminado"<s>") — El token clasificador que se utiliza al realizar clasificación de secuencias (clasificación de la secuencia completa en lugar de clasificación por token). Es el primer token de la secuencia cuando se construye con tokens especiales. - unk_token (
str, opcional, valor predeterminado"<unk>") — El token desconocido. Un token que no está en el vocabulario no se puede convertir en un ID y se establece como este token en su lugar. - pad_token (
str, opcional, valor predeterminado"<pad>") — El token utilizado para el relleno, por ejemplo, al agrupar secuencias de diferentes longitudes. - mask_token (
str, opcional, valor predeterminado"<mask>") — El token utilizado para enmascarar valores. Este es el token que se emplea al entrenar este modelo con modelado de lenguaje enmascarado. Es el token que el modelo intentará predecir. - add_prefix_space (
bool, opcional, valor predeterminadoFalse) — Indica si se debe añadir un espacio inicial a la entrada. Esto permite tratar la palabra inicial como cualquier otra palabra. (El tokenizador de RoBERTa detecta el inicio de las palabras mediante el espacio que las precede).
Construye un tokenizador de MarkupLM. Basado en Byte-Pair-Encoding (BPE) a nivel de bytes.
MarkupLMTokenizer se puede utilizar para convertir cadenas HTML en input_ids, attention_mask, token_type_ids, xpath_tags_seq y xpath_tags_seq a nivel de token. Este tokenizador hereda de TokenizersBackend, que contiene la mayoría de los métodos principales y garantiza que siempre se instancie un backend de tokenizers.
Los usuarios deben consultar esta superclase para obtener más información sobre esos métodos.
batch_encode_plus
< source >( 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, opcional, valor predeterminado True):
Indica si se deben o no añadir tokens especiales al codificar las secuencias. Esto utilizará la función subyacente PretrainedTokenizerBase.build_inputs_with_special_tokens, que define qué tokens se
añaden automáticamente a los ids de entrada. Esto es útil si se desea añadir tokens bos o eos
automáticamente.
padding (bool, str o PaddingStrategy, opcional, valor predeterminado False):
Activa y controla el relleno. Acepta los siguientes valores:
Trueo'longest': Rellena hasta la secuencia más larga del lote (o no aplica relleno si solo se proporciona una secuencia).'max_length': Rellena hasta una longitud máxima especificada con el argumentomax_lengtho hasta la longitud de entrada máxima aceptable para el modelo si no se proporciona dicho argumento.Falseo'do_not_pad'(predeterminado): Sin relleno (es decir, puede generar un lote con secuencias de diferentes longitudes). truncation (bool,stro TruncationStrategy, opcional, predeterminado enFalse): Activa y controla la truncación. Acepta los siguientes valores:Trueo'longest_first': Trunca hasta una longitud máxima especificada con el argumentomax_lengtho hasta la longitud de entrada máxima aceptable para el modelo si no se proporciona dicho argumento. Esto truncará token a token, eliminando un token de la secuencia más larga de la pareja si se proporciona una pareja de secuencias (o un lote de parejas).'only_first': Trunca a una longitud máxima especificada con el argumentomax_lengtho a la longitud de entrada máxima aceptable para el modelo si no se proporciona dicho argumento. Esto solo truncará la primera secuencia de un par si se proporciona un par de secuencias (o un lote de pares).'only_second': Trunca a una longitud máxima especificada con el argumentomax_lengtho a la longitud de entrada máxima aceptable para el modelo si no se proporciona dicho argumento. Esto solo truncará la segunda secuencia de un par si se proporciona un par de secuencias (o un lote de pares).Falseo'do_not_truncate'(predeterminado): sin truncamiento (es decir, se puede generar un lote con longitudes de secuencia superiores al tamaño máximo de entrada admisible por el modelo). max_length (int, opcional): Controla la longitud máxima que debe utilizar uno de los parámetros de truncamiento/relleno.
Si se deja sin establecer o se establece en None, se utilizará la longitud máxima predefinida del modelo si uno de los parámetros de truncamiento/relleno requiere una longitud máxima. Si el modelo no tiene una longitud de entrada máxima específica (como XLNet), el truncamiento/relleno a una longitud máxima se desactivará.
stride (int, opcional, valor predeterminado 0):
Si se establece en un número junto con max_length, los tokens sobrantes devueltos cuando return_overflowing_tokens=True contendrán algunos tokens del final de la secuencia truncada devuelta para proporcionar cierta superposición entre las secuencias truncadas y las sobrantes. El valor de este argumento define el número de tokens superpuestos.
is_split_into_words (bool, opcional, valor predeterminado False):
Indica si la entrada ya está pre-tokenizada (p. ej., dividida en palabras). Si se establece en True, el tokenizador asume que la entrada ya está dividida en palabras (por ejemplo, dividiéndola por espacios en blanco) y la tokenizará. Esto es útil para NER o clasificación de tokens.
pad_to_multiple_of (int, opcional):
Si se establece, rellenará la secuencia hasta un múltiplo del valor proporcionado. Requiere que padding esté activado. Esto es especialmente útil para habilitar el uso de Tensor Cores en hardware de NVIDIA con capacidad de cálculo >= 7.5 (Volta).
padding_side (str, opcional):
El lado en el que el modelo debe tener relleno aplicado. Debe seleccionarse entre [‘right’, ‘left’].
El valor predeterminado se elige del atributo de clase con el mismo nombre.
return_tensors (str o TensorType, opcional):
Si se establece, devolverá tensores en lugar de una lista de enteros de python. Los valores aceptables son:
'pt': Devuelve objetostorch.Tensorde PyTorch.'np': Devuelve objetos Numpynp.ndarray.
add_special_tokens (bool, opcional, valor predeterminado True):
Indica si se deben codificar las secuencias con los tokens especiales relativos a su modelo.
padding (bool, str o PaddingStrategy, opcional, valor predeterminado False):
Activa y controla el relleno. Acepta los siguientes valores:
Trueo'longest': Rellena hasta la secuencia más larga del lote (o no aplica relleno si solo se proporciona una secuencia).'max_length': Rellena hasta una longitud máxima especificada con el argumentomax_lengtho hasta la longitud de entrada máxima aceptable para el modelo si no se proporciona dicho argumento.Falseo'do_not_pad'(predeterminado): Sin relleno (es decir, puede generar un lote con secuencias de diferentes longitudes). truncation (bool,stro TruncationStrategy, opcional, predeterminado enFalse): Activa y controla la truncación. Acepta los siguientes valores:Trueo'longest_first': Trunca hasta una longitud máxima especificada con el argumentomax_lengtho hasta la longitud de entrada máxima aceptable para el modelo si no se proporciona dicho argumento. Esto truncará token a token, eliminando un token de la secuencia más larga de la pareja si se proporciona una pareja de secuencias (o un lote de parejas).'only_first': Trunca a una longitud máxima especificada con el argumentomax_lengtho a la longitud de entrada máxima aceptable para el modelo si no se proporciona dicho argumento. Esto solo truncará la primera secuencia de un par si se proporciona un par de secuencias (o un lote de pares).'only_second': Trunca a una longitud máxima especificada con el argumentomax_lengtho a la longitud de entrada máxima aceptable para el modelo si no se proporciona dicho argumento. Esto solo truncará la segunda secuencia de un par si se proporciona un par de secuencias (o un lote de pares).Falseo'do_not_truncate'(predeterminado): Sin truncamiento (es decir, se puede generar un lote con longitudes de secuencia mayores que el tamaño máximo de entrada admisible del modelo). max_length (int, opcional): Controla la longitud máxima que debe usar uno de los parámetros de truncamiento/relleno. Si se deja sin establecer o se establece enNone, se usará la longitud máxima predefinida del modelo si uno de los parámetros de truncamiento/relleno requiere una longitud máxima. Si el modelo no tiene una longitud máxima de entrada específica (como XLNet) el truncamiento/relleno a una longitud máxima se desactivará. stride (int, opcional, predeterminado 0): Si se establece en un número junto conmax_length, los tokens sobrantes devueltos cuandoreturn_overflowing_tokens=Truecontendrán algunos tokens del final de la secuencia truncada devuelta para proporcionar cierta superposición entre las secuencias truncadas y las sobrantes. El valor de este argumento define el número de tokens superpuestos. is_split_into_words (bool, opcional, predeterminadoFalse): Indica si la entrada ya está pretokenizada (p. ej., dividida en palabras). Establezca esto enTruesi está pasando entradas pretokenizadas para evitar una tokenización adicional. pad_to_multiple_of (int, opcional): Si se establece, rellenará la secuencia hasta un múltiplo del valor proporcionado. Esto es especialmente útil para habilitar el uso de Tensor Cores en hardware de NVIDIA con capacidad de cálculo>= 7.5(Volta). return_tensors (stro TensorType, opcional): Si se establece, devolverá tensores en lugar de listas de enteros de python. Los valores aceptables son:'pt': Devuelve objetostorch.Tensorde PyTorch.'np': Devuelve objetos Numpynp.ndarray.
build_inputs_with_special_tokens
< source >( token_ids_0: listtoken_ids_1: list[int] | None = None ) → list[int]
Parámetros
- token_ids_0 (
list[int]) — Lista de IDs a los que se les añadirán los tokens especiales. - token_ids_1 (
list[int], opcional) — Segunda lista de IDs opcional para pares de secuencias.
Devuelve
list[int]
Lista de ID de entrada con los tokens especiales apropiados.
Construye las entradas del modelo a partir de una secuencia o un par de secuencias para tareas de clasificación de secuencias, concatenando y añadiendo tokens especiales. Una secuencia de RoBERTa tiene el siguiente formato:
- secuencia única:
<s> X </s> - par de secuencias:
<s> A </s></s> B </s>
create_token_type_ids_from_sequences
< source >( token_ids_0: listtoken_ids_1: list[int] | None = None ) → list[int]
Crea una máscara a partir de las dos secuencias pasadas para ser utilizada en una tarea de clasificación de pares de secuencias. RoBERTa no utiliza ids de tipo de token, por lo que se devuelve una lista de ceros.
encode_plus
< source >( 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 )
Parámetros
- text (
str,list[str],list[list[str]]) — La primera secuencia que se codificará. Puede ser una cadena, una lista de cadenas o una lista de listas de cadenas. - text_pair (
list[str]olist[int], opcional) — Segunda secuencia opcional que se codificará. Puede ser una lista de cadenas de texto (palabras de un solo ejemplo) o una lista de listas de cadenas de texto (palabras de un lote de ejemplos). - add_special_tokens (
bool, opcional, valor predeterminadoTrue) — Indica si se deben o no añadir tokens especiales al codificar las secuencias. Esto utilizará la función subyacentePretrainedTokenizerBase.build_inputs_with_special_tokens, que define qué tokens se añaden automáticamente a los ids de entrada. Esto es útil si deseas añadir tokensbosoeosautomáticamente. - padding (
bool,stro PaddingStrategy, opcional, el valor predeterminado esFalse) — Activa y controla el relleno. Acepta los siguientes valores:Trueo'longest': Rellena hasta la secuencia más larga del lote (o no aplica relleno si solo se proporciona una secuencia).'max_length': Rellena hasta una longitud máxima especificada con el argumentomax_lengtho hasta la longitud de entrada máxima aceptable para el modelo si no se proporciona dicho argumento.Falseo'do_not_pad'(predeterminado): Sin relleno (es decir, puede generar un lote con secuencias de diferentes longitudes).
- truncation (
bool,stro TruncationStrategy, opcional, por defectoFalse) — Activa y controla la truncación. Acepta los siguientes valores:Trueo'longest_first': Trunca hasta una longitud máxima especificada con el argumentomax_lengtho hasta la longitud de entrada máxima aceptable para el modelo si no se proporciona dicho argumento. Esto truncará token a token, eliminando un token de la secuencia más larga de la pareja si se proporciona una pareja de secuencias (o un lote de parejas).'only_first': Trunca a una longitud máxima especificada con el argumentomax_lengtho a la longitud de entrada máxima aceptable para el modelo si no se proporciona dicho argumento. Esto solo truncará la primera secuencia de un par si se proporciona un par de secuencias (o un lote de pares).'only_second': Trunca a una longitud máxima especificada con el argumentomax_lengtho a la longitud de entrada máxima aceptable para el modelo si no se proporciona dicho argumento. Esto solo truncará la segunda secuencia de un par si se proporciona un par de secuencias (o un lote de pares).Falseo'do_not_truncate'(predeterminado): sin truncamiento (es decir, se puede generar un lote con longitudes de secuencia mayores que el tamaño máximo de entrada admisible por el modelo).
- max_length (
int, opcional) — Controla la longitud máxima que se utilizará mediante uno de los parámetros de truncamiento/relleno.Si se deja sin definir o se establece en
None, se utilizará la longitud máxima predefinida del modelo si uno de los parámetros de truncamiento/relleno lo requiere. Si el modelo no tiene una longitud máxima de entrada específica (como XLNet), el truncamiento/relleno a una longitud máxima se desactivará. - stride (
int, opcional, valor predeterminado 0) — Si se establece en un número junto conmax_length, los tokens de desbordamiento devueltos cuandoreturn_overflowing_tokens=Truecontendrán algunos tokens del final de la secuencia truncada devuelta para proporcionar cierta superposición entre las secuencias truncadas y las de desbordamiento. El valor de este argumento define el número de tokens superpuestos. - is_split_into_words (
bool, opcional, valor predeterminadoFalse) — Indica si la entrada ya está pretokenizada (por ejemplo, dividida en palabras). Si se establece enTrue, el tokenizador asume que la entrada ya está dividida en palabras (por ejemplo, dividiéndola por espacios en blanco) y las tokenizará. Esto es útil para NER o clasificación de tokens. - pad_to_multiple_of (
int, opcional) — Si se establece, se rellenará la secuencia hasta un múltiplo del valor proporcionado. Requiere quepaddingesté activado. Esto es especialmente útil para habilitar el uso de Tensor Cores en hardware de NVIDIA con capacidad de cálculo>= 7.5(Volta). - padding_side (
str, opcional) — El lado en el que el modelo debe aplicar el relleno. Debe seleccionarse entre [‘right’, ‘left’]. El valor predeterminado se elige a partir del atributo de clase con el mismo nombre. - return_tensors (
stro TensorType, opcional) — Si se establece, devolverá tensores en lugar de una lista de enteros de Python. Los valores aceptables son:'pt': Devuelve objetostorch.Tensorde PyTorch.'np': Devuelve objetos Numpynp.ndarray.
- add_special_tokens (
bool, opcional, valor predeterminadoTrue) — Si se codifican o no las secuencias con los tokens especiales relativos a su modelo. - padding (
bool,stro PaddingStrategy, opcional, el valor predeterminado esFalse) — Activa y controla el padding. Acepta los siguientes valores:Trueo'longest': Rellena hasta la secuencia más larga del lote (o no aplica relleno si solo se proporciona una secuencia).'max_length': Rellena hasta una longitud máxima especificada con el argumentomax_lengtho hasta la longitud de entrada máxima aceptable para el modelo si no se proporciona dicho argumento.Falseo'do_not_pad'(predeterminado): Sin relleno (es decir, puede generar un lote con secuencias de diferentes longitudes).
- truncation (
bool,stro TruncationStrategy, opcional, por defectoFalse) — Activa y controla la truncación. Acepta los siguientes valores:Trueo'longest_first': Trunca hasta una longitud máxima especificada con el argumentomax_lengtho hasta la longitud de entrada máxima aceptable para el modelo si no se proporciona dicho argumento. Esto truncará token a token, eliminando un token de la secuencia más larga de la pareja si se proporciona una pareja de secuencias (o un lote de parejas).'only_first': Trunca a una longitud máxima especificada con el argumentomax_lengtho a la longitud de entrada máxima aceptable para el modelo si no se proporciona dicho argumento. Esto solo truncará la primera secuencia de un par si se proporciona un par de secuencias (o un lote de pares).'only_second': Trunca a una longitud máxima especificada con el argumentomax_lengtho a la longitud de entrada máxima aceptable para el modelo si no se proporciona dicho argumento. Esto solo truncará la segunda secuencia de un par si se proporciona un par de secuencias (o un lote de pares).Falseo'do_not_truncate'(predeterminado): sin truncamiento (es decir, se puede generar un lote con longitudes de secuencia mayores que el tamaño máximo de entrada admisible por el modelo).
- max_length (
int, opcional) — Controla la longitud máxima que utilizará uno de los parámetros de truncamiento/relleno. Si se deja sin establecer o se establece enNone, se utilizará la longitud máxima predefinida del modelo si uno de los parámetros de truncamiento/relleno requiere una longitud máxima. Si el modelo no tiene una longitud de entrada máxima específica (como XLNet), el truncamiento/relleno a una longitud máxima se desactivará. - stride (
int, opcional, valor predeterminado 0) — Si se establece en un número junto conmax_length, los tokens de desbordamiento devueltos cuandoreturn_overflowing_tokens=Truecontendrán algunos tokens del final de la secuencia truncada devuelta para proporcionar cierta superposición entre las secuencias truncadas y las de desbordamiento. El valor de este argumento define el número de tokens superpuestos. - is_split_into_words (
bool, opcional, valor predeterminadoFalse) — Indica si la entrada ya está pretokenizada (p. ej., dividida en palabras). Establezca este valor enTruesi está pasando entradas pretokenizadas para evitar una tokenización adicional. - pad_to_multiple_of (
int, opcional) — Si se establece, se rellenará la secuencia hasta un múltiplo del valor proporcionado. Esto es especialmente útil para habilitar el uso de Tensor Cores en hardware de NVIDIA con capacidad de cálculo>= 7.5(Volta). - return_tensors (
stro TensorType, opcional) — Si se establece, devolverá tensores en lugar de una lista de enteros de Python. Los valores aceptables son:'pt': Devuelve objetostorch.Tensorde PyTorch.'np': Devuelve objetos Numpynp.ndarray.
Tokeniza y prepara para el modelo una secuencia o un par de secuencias. .. warning:: Este método está obsoleto, se debe usar __call__ en su lugar.
Dada la expresión xpath de un nodo particular (como “/html/body/div/li[1]/div/span[2]”), devuelve una lista de IDs de etiquetas y los subíndices correspondientes, teniendo en cuenta la profundidad máxima.
MarkupLMProcessor
clase transformers.MarkupLMProcessor
< source >( feature_extractortokenizer )
Construye un MarkupLMProcessor que envuelve un extractor de características y un tokenizador en un único procesador.
MarkupLMProcessor ofrece todas las funcionalidades de feature_extractor_class y MarkupLMTokenizer. Consulte ~feature_extractor_class y ~MarkupLMTokenizer para obtener más información.
__call__
< source >( 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
Parámetros
- html_strings (
strolist[str], opcional) — Cadenas HTML sin procesar para analizar y procesar. Cuandoparse_html=True(valor predeterminado), estas cadenas se analizan para extraer automáticamente los nodos y los xpaths. Si se proporciona,nodes,xpathsynode_labelsno deben proporcionarse. Obligatorio cuandoparse_html=True. - nodes (
list[list[str]], opcional) — Nodos HTML preextraídos como una lista de listas, donde cada lista interna contiene el contenido de texto de los nodos para un solo documento. Obligatorio cuandoparse_html=False. No debe proporcionarse cuandoparse_html=True. - xpaths (
list[list[str]], opcional) — Expresiones XPath preextraídas que corresponden a los nodos. Debe ser una lista de listas con la misma estructura quenodes, donde cada XPath identifica la ubicación del nodo correspondiente en el árbol HTML. Obligatorio cuandoparse_html=False. No debe proporcionarse cuandoparse_html=True. - node_labels (
list[list[int]], opcional) — Etiquetas para los nodos, utilizadas típicamente para tareas de entrenamiento o ajuste fino. Debe ser una lista de listas con la misma estructura quenodes, donde cada etiqueta corresponde a un nodo. Opcional y solo se utiliza cuandoparse_html=False. - questions (
strolist[str], opcional) — Cadenas de preguntas para tareas de respuesta a preguntas. Cuando se proporciona, el tokenizador procesa las preguntas como la primera secuencia y los nodos como la segunda secuencia (text_pair). Si se proporciona una sola cadena, se convierte en una lista para coincidir con la dimensión del lote del HTML analizado. - add_special_tokens (
bool, opcional, valor predeterminadoTrue) — Indica si se deben o no añadir tokens especiales al codificar las secuencias. Esto utilizará la función subyacentePretrainedTokenizerBase.build_inputs_with_special_tokens, que define qué tokens se añaden automáticamente a los ids de entrada. Esto es útil si deseas añadir tokensbosoeosautomáticamente. - padding (bool, str o PaddingStrategy, opcional, por defecto
False) — Activa y controla el padding. Acepta los siguientes valores:Trueo'longest': Rellena hasta la secuencia más larga del lote (o no aplica relleno si solo se proporciona una secuencia).'max_length': Rellena hasta una longitud máxima especificada con el argumentomax_lengtho hasta la longitud de entrada máxima aceptable para el modelo si no se proporciona dicho argumento.Falseo'do_not_pad'(predeterminado): Sin relleno (es decir, puede generar un lote con secuencias de diferentes longitudes).
- truncation (bool, str o TruncationStrategy, opcional) —
Activa y controla la truncación. Acepta los siguientes valores:
Trueo'longest_first': Trunca hasta una longitud máxima especificada con el argumentomax_lengtho hasta la longitud de entrada máxima aceptable para el modelo si no se proporciona dicho argumento. Esto truncará token a token, eliminando un token de la secuencia más larga de la pareja si se proporciona una pareja de secuencias (o un lote de parejas).'only_first': Trunca a una longitud máxima especificada con el argumentomax_lengtho a la longitud de entrada máxima aceptable para el modelo si no se proporciona dicho argumento. Esto solo truncará la primera secuencia de un par si se proporciona un par de secuencias (o un lote de pares).'only_second': Trunca a una longitud máxima especificada con el argumentomax_lengtho a la longitud de entrada máxima aceptable para el modelo si no se proporciona dicho argumento. Esto solo truncará la segunda secuencia de un par si se proporciona un par de secuencias (o un lote de pares).Falseo'do_not_truncate'(predeterminado): sin truncamiento (es decir, se puede generar un lote con longitudes de secuencia mayores que el tamaño máximo de entrada admisible por el modelo).
- max_length (
int, opcional) — Controla la longitud máxima que se utilizará mediante uno de los parámetros de truncamiento/relleno.Si se deja sin definir o se establece en
None, se utilizará la longitud máxima predefinida del modelo si uno de los parámetros de truncamiento/relleno lo requiere. Si el modelo no tiene una longitud máxima de entrada específica (como XLNet), el truncamiento/relleno a una longitud máxima se desactivará. - stride (
int, opcional, valor predeterminado0) — Si se establece en un número junto conmax_length, los tokens sobrantes devueltos cuandoreturn_overflowing_tokens=Truecontendrán algunos tokens del final de la secuencia truncada devuelta para proporcionar cierta superposición entre las secuencias truncadas y las sobrantes. El valor de este argumento define el número de tokens superpuestos. - pad_to_multiple_of (
int, opcional) — Si se establece, se rellenará la secuencia hasta un múltiplo del valor proporcionado. Requiere quepaddingesté activado. Esto es especialmente útil para habilitar el uso de Tensor Cores en hardware de NVIDIA con capacidad de cálculo>= 7.5(Volta). - return_token_type_ids (
bool, opcional) — Si se deben devolver los IDs de tipo de token. Si se deja en el valor predeterminado, se devolverán los IDs de tipo de token según el valor predeterminado del tokenizador específico, definido por elreturn_outputsatributo. - return_attention_mask (
bool, opcional) — Si se debe devolver la máscara de atención. Si se deja en el valor predeterminado, se devolverá la máscara de atención según el valor predeterminado del tokenizador específico, definido por elreturn_outputsatributo. - return_overflowing_tokens (
bool, opcional, valor predeterminadoFalse) — Indica si se deben devolver las secuencias de tokens que exceden el límite. Si se proporciona un par de secuencias de ids de entrada (o un lote de pares) contruncation_strategy = longest_firstoTrue, se genera un error en lugar de devolver los tokens que exceden el límite. - return_special_tokens_mask (
bool, opcional, valor predeterminadoFalse) — Indica si se debe o no devolver información de la máscara de tokens especiales. - return_offsets_mapping (
bool, opcional, por defectoFalse) — Si se devuelve o no(char_start, char_end)para cada token.Esto solo está disponible en los tokenizadores rápidos que heredan de PreTrainedTokenizerFast; si se utiliza el tokenizador de Python, este método lanzará
NotImplementedError. - return_length (
bool, opcional, valor predeterminadoFalse) — Indica si se deben devolver las longitudes de las entradas codificadas. - verbose (
bool, opcional, valor predeterminadoTrue) — Si se imprime más información y advertencias. - return_tensors (
Union[str, ~utils.generic.TensorType], opcional) — Si se establece, devolverá tensores de un marco de trabajo específico. Los valores aceptables son:'pt': Devuelve objetostorch.Tensorde PyTorch.'np': Devuelve objetosnp.ndarrayde NumPy.
Devuelve
~tokenization_utils_base.BatchEncoding
- data (
dict, opcional) — Diccionario de listas/arrays/tensores devueltos por los métodos__call__/encode_plus/batch_encode_plus(‘input_ids’, ‘attention_mask’, etc.). - encoding (
tokenizers.EncodingoSequence[tokenizers.Encoding], opcional) — Si el tokenizador es un tokenizador rápido que genera información adicional, como el mapeo del espacio de palabras/caracteres al espacio de tokens, la instancia detokenizers.Encodingo la lista de instancias (para lotes) contiene esta información. - tensor_type (
Union[None, str, TensorType], opcional) — Puede especificar un tensor_type aquí para convertir las listas de enteros en Tensors de PyTorch/Numpy durante la inicialización. - prepend_batch_axis (
bool, opcional, valor predeterminadoFalse) — Indica si se debe añadir un eje de lote al convertir a tensores (consultetensor_typearriba). Tenga en cuenta que este parámetro tiene un efecto si el parámetrotensor_typeestá establecido, en caso contrario no tiene efecto. - n_sequences (
int, opcional) — El número de secuencias de entrada representadas por cada codificación (Nonepara desconocido,1para una secuencia única y2para un par de secuencias).
MarkupLMModel
clase transformers.MarkupLMModel
< source >( config: MarkupLMConfigadd_pooling_layer = True )
Parámetros
- config (MarkupLMConfig) — Clase de configuración del modelo con todos los parámetros del modelo. Inicializar con un archivo de configuración no carga los pesos asociados con el modelo, solo la configuración. Consulte el método from_pretrained() para cargar los pesos del modelo.
- add_pooling_layer (
bool, opcional, valor predeterminadoTrue) — Si se debe añadir una capa de pooling
El modelo base Markuplm que emite estados ocultos sin ninguna cabeza específica en la parte superior.
Este modelo hereda de PreTrainedModel. Consulta la documentación de la clase superior para los métodos genéricos que la biblioteca implementa para todos sus modelos (como la descarga o el guardado, el redimensionamiento de las incrustaciones de entrada, la poda de cabezas, etc.).
Este modelo también es una subclase de torch.nn.Module de PyTorch. Úsalo como un módulo de PyTorch regular y consulta la documentación de PyTorch para todo lo relacionado con el uso y el comportamiento generales.
forward
< source >( 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)
Parámetros
- input_ids (
torch.LongTensorde forma(batch_size, sequence_length), opcional) — Índices de los tokens de la secuencia de entrada en el vocabulario. El relleno se ignorará de forma predeterminada.Los índices se pueden obtener usando AutoTokenizer. Consulte PreTrainedTokenizer.encode() y PreTrainedTokenizer.call() para más detalles.
- xpath_tags_seq (
torch.LongTensorde forma(batch_size, sequence_length, config.max_depth), opcional) — IDs de etiquetas para cada token en la secuencia de entrada, rellenos hasta config.max_depth. - xpath_subs_seq (
torch.LongTensorde forma(batch_size, sequence_length, config.max_depth), opcional) — Identificadores de subíndice para cada token en la secuencia de entrada, rellenos hasta config.max_depth. - attention_mask (
torch.Tensorde forma(batch_size, sequence_length), opcional) — Máscara para evitar realizar atención en los índices de tokens de relleno. Valores de máscara seleccionados en[0, 1]:- 1 para los tokens que no están enmascarados,
- 0 para los tokens que están enmascarados.
- token_type_ids (
torch.LongTensorde forma(batch_size, sequence_length), opcional) — Índices de tokens de segmento para indicar las primeras y segundas partes de las entradas. Los índices se seleccionan en[0, 1]:- 0 corresponde a un token de sentence A,
- 1 corresponde a un token de sentence B.
- position_ids (
torch.LongTensorde forma(batch_size, sequence_length), opcional) — Índices de las posiciones de los tokens de cada secuencia de entrada en los embeddings de posición. Seleccionados en el rango[0, config.n_positions - 1]. - inputs_embeds (
torch.Tensorde forma(batch_size, sequence_length, hidden_size), opcional) — Opcionalmente, en lugar de pasarinput_ids, puedes elegir pasar directamente una representación incrustada. Esto es útil si deseas tener más control sobre cómo convertir los índices deinput_idsen los vectores asociados que en la matriz de búsqueda de incrustaciones interna del modelo.
Devuelve
BaseModelOutputWithPooling o tuple(torch.Tensor)
Un BaseModelOutputWithPooling o una tupla de
torch.Tensor (si se pasa return_dict=False o cuando config.return_dict=False) que comprende varios
elementos según la configuración (MarkupLMConfig) y las entradas.
El método forward de MarkupLMModel sobrescribe el método especial __call__.
Aunque la receta para la pasada hacia adelante debe definirse dentro de esta función, se debe llamar a la instancia de
Moduledespués en lugar de a esta, ya que la primera se encarga de ejecutar los pasos de pre y postprocesamiento, mientras que la segunda los ignora silenciosamente.
last_hidden_state (
torch.Tensorde forma(batch_size, sequence_length, hidden_size)) — Secuencia de estados ocultos en la salida de la última capa del modelo.pooler_output (
torch.Tensorde forma(batch_size, hidden_size)) — Estado oculto de la última capa del primer token de la secuencia (token de clasificación) después de un procesamiento adicional a través de las capas utilizadas para la tarea de preentrenamiento auxiliar. Por ejemplo, para la familia de modelos BERT, esto devuelve el token de clasificación después de procesarlo a través de una capa lineal y una función de activación tanh. Los pesos de la capa lineal se entrenan a partir del objetivo de predicción de la siguiente oración (clasificación) durante el preentrenamiento.hidden_states (
tuple(torch.Tensor), opcional, devuelto cuando se pasaoutput_hidden_states=Trueo cuandoconfig.output_hidden_states=True) — Tupla detorch.Tensor(una para la salida de las incrustaciones, si el modelo tiene una capa de incrustaciones, + una para la salida de cada capa) de forma(batch_size, sequence_length, hidden_size).Estados ocultos del modelo en la salida de cada capa más las salidas opcionales de la incrustación inicial.
attentions (
tuple(torch.Tensor), opcional, se devuelve cuando se pasaoutput_attentions=Trueo cuandoconfig.output_attentions=True) — Tupla detorch.Tensor(una por cada capa) de forma(batch_size, num_heads, sequence_length, sequence_length).Pesos de atención tras el softmax de atención, utilizados para calcular la media ponderada en las cabezas de autoatención.
Ejemplos:
>>> 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
clase transformers.MarkupLMForSequenceClassification
< source >( config: MarkupLMConfig )
Parámetros
- config (MarkupLMConfig) — Clase de configuración del modelo con todos los parámetros del modelo. Inicializar con un archivo de configuración no carga los pesos asociados con el modelo, solo la configuración. Consulte el método from_pretrained() para cargar los pesos del modelo.
Modelo transformer de MarkupLM con una cabeza de clasificación/regresión de secuencia en la parte superior (una capa lineal sobre la salida agrupada), por ejemplo, para tareas de GLUE.
Este modelo hereda de PreTrainedModel. Consulta la documentación de la clase superior para los métodos genéricos que la biblioteca implementa para todos sus modelos (como la descarga o el guardado, el redimensionamiento de las incrustaciones de entrada, la poda de cabezas, etc.).
Este modelo también es una subclase de torch.nn.Module de PyTorch. Úsalo como un módulo de PyTorch regular y consulta la documentación de PyTorch para todo lo relacionado con el uso y el comportamiento generales.
forward
< source >( 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)
Parámetros
- input_ids (
torch.Tensorde forma(batch_size, sequence_length), opcional) — Índices de los tokens de la secuencia de entrada en el vocabulario. El relleno se ignorará de forma predeterminada.Los índices se pueden obtener usando AutoTokenizer. Consulte PreTrainedTokenizer.encode() y PreTrainedTokenizer.call() para más detalles.
- xpath_tags_seq (
torch.LongTensorde forma(batch_size, sequence_length, config.max_depth), opcional) — IDs de etiquetas para cada token en la secuencia de entrada, rellenos hasta config.max_depth. - xpath_subs_seq (
torch.LongTensorde forma(batch_size, sequence_length, config.max_depth), opcional) — Identificadores de subíndice para cada token en la secuencia de entrada, rellenos hasta config.max_depth. - attention_mask (
torch.Tensorde forma(batch_size, sequence_length), opcional) — Máscara para evitar realizar atención en los índices de tokens de relleno. Valores de máscara seleccionados en[0, 1]:- 1 para los tokens que no están enmascarados,
- 0 para los tokens que están enmascarados.
- token_type_ids (
torch.Tensorde forma(batch_size, sequence_length), opcional) — Índices de tokens de segmento para indicar las primeras y segundas partes de las entradas. Los índices se seleccionan en[0, 1]:- 0 corresponde a un token de sentence A,
- 1 corresponde a un token de sentence B.
- position_ids (
torch.Tensorde forma(batch_size, sequence_length), opcional) — Índices de las posiciones de los tokens de cada secuencia de entrada en los embeddings de posición. Seleccionados en el rango[0, config.n_positions - 1]. - inputs_embeds (
torch.Tensorde forma(batch_size, sequence_length, hidden_size), opcional) — Opcionalmente, en lugar de pasarinput_ids, puedes elegir pasar directamente una representación incrustada. Esto es útil si deseas tener más control sobre cómo convertir los índices deinput_idsen los vectores asociados que en la matriz de búsqueda de incrustaciones interna del modelo. - labels (
torch.LongTensorde forma(batch_size,), opcional) — Etiquetas para calcular la pérdida de clasificación/regresión de secuencia. Los índices deben estar en[0, ..., config.num_labels - 1]. Siconfig.num_labels == 1se calcula una pérdida de regresión (pérdida de error cuadrático medio), siconfig.num_labels > 1se calcula una pérdida de clasificación (entropía cruzada).
Devuelve
SequenceClassifierOutput o tuple(torch.Tensor)
Un SequenceClassifierOutput o una tupla de
torch.Tensor (si se pasa return_dict=False o cuando config.return_dict=False) que comprende varios
elementos según la configuración (MarkupLMConfig) y las entradas.
El método forward de MarkupLMForSequenceClassification sobrescribe el método especial __call__.
Aunque la receta para la pasada hacia adelante debe definirse dentro de esta función, se debe llamar a la instancia de
Moduledespués en lugar de a esta, ya que la primera se encarga de ejecutar los pasos de pre y postprocesamiento, mientras que la segunda los ignora silenciosamente.
loss (
torch.Tensorde forma(1,), opcional, se devuelve cuando se proporcionalabels) — Pérdida de clasificación (o de regresión si config.num_labels==1).logits (
torch.Tensorde forma(batch_size, config.num_labels)) — Puntuaciones de clasificación (o de regresión si config.num_labels==1) (antes de SoftMax).hidden_states (
tuple(torch.Tensor), opcional, devuelto cuando se pasaoutput_hidden_states=Trueo cuandoconfig.output_hidden_states=True) — Tupla detorch.Tensor(una para la salida de las incrustaciones, si el modelo tiene una capa de incrustaciones, + una para la salida de cada capa) de forma(batch_size, sequence_length, hidden_size).Estados ocultos del modelo en la salida de cada capa más las salidas opcionales de la incrustación inicial.
attentions (
tuple(torch.Tensor), opcional, se devuelve cuando se pasaoutput_attentions=Trueo cuandoconfig.output_attentions=True) — Tupla detorch.Tensor(una por cada capa) de forma(batch_size, num_heads, sequence_length, sequence_length).Pesos de atención tras el softmax de atención, utilizados para calcular la media ponderada en las cabezas de autoatención.
Ejemplos:
>>> 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.logitsMarkupLMForTokenClassification
clase transformers.MarkupLMForTokenClassification
< source >( config: MarkupLMConfig )
Parámetros
- config (MarkupLMConfig) — Clase de configuración del modelo con todos los parámetros del modelo. Inicializar con un archivo de configuración no carga los pesos asociados con el modelo, solo la configuración. Consulte el método from_pretrained() para cargar los pesos del modelo.
Modelo MarkupLM con una cabeza token_classification en la parte superior.
Este modelo hereda de PreTrainedModel. Consulta la documentación de la clase superior para los métodos genéricos que la biblioteca implementa para todos sus modelos (como la descarga o el guardado, el redimensionamiento de las incrustaciones de entrada, la poda de cabezas, etc.).
Este modelo también es una subclase de torch.nn.Module de PyTorch. Úsalo como un módulo de PyTorch regular y consulta la documentación de PyTorch para todo lo relacionado con el uso y el comportamiento generales.
forward
< source >( 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)
Parámetros
- input_ids (
torch.Tensorde forma(batch_size, sequence_length), opcional) — Índices de los tokens de la secuencia de entrada en el vocabulario. El relleno se ignorará de forma predeterminada.Los índices se pueden obtener usando AutoTokenizer. Consulte PreTrainedTokenizer.encode() y PreTrainedTokenizer.call() para más detalles.
- xpath_tags_seq (
torch.LongTensorde forma(batch_size, sequence_length, config.max_depth), opcional) — IDs de etiquetas para cada token en la secuencia de entrada, rellenos hasta config.max_depth. - xpath_subs_seq (
torch.LongTensorde forma(batch_size, sequence_length, config.max_depth), opcional) — Identificadores de subíndice para cada token en la secuencia de entrada, rellenos hasta config.max_depth. - attention_mask (
torch.Tensorde forma(batch_size, sequence_length), opcional) — Máscara para evitar realizar atención en los índices de tokens de relleno. Valores de máscara seleccionados en[0, 1]:- 1 para los tokens que no están enmascarados,
- 0 para los tokens que están enmascarados.
- token_type_ids (
torch.Tensorde forma(batch_size, sequence_length), opcional) — Índices de tokens de segmento para indicar las primeras y segundas partes de las entradas. Los índices se seleccionan en[0, 1]:- 0 corresponde a un token de sentence A,
- 1 corresponde a un token de sentence B.
- position_ids (
torch.Tensorde forma(batch_size, sequence_length), opcional) — Índices de las posiciones de los tokens de cada secuencia de entrada en los embeddings de posición. Seleccionados en el rango[0, config.n_positions - 1]. - inputs_embeds (
torch.Tensorde forma(batch_size, sequence_length, hidden_size), opcional) — Opcionalmente, en lugar de pasarinput_ids, puedes elegir pasar directamente una representación incrustada. Esto es útil si deseas tener más control sobre cómo convertir los índices deinput_idsen los vectores asociados que en la matriz de búsqueda de incrustaciones interna del modelo. - labels (
torch.LongTensorde forma(batch_size, sequence_length), opcional) — Etiquetas para calcular la pérdida de clasificación de tokens. Los índices deben estar en[0, ..., config.num_labels - 1].
Devuelve
MaskedLMOutput o tuple(torch.Tensor)
Un MaskedLMOutput o una tupla de
torch.Tensor (si se pasa return_dict=False o cuando config.return_dict=False) que comprende varios
elementos según la configuración (MarkupLMConfig) y las entradas.
El método forward de MarkupLMForTokenClassification sobrescribe el método especial __call__.
Aunque la receta para la pasada hacia adelante debe definirse dentro de esta función, se debe llamar a la instancia de
Moduledespués en lugar de a esta, ya que la primera se encarga de ejecutar los pasos de pre y postprocesamiento, mientras que la segunda los ignora silenciosamente.
loss (
torch.Tensorde forma(1,), opcional, se devuelve cuando se proporcionalabels) — Pérdida de modelado de lenguaje enmascarado (MLM).logits (
torch.Tensorde forma(batch_size, sequence_length, config.vocab_size)) — Puntuaciones de predicción de la cabeza de modelado de lenguaje (puntuaciones para cada token del vocabulario antes de SoftMax).hidden_states (
tuple(torch.Tensor), opcional, devuelto cuando se pasaoutput_hidden_states=Trueo cuandoconfig.output_hidden_states=True) — Tupla detorch.Tensor(una para la salida de las incrustaciones, si el modelo tiene una capa de incrustaciones, + una para la salida de cada capa) de forma(batch_size, sequence_length, hidden_size).Estados ocultos del modelo en la salida de cada capa más las salidas opcionales de la incrustación inicial.
attentions (
tuple(torch.Tensor), opcional, se devuelve cuando se pasaoutput_attentions=Trueo cuandoconfig.output_attentions=True) — Tupla detorch.Tensor(una por cada capa) de forma(batch_size, num_heads, sequence_length, sequence_length).Pesos de atención tras el softmax de atención, utilizados para calcular la media ponderada en las cabezas de autoatención.
Ejemplos:
>>> 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.logitsMarkupLMForQuestionAnswering
clase transformers.MarkupLMForQuestionAnswering
< source >( config: MarkupLMConfig )
Parámetros
- config (MarkupLMConfig) — Clase de configuración del modelo con todos los parámetros del modelo. Inicializar con un archivo de configuración no carga los pesos asociados con el modelo, solo la configuración. Consulte el método from_pretrained() para cargar los pesos del modelo.
El transformer Markuplm con una cabeza de clasificación de tramos en la parte superior para tareas de respuesta a preguntas extractivas como
SQuAD (una capa lineal sobre la salida de los estados ocultos para calcular span start logits y span end logits).
Este modelo hereda de PreTrainedModel. Consulta la documentación de la clase superior para los métodos genéricos que la biblioteca implementa para todos sus modelos (como la descarga o el guardado, el redimensionamiento de las incrustaciones de entrada, la poda de cabezas, etc.).
Este modelo también es una subclase de torch.nn.Module de PyTorch. Úsalo como un módulo de PyTorch regular y consulta la documentación de PyTorch para todo lo relacionado con el uso y el comportamiento generales.
forward
< source >( 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)
Parámetros
- input_ids (
torch.Tensorde forma(batch_size, sequence_length), opcional) — Índices de los tokens de la secuencia de entrada en el vocabulario. El relleno se ignorará de forma predeterminada.Los índices se pueden obtener usando AutoTokenizer. Consulte PreTrainedTokenizer.encode() y PreTrainedTokenizer.call() para más detalles.
- xpath_tags_seq (
torch.LongTensorde forma(batch_size, sequence_length, config.max_depth), opcional) — IDs de etiquetas para cada token en la secuencia de entrada, rellenos hasta config.max_depth. - xpath_subs_seq (
torch.LongTensorde forma(batch_size, sequence_length, config.max_depth), opcional) — Identificadores de subíndice para cada token en la secuencia de entrada, rellenos hasta config.max_depth. - attention_mask (
torch.Tensorde forma(batch_size, sequence_length), opcional) — Máscara para evitar realizar atención en los índices de tokens de relleno. Valores de máscara seleccionados en[0, 1]:- 1 para los tokens que no están enmascarados,
- 0 para los tokens que están enmascarados.
- token_type_ids (
torch.Tensorde forma(batch_size, sequence_length), opcional) — Índices de tokens de segmento para indicar las primeras y segundas partes de las entradas. Los índices se seleccionan en[0, 1]:- 0 corresponde a un token de sentence A,
- 1 corresponde a un token de sentence B.
- position_ids (
torch.Tensorde forma(batch_size, sequence_length), opcional) — Índices de las posiciones de los tokens de cada secuencia de entrada en los embeddings de posición. Seleccionados en el rango[0, config.n_positions - 1]. - inputs_embeds (
torch.Tensorde forma(batch_size, sequence_length, hidden_size), opcional) — Opcionalmente, en lugar de pasarinput_ids, puedes elegir pasar directamente una representación incrustada. Esto es útil si deseas tener más control sobre cómo convertir los índices deinput_idsen los vectores asociados que en la matriz de búsqueda de incrustaciones interna del modelo. - start_positions (
torch.Tensorde forma(batch_size,), opcional) — Etiquetas para la posición (índice) del inicio del span etiquetado para calcular la pérdida de clasificación de tokens. Las posiciones se limitan a la longitud de la secuencia (sequence_length). Las posiciones fuera de la secuencia no se tienen en cuenta para calcular la pérdida. - end_positions (
torch.Tensorde forma(batch_size,), opcional) — Etiquetas para la posición (índice) del final del span etiquetado para calcular la pérdida de clasificación de tokens. Las posiciones se limitan a la longitud de la secuencia (sequence_length). Las posiciones fuera de la secuencia no se tienen en cuenta para calcular la pérdida.
Devuelve
QuestionAnsweringModelOutput o tuple(torch.Tensor)
Un QuestionAnsweringModelOutput o una tupla de
torch.Tensor (si se pasa return_dict=False o cuando config.return_dict=False) que comprende varios
elementos según la configuración (MarkupLMConfig) y las entradas.
El método forward de MarkupLMForQuestionAnswering sobrescribe el método especial __call__.
Aunque la receta para la pasada hacia adelante debe definirse dentro de esta función, se debe llamar a la instancia de
Moduledespués en lugar de a esta, ya que la primera se encarga de ejecutar los pasos de pre y postprocesamiento, mientras que la segunda los ignora silenciosamente.
loss (
torch.Tensorde forma(1,), opcional, se devuelve cuando se proporcionalabels) — La pérdida total de extracción de tramos es la suma de una Entropía Cruzada para las posiciones de inicio y fin.start_logits (
torch.Tensorde forma(batch_size, sequence_length)) — Puntuaciones de inicio de tramo (antes de SoftMax).end_logits (
torch.Tensorde forma(batch_size, sequence_length)) — Puntuaciones de fin de tramo (antes de SoftMax).hidden_states (
tuple(torch.Tensor), opcional, devuelto cuando se pasaoutput_hidden_states=Trueo cuandoconfig.output_hidden_states=True) — Tupla detorch.Tensor(una para la salida de las incrustaciones, si el modelo tiene una capa de incrustaciones, + una para la salida de cada capa) de forma(batch_size, sequence_length, hidden_size).Estados ocultos del modelo en la salida de cada capa más las salidas opcionales de la incrustación inicial.
attentions (
tuple(torch.Tensor), opcional, se devuelve cuando se pasaoutput_attentions=Trueo cuandoconfig.output_attentions=True) — Tupla detorch.Tensor(una por cada capa) de forma(batch_size, num_heads, sequence_length, sequence_length).Pesos de atención tras el softmax de atención, utilizados para calcular la media ponderada en las cabezas de autoatención.
Ejemplos:
>>> 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'