बहुभाषी सार्वभौमिक वाक्य एनकोडर प्रश्नोत्तर पुनर्प्राप्ति

TensorFlow.org पर देखें Google Colab में चलाएं गिटहब पर देखें नोटबुक डाउनलोड करें TF हब मॉडल देखें

यह प्रयोग करने के लिए एक डेमो है यूनिवर्सल एनकोडर बहुभाषी क्यू एंड ए मॉडल , पाठ के प्रश्नोत्तर पुनः प्राप्ति के लिए question_encoder और मॉडल की response_encoder के उपयोग को दर्शाता हुआ। हम से वाक्य का उपयोग दस्ते डेमो डाटासेट, प्रत्येक वाक्य और उसके संदर्भ (वाक्य आसपास के पाठ) के रूप में पैराग्राफ response_encoder के साथ उच्च आयाम embeddings में एन्कोड किया गया है। ये embeddings का उपयोग करके बनाया एक सूचकांक में जमा हो जाती है simpleneighbors प्रश्नोत्तर पुनः प्राप्ति के लिए पुस्तकालय।

पुनः प्राप्ति पर एक यादृच्छिक सवाल से चयन किया जाता है दस्ते डाटासेट और उच्च आयाम question_encoder और अर्थ अंतरिक्ष में लगभग निकटतम पड़ोसियों की एक सूची वापस भेजने के simpleneighbors सूचकांक के साथ embedding में इनकोडिंग।

अधिक मॉडल

आप सभी वर्तमान की मेजबानी पाठ मॉडल embedding पा सकते हैं यहाँ और सभी मॉडलों कि साथ ही टीम पर प्रशिक्षित किया गया है यहाँ

सेट अप

सेटअप पर्यावरण

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

सामान्य आयात और कार्य सेटअप करें

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

SQuAD डेटासेट को डाउनलोड करने और निकालने के लिए निम्नलिखित कोड ब्लॉक चलाएँ:

  • टीम से प्रत्येक अनुच्छेद डाटासेट nltk पुस्तकालय और वाक्य और अनुच्छेद पाठ रूपों (पाठ, संदर्भ) टपल का उपयोग कर वाक्य में splitted रहे हैं - वाक्य (पाठ, संदर्भ) tuples की एक सूची है।
  • प्रश्न (सवाल, जवाब) tuples की एक सूची है।

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:

('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.')

निम्नलिखित कोड ब्लॉक सेटअप tensorflow ग्राफ ग्राम और साथ सत्र यूनिवर्सल एनकोडर बहुभाषी क्यू एंड ए मॉडल के question_encoder और response_encoder हस्ताक्षर।

टेंसरफ़्लो हब से मॉडल लोड करें

निम्नलिखित कोड ब्लॉक सभी पाठ, संदर्भ tuples के लिए embeddings गणना और एक में उन्हें स्टोर simpleneighbors response_encoder का उपयोग कर सूचकांक।

एम्बेडिंग की गणना करें और सिंपलनेबर्स इंडेक्स बनाएं

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

पुनः प्राप्ति पर, सवाल question_encoder का उपयोग कर इनकोडिंग और सवाल एम्बेडिंग simpleneighbors सूचकांक क्वेरी करने के लिए प्रयोग किया जाता है।

SQuAD से यादृच्छिक प्रश्न के लिए निकटतम पड़ोसियों को पुनः प्राप्त करें

num_results = 25

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