استرجاع الأسئلة والأجوبة في برنامج التشفير الشامل متعدد اللغات

عرض على TensorFlow.org تشغيل في Google Colab عرض على جيثب تحميل دفتر انظر نماذج TF Hub

هذا هو تجريبي لاستخدام Univeral في التشفير Q & A متعدد اللغات نموذج لاسترجاع سؤال وجواب من النص، مما يدل على استخدام question_encoder وresponse_encoder للنموذج. نستخدم جملًا من فقرات SQuAD كمجموعة بيانات تجريبية ، يتم ترميز كل جملة وسياقها (النص المحيط بالجملة) في عمليات دمج عالية الأبعاد باستخدام response_encoder . يتم تخزين هذه الزخارف في فهرس تم إنشاؤه باستخدام مكتبة الجيران البسيطة لاسترجاع الأسئلة والأجوبة.

عند الاسترداد ، يتم تحديد سؤال عشوائي من مجموعة بيانات SQuAD ويتم ترميزه في التضمين عالي الأبعاد باستخدام أداة الاستفهام والاستعلام عن مؤشر الجيران البسيط الذي يعرض قائمة بأقرب جيران تقريبي في الفضاء الدلالي.

المزيد من النماذج

يمكنك أن تجد كل نص استضافت حاليا تضمين نماذج هنا وجميع النماذج التي تم تدريبهم على المنتخب وكذلك هنا .

يثبت

بيئة الإعداد

%%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 واستخراجها إلى:

  • الجمل عبارة عن قائمة مجموعات (نص ، سياق) - يتم تقسيم كل فقرة من مجموعة بيانات SQuAD إلى جمل باستخدام مكتبة nltk وتشكل الجملة ونص الفقرة مجموعة (نص ، سياق).
  • الأسئلة هي قائمة مجموعات (سؤال ، إجابة).

تنزيل واستخراج بيانات 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:

('Warsaw Uprising Hill (121 metres (397.0 ft)), Szczęśliwice hill (138 metres '
 '(452.8 ft) – the highest point of Warsaw in general).')

context:

('Warsaw lies in east-central Poland about 300 km (190 mi) from the Carpathian '
 'Mountains and about 260 km (160 mi) from the Baltic Sea, 523 km (325 mi) '
 'east of Berlin, Germany. The city straddles the Vistula River. It is located '
 'in the heartland of the Masovian Plain, and its average elevation is 100 '
 'metres (330 ft) above sea level. The highest point on the left side of the '
 'city lies at a height of 115.7 metres (379.6 ft) ("Redutowa" bus depot, '
 'district of Wola), on the right side – 122.1 metres (400.6 ft) ("Groszówka" '
 'estate, district of Wesoła, by the eastern border). The lowest point lies at '
 'a height 75.6 metres (248.0 ft) (at the right bank of the Vistula, by the '
 'eastern border of Warsaw). There are some hills (mostly artificial) located '
 'within the confines of the city – e.g. Warsaw Uprising Hill (121 metres '
 '(397.0 ft)), Szczęśliwice hill (138 metres (452.8 ft) – the highest point of '
 'Warsaw in general).')

إعداد كتلة التعليمات البرمجية التالية الرسم البياني tensorflow g وجلسة مع نموذج Univeral Encoder Multilingual Q&A الخاص بتوقيع الأسئلة وتوقيعات response_encoder .

نموذج التحميل من محور tensorflow

تحسب كتلة التعليمات البرمجية التالية عمليات التضمين لكل النص ، ومجموعات السياق وتخزينها في فهرس الجيران البسيط باستخدام response_encoder .

حساب حفلات الزفاف وبناء فهرس الجيران البسيط

Computing embeddings for 10455 sentences
HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=104.0), HTML(value='')))
simpleneighbors index for 10455 sentences built.

عند الاسترجاع ، يتم ترميز السؤال باستخدام أداة الاستفهام ويتم استخدام تضمين السؤال للاستعلام عن فهرس الجيران البسيط.

استرجع أقرب جيران لسؤال عشوائي من SQuAD

num_results = 25

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