es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

“Token second\team not found and default index is not set” error en la función de torchtext.

Este es mi código, la función funciona bien para el conjunto de entrenamiento pero para el conjunto de prueba devuelve este error RuntimeError: Token second\team not found and default index is not set

train_data, train_labels = text_classification._create_data_from_iterator(
    vocab, text_classification._csv_iterator(train_csv_path, ngrams, yield_cls=True), False)
test_data, test_labels = text_classification._create_data_from_iterator(
    vocab, text_classification._csv_iterator(test_csv_path, ngrams, yield_cls=True), False)

¿Alguien sabe qué está mal?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error sugiere que no se encuentra un token llamado “second\team” en el conjunto de pruebas y no existe un índice predeterminado establecido para manejar estos casos. Esto puede ocurrir si el conjunto de pruebas contiene una palabra o una secuencia de caracteres que no se haya visto en el conjunto de entrenamiento y, por lo tanto, no se haya incluido en el vocabulario.

    Una posible solución para esto es establecer un índice predeterminado para los tokens fuera del vocabulario al construir el objeto de vocabulario. Esto se puede hacer agregando el parámetro “unk_token” al constructor del vocabulario y proporcionándole una cadena de token especial que se utilizará para todas las palabras fuera del vocabulario.

    Por ejemplo, puedes modificar el código de creación del vocabulario de la siguiente manera:

    unk_token = '<unk>' # Establece una cadena de token para representar palabras fuera del vocabulario.
    vocab = build_vocab_from_iterator(train_iter, specials=["<pad>", "<unk>"])
    

    Luego, al crear los datos de prueba a partir de un iterador, establece el argumento include_unk en True para incluir el índice predeterminado para los tokens fuera del vocabulario:

    test_data, test_labels = text_classification._create_data_from_iterator(
        vocab, text_classification._csv_iterator(test_csv_path, ngrams, yield_cls=True), include_unk=True)
    

    Esto debería manejar el caso en el que se encuentre un token desconocido en el conjunto de pruebas asignándole el índice predeterminado especificado por el parámetro unk_token.

Comments are closed.