קידוד משפטים אוניברסלי רב לשוני

הצג באתר TensorFlow.org הפעל בגוגל קולאב הצג ב-GitHub הורד מחברת ראה דגמי TF Hub

זוהי הדגמה לשימוש אוניברסלי המקודד רב Q & A מודל לשליפת שאלה-תשובה של טקסט, הממחיש את שימוש question_encoder ו response_encoder של המודל. אנו משתמשים במשפטים מן כיתת פסקאות כמו במערך ההדגמה, כול משפט ועל ההקשר שלה (הטקסט סביב המשפט) מקודד לתוך שיבוצים גבוהים ממד עם response_encoder. שיבוצים אלו מאוחסנים אינדקס נבנה באמצעות 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.

הפעל את בלוק הקוד הבא כדי להוריד ולחלץ את מערך הנתונים של SQuAD לתוך:

  • משפטים הם רשימה של (טקסט, בהקשר) tuples - כול פסקו מכיתת נתון הם מחולק לתוך משפטים באמצעות ספריית nltk ואת צורות טקסט המשפט ופסק את (טקסט, בהקשר) tuple.
  • שאלות הן רשימה של (שאלה, תשובה) 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 גרף G עם Q הרב קודאי אוניברסלי & מודל של question_encoder וחתימות response_encoder.

טען דגם מרכזת tensorflow

בלוק הקוד הבא לחשב את השיבוצים עבור כול טקסט, 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.

אחזר את השכנים הקרובים ביותר עבור שאלה אקראית מ-SQuAD

num_results = 25

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