Çok Dilde Evrensel Cümle Kodlayıcı Soru-Cevap Alma

TensorFlow.org'da görüntüleyin Google Colab'da çalıştırın GitHub'da görüntüle Not defterini indir TF Hub modellerine bakın

Bu kullanmak için bir demo Evrensel Encoder Dilde Q & A modeli , metnin soru-cevap alma için question_encoder ve modelin response_encoder kullanımını gösteren. Biz cümleler kullanmak Squad response_encoder yüksek boyut tespitlerinin içine kodlanan demo veri kümesi, her cümle ve bağlamı (cümle çevreleyen metin) olarak paragraflar. Bu kalıplamaların kullanılarak inşa bir dizin saklanır simpleneighbors soru-cevap alma için kütüphane.

Alma günü rastgele soru seçilir Squad veri kümesi ve question_encoder ve anlamsal uzayda yaklaşık en yakın komşuları bir listesini döndürmeden simpleneighbors endeksi ile gömme yüksek boyuta kodlanmış.

Daha fazla model

Sen modelleri gömme olan tüm barındırılan metni bulabilir burada ve sıra takımda eğitim tüm modellerini burada .

Kurmak

Kurulum Ortamı

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

Ortak içe aktarmaları ve işlevleri ayarlayın

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

SQuAD veri kümesini indirmek ve şuraya çıkarmak için aşağıdaki kod bloğunu çalıştırın:

  • nltk kütüphane ve cümle ve paragraf metin biçimlerini (metin, bağlam) tuple kullanılarak cümle içine parçalı olan veri kümesi Squad her paragraf - cümleler (metin, bağlam) dizilerini listesidir.
  • sorular (soru, cevap) dizilerini listesidir.

SQuAD verilerini indirin ve çıkarın

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:

('The Mongol Emperors had built large palaces and pavilions, but some still '
 'continued to live as nomads at times.')

context:

("Since its invention in 1269, the 'Phags-pa script, a unified script for "
 'spelling Mongolian, Tibetan, and Chinese languages, was preserved in the '
 'court until the end of the dynasty. Most of the Emperors could not master '
 'written Chinese, but they could generally converse well in the language. The '
 'Mongol custom of long standing quda/marriage alliance with Mongol clans, the '
 'Onggirat, and the Ikeres, kept the imperial blood purely Mongol until the '
 'reign of Tugh Temur, whose mother was a Tangut concubine. The Mongol '
 'Emperors had built large palaces and pavilions, but some still continued to '
 'live as nomads at times. Nevertheless, a few other Yuan emperors actively '
 'sponsored cultural activities; an example is Tugh Temur (Emperor Wenzong), '
 'who wrote poetry, painted, read Chinese classical texts, and ordered the '
 'compilation of books.')

Aşağıdaki kod bloğu ayar ile tensorflow grafiktir g aktif Evrensel Kodlayıcı dilli Q ve bir modelin sitesindeki question_encoder ve response_encoder imzalar.

Modeli tensorflow hub'ından yükleyin

Aşağıdaki kod bloğu tüm metin, bağlam tuplelar için katıştırmalarını hesaplamak ve bir saklayabilirsiniz simpleneighbors response_encoder kullanarak indeksi.

Yerleştirmeleri hesaplayın ve basit komşular dizini oluşturun

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

Alma günü, soru question_encoder kullanılarak kodlanan ve soru gömme simpleneighbors endeksi sorgulamak için kullanılır.

SQuAD'dan rastgele bir soru için en yakın komşuları alın

num_results = 25

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