ヘルプKaggleにTensorFlowグレートバリアリーフを保護チャレンジに参加

多言語ユニバーサルセンテンスエンコーダQ&A検索

TensorFlow.orgで表示 GoogleColabで実行 GitHubで表示 ノートブックをダウンロードTFハブモデルを参照してください

これは、使用するためのデモであるユニバーサル・エンコーダ多言語の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データセットをダウンロードして抽出します。

  • 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:

('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_encoderresponse_encoderシグネチャ。

TensorFlowハブからモデルをロードします

次のコードブロックは、すべてのテキスト、コンテキストタプルのための埋め込みを計算し、それらを保存するsimpleneighborsのresponse_encoderを使用してインデックス。

埋め込みを計算し、simpleneighborsインデックスを作成します

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])