Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

247
Visualizações
Restaure el texto original del conjunto de datos imdb de Keras

Restaure el texto original del conjunto de datos imdb de Keras

Quiero restaurar el texto original de imdb del conjunto de datos de imdb de Keras.

Primero, cuando cargo el conjunto de datos imdb de Keras, devuelve una secuencia de índice de palabras.

 >>> (X_train, y_train), (X_test, y_test) = imdb.load_data() >>> X_train[0] [1, 14, 22, 16, 43, 530, 973, 1622, 1385, 65, 458, 4468, 66, 3941, 4, 173, 36, 256, 5, 25, 100, 43, 838, 112, 50, 670, 22665, 9, 35, 480, 284, 5, 150, 4, 172, 112, 167, 21631, 336, 385, 39, 4, 172, 4536, 1111, 17, 546, 38, 13, 447, 4, 192, 50, 16, 6, 147, 2025, 19, 14, 22, 4, 1920, 4613, 469, 4, 22, 71, 87, 12, 16, 43, 530, 38, 76, 15, 13, 1247, 4, 22, 17, 515, 17, 12, 16, 626, 18, 19193, 5, 62, 386, 12, 8, 316, 8, 106, 5, 4, 2223, 5244, 16, 480, 66, 3785, 33, 4, 130, 12, 16, 38, 619, 5, 25, 124, 51, 36, 135, 48, 25, 1415, 33, 6, 22, 12, 215, 28, 77, 52, 5, 14, 407, 16, 82, 10311, 8, 4, 107, 117, 5952, 15, 256, 4, 31050, 7, 3766, 5, 723, 36, 71, 43, 530, 476, 26, 400, 317, 46, 7, 4, 12118, 1029, 13, 104, 88, 4, 381, 15, 297, 98, 32, 2071, 56, 26, 141, 6, 194, 7486, 18, 4, 226, 22, 21, 134, 476, 26, 480, 5, 144, 30, 5535, 18, 51, 36, 28, 224, 92, 25, 104, 4, 226, 65, 16, 38, 1334, 88, 12, 16, 283, 5, 16, 4472, 113, 103, 32, 15, 16, 5345, 19, 178, 32]

Encontré el método imdb.get_word_index(), devuelve un diccionario de índice de palabras como {'create': 984, 'make': 94,…}. Para convertir, creo un diccionario de palabras índice.

 >>> word_index = imdb.get_word_index() >>> index_word = {v:k for k,v in word_index.items()}

Luego, traté de restaurar el texto original como sigue.

 >>> ' '.join(index_word.get(w) for w in X_train[5]) "the effort still been that usually makes for of finished sucking ended cbc's an because before if just though something know novel female ii slowly lot of above freshened with connect in of script their that out end his deceptively ii"

No soy bueno en inglés, pero sé que esta oración es algo extraña.

¿Por qué sucede esto? ¿Cómo puedo restaurar el texto original?

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Su ejemplo está saliendo como un galimatías, es mucho peor que solo faltan algunas palabras de parada.

Si vuelve a leer los documentos para los start_char , oov_char e index_from del método [ keras.datasets.imdb.load_data ]( https://keras.io/datasets/#imdb-movie-reviews-sentiment-classification ) explican lo que está pasando:

start_char : int. El inicio de una secuencia se marcará con este carácter. Establézcalo en 1 porque 0 suele ser el carácter de relleno.

oov_char : int. las palabras que se eliminaron debido al límite de num_words o skip_top se reemplazarán con este carácter.

index_from : int. Indexe palabras reales con este índice y superior.

Ese diccionario que invirtió asume que los índices de palabras comienzan desde 1 .

Pero los índices que devolvieron mis keras tienen <START> y <UNKNOWN> como índices 1 y 2 . (Y asume que usará 0 para <PADDING> ).

Esto funciona para mí:

 import keras NUM_WORDS=1000 # only use top 1000 words INDEX_FROM=3 # word index offset train,test = keras.datasets.imdb.load_data(num_words=NUM_WORDS, index_from=INDEX_FROM) train_x,train_y = train test_x,test_y = test word_to_id = keras.datasets.imdb.get_word_index() word_to_id = {k:(v+INDEX_FROM) for k,v in word_to_id.items()} word_to_id["<PAD>"] = 0 word_to_id["<START>"] = 1 word_to_id["<UNK>"] = 2 word_to_id["<UNUSED>"] = 3 id_to_word = {value:key for key,value in word_to_id.items()} print(' '.join(id_to_word[id] for id in train_x[0] ))

Falta la puntuación, pero eso es todo:

 "<START> this film was just brilliant casting <UNK> <UNK> story direction <UNK> really <UNK> the part they played and you could just imagine being there robert <UNK> is an amazing actor ..."
over 4 years ago · Santiago Trujillo Relatório

0

Puede obtener el conjunto de datos original sin eliminar palabras vacías utilizando get_file de keras.utils.data_utils:

 path = get_file('imdb_full.pkl', origin='https://s3.amazonaws.com/text-datasets/imdb_full.pkl', md5_hash='d091312047c43cf9e4e38fef92437263') f = open(path, 'rb') (training_data, training_labels), (test_data, test_labels) = pickle.load(f)

Crédito - Lección 5 del curso de Jeremy Howards fast.ai

over 4 years ago · Santiago Trujillo Relatório

0

Esto sucedió debido a una preparación básica de datos de NLP . Muchas de las llamadas palabras vacías se eliminaron del texto para que el aprendizaje fuera factible. Por lo general, también la mayor parte de la puntuación y las palabras menos frecuentes se eliminan del texto durante el preprocesamiento. Creo que la única forma de restaurar el texto original es encontrar los textos más coincidentes en IMDB usando, por ejemplo, la API del navegador de Google.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda