O Dia da Comunidade de ML é dia 9 de novembro! Junte-nos para atualização de TensorFlow, JAX, e mais Saiba mais

Recuperação de perguntas e respostas do codificador de frases universais multilíngue

Ver no TensorFlow.org Executar no Google Colab Ver no GitHub Baixar caderno Veja os modelos TF Hub

Esta é uma demonstração para a utilização de Univeral Encoder Multilingual Q & A modelo para recuperação de pergunta-resposta de texto, ilustrando o uso de question_encoder e response_encoder do modelo. Nós usamos frases do esquadrão parágrafos como o conjunto de dados demo, cada frase e seu contexto (o texto em torno da frase) é codificado em embeddings altos dimensão com o response_encoder. Estes mergulhos são armazenados em um índice construído usando o simpleneighbors biblioteca para recuperação de pergunta-resposta.

Em recuperação de uma pergunta aleatória é selecionado a partir do esquadrão conjunto de dados e codificado em dimensão elevada incorporação com o question_encoder e consulta o índice simpleneighbors retornar uma lista de vizinhos mais próximos aproximados no espaço semântico.

Mais modelos

Você pode encontrar todo o texto atualmente hospedado incorporar modelos aqui e todos os modelos que foram treinados no esquadrão bem aqui .

Configurar

Ambiente de Configuração

%%capture
# Install the latest Tensorflow version.
!pip install -q tensorflow_text
!pip install -q simpleneighbors[annoy]
!pip install -q nltk
!pip install -q tqdm

Configurar importações e funções comuns

[nltk_data] Downloading package punkt to /home/kbuilder/nltk_data...
[nltk_data]   Unzipping tokenizers/punkt.zip.

Execute o seguinte bloco de código para baixar e extrair o conjunto de dados SQuAD para:

  • frases é uma lista de (texto, contexto) tuplas - cada parágrafo do esquadrão conjunto de dados está dividida em frases usando biblioteca nltk ea sentença e parágrafo formas de texto (texto, contexto) tupla.
  • perguntas é uma lista de (pergunta, resposta) tuplas.

Baixe e extraia dados SQuAD

squad_url = 'https://rajpurkar.github.io/SQuAD-explorer/dataset/dev-v1.1.json'

squad_json = download_squad(squad_url)
sentences = extract_sentences_from_squad_json(squad_json)
questions = extract_questions_from_squad_json(squad_json)
print("%s sentences, %s questions extracted from SQuAD %s" % (len(sentences), len(questions), squad_url))

print("\nExample sentence and context:\n")
sentence = random.choice(sentences)
print("sentence:\n")
pprint.pprint(sentence[0])
print("\ncontext:\n")
pprint.pprint(sentence[1])
print()
10455 sentences, 10552 questions extracted from SQuAD https://rajpurkar.github.io/SQuAD-explorer/dataset/dev-v1.1.json

Example sentence and context:

sentence:

('In other parts of the canal system, the gastrodermis is different on the '
 'sides nearest to and furthest from the organ that it supplies.')

context:

('The internal cavity forms: a mouth that can usually be closed by muscles; a '
 'pharynx ("throat"); a wider area in the center that acts as a stomach; and a '
 'system of internal canals. These branch through the mesoglea to the most '
 'active parts of the animal: the mouth and pharynx; the roots of the '
 'tentacles, if present; all along the underside of each comb row; and four '
 'branches round the sensory complex at the far end from the mouth – two of '
 'these four branches terminate in anal pores. The inner surface of the cavity '
 'is lined with an epithelium, the gastrodermis. The mouth and pharynx have '
 'both cilia and well-developed muscles. In other parts of the canal system, '
 'the gastrodermis is different on the sides nearest to and furthest from the '
 'organ that it supplies. The nearer side is composed of tall nutritive cells '
 'that store nutrients in vacuoles (internal compartments), germ cells that '
 'produce eggs or sperm, and photocytes that produce bioluminescence. The side '
 'furthest from the organ is covered with ciliated cells that circulate water '
 'through the canals, punctuated by ciliary rosettes, pores that are '
 'surrounded by double whorls of cilia and connect to the mesoglea.')

A configuração seguinte bloco de código do tensorflow gráfico g e sessão com o Univeral Encoder Multilingual Q & A modelo 's question_encoder e assinaturas response_encoder.

Carregar modelo do hub tensorflow

O bloco de código a seguir calcular os mergulhos para todos o texto, tuplas de contexto e armazená-los em um simpleneighbors índice usando a response_encoder.

Compute embeddings e crie índices de vizinhos simples

Computing embeddings for 10455 sentences
0%|          | 0/104 [00:00<?, ?it/s]
simpleneighbors index for 10455 sentences built.

Na recuperação, a questão é codificado utilizando o question_encoder e a incorporação de questão é usado para consultar o índice simpleneighbors.

Recupere os vizinhos mais próximos para uma pergunta aleatória do SQuAD

num_results = 25

query = random.choice(questions)
display_nearest_neighbors(query[0], query[1])