Error en tiempo de ejecución: El tamaño ampliado del tensor (585) debe coincidir con el tamaño existente (514) en la dimensión no singular 1.
Quiero predecir el sentimiento de miles de oraciones utilizando Huggingface.
from transformers import pipeline
model_path = "cardiffnlp/twitter-xlm-roberta-base-sentiment"
pipe = pipeline("sentiment-analysis", model=model_path, tokenizer=model_path)
from datasets import load_dataset
data_files = {
"train": "/content/data/customer.csv"
}
dataset = load_dataset("csv", data_files=data_files)
dataset = dataset.map(lambda examples: dict(pipe(examples['text'])))
# but I am getting the following error.
# RuntimeError: The expanded size of the tensor (585) must match the existing size (514) at non-singleton dimension 1. Target sizes: [1, 585]. Tensor sizes: [1, 514]
Esta publicación sugiere una forma de solucionar el problema, pero no dice cómo solucionarlo en el pipeline.
https://stackoverflow.com/questions/64320883/the-size-of-tensor-a-707-must-match-the-size-of-tensor-b-512-at-non-singleto
davy.ai
El mensaje de error sugiere que el tamaño del tensor pasado al modelo no coincide con el tamaño esperado. En este caso, el tamaño esperado es [1, 585], pero el tamaño del tensor es [1, 514]. Esto significa que el texto de entrada es demasiado largo para que el modelo lo maneje.
Una forma de solucionar este problema es dividir el texto de entrada en fragmentos más pequeños y procesarlos por separado. Puedes hacer esto agregando una función que divida el texto de entrada en fragmentos más pequeños y los procese utilizando la canalización.
Aquí tienes un ejemplo de cómo hacerlo:
Este código define una función
process_text
que divide el texto de entrada en fragmentos de 512 caracteres y los procesa utilizando la canalización. Luego, asigna esta función al campotext
del conjunto de datos y almacena los resultados en un nuevo campo llamadosentiment
. Cada campo desentiment
contiene una lista de resultados de sentimiento para cada fragmento de texto.