Multilingual Universal Sentence Encoder Q&A การเรียกค้นข้อมูล

ดูบน TensorFlow.org ทำงานใน Google Colab ดูบน GitHub ดาวน์โหลดโน๊ตบุ๊ค ดูรุ่น TF Hub

นี่คือการสาธิตการใช้ ยูนิเวอร์แซ Encoder สื่อสารได้หลายภาษา Q & รูปแบบ สำหรับการดึงคำถามคำตอบของข้อความที่แสดงการใช้งานของ question_encoder และ response_encoder ของรูปแบบ เราใช้ประโยคจาก ทีม ย่อหน้าเป็นชุดสาธิตแต่ละประโยคและบริบท (ข้อความรอบประโยค) ถูกเข้ารหัสเป็น embeddings มิติสูงด้วย response_encoder embeddings เหล่านี้จะถูกเก็บไว้ในดัชนีสร้างขึ้นโดยใช้ simpleneighbors ห้องสมุดสำหรับการดึงคำถามคำตอบ

เกี่ยวกับการดึงคำถามที่สุ่มเลือกจาก ทีม ชุดและเข้ารหัสในมิติสูงฝังกับ question_encoder และแบบสอบถามดัชนี simpleneighbors กลับรายชื่อของเพื่อนบ้านที่ใกล้ที่สุดประมาณในพื้นที่ความหมาย

รุ่นอื่นๆ

คุณจะพบทุกรุ่นฝังเจ้าภาพในปัจจุบันข้อความ ที่นี่ และทุกรุ่นที่ได้รับการฝึกอบรมเกี่ยวกับทีมได้เป็นอย่างดี ที่นี่

ติดตั้ง

ตั้งค่าสภาพแวดล้อม

%%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.

เรียกใช้บล็อกโค้ดต่อไปนี้เพื่อดาวน์โหลดและแตกชุดข้อมูล SQUAAD ลงใน:

  • ประโยคคือรายการ (ข้อความบริบท) tuples - การแต่ละย่อหน้าจากทีมชุดข้อมูลที่มีการแบ่งตัวออกเป็นประโยคที่ใช้ห้องสมุด nltk และประโยคและวรรครูปแบบข้อความ (ข้อความบริบท) tuple
  • คำถามคือรายการ (คำถามคำตอบ) tuples

ดาวน์โหลดและดึงข้อมูล SQUAAD

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 กราฟกรัมและเซสชั่นกับ ยูนิเวอร์แซ Encoder สื่อสารได้หลายภาษา Q & รุ่น A 's question_encoder และลายเซ็น response_encoder

โหลดโมเดลจาก tensorflow hub

บล็อกรหัสต่อไปนี้คำนวณ embeddings สำหรับทุกข้อความ tuples บริบทและเก็บไว้ใน simpleneighbors ดัชนีโดยใช้ response_encoder

คำนวณการฝังและสร้างดัชนีเพื่อนบ้านที่เรียบง่าย

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

เกี่ยวกับการดึงคำถามที่ถูกเข้ารหัสโดยใช้ question_encoder และฝังคำถามที่ใช้ในการค้นหาดัชนี simpleneighbors

เรียกเพื่อนบ้านที่ใกล้ที่สุดเพื่อถามคำถามแบบสุ่มจาก SQUAAD

num_results = 25

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