अपने स्थानीय TensorFlow के लिए RSVP आज हर जगह घटना!
इस पेज का अनुवाद Cloud Translation API से किया गया है.
Switch to English

यूनिवर्सल सेंटेंस एनकोडर

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

यह नोटबुक यह बताती है कि यूनिवर्सल सेंटेंस एनकोडर का उपयोग कैसे करें और इसका उपयोग वाक्य समानता और वाक्य वर्गीकरण कार्यों के लिए करें।

यूनिवर्सल सेंटेंस एनकोडर वाक्य स्तर के एम्बेडिंग को आसान बनाता है क्योंकि यह ऐतिहासिक रूप से व्यक्तिगत शब्दों के लिए एम्बेडिंग को देखने के लिए किया गया है। इसके बाद वाक्य एम्बेडिंग का उपयोग तुच्छता से किया जा सकता है ताकि वाक्य स्तर का अर्थ समानता के साथ-साथ कम पर्यवेक्षण प्रशिक्षण डेटा का उपयोग करके डाउनस्ट्रीम वर्गीकरण कार्यों पर बेहतर प्रदर्शन को सक्षम किया जा सके।

सेट अप

यह खंड टीएफ हब पर यूनिवर्सल सेंटेंस एनकोडर तक पहुंच के लिए पर्यावरण की स्थापना करता है और एनकोडर को शब्दों, वाक्यों और पैराग्राफ में लागू करने के उदाहरण प्रदान करता है।

%%capture
!pip3 install seaborn

Tensorflow को स्थापित करने के बारे में अधिक विस्तृत जानकारी https://www.tensorflow.org/install/ पर देखी जा सकती है।

यूनिवर्सल सेंटेंस एनकोडर के TF हब मॉड्यूल लोड करें

module https://tfhub.dev/google/universal-sentence-encoder/4 loaded

प्रत्येक संदेश के लिए एक प्रतिनिधित्व की गणना करें, समर्थित विभिन्न लंबाई दिखा रहा है।

Message: Elephant
Embedding size: 512
Embedding: [0.008344489149749279, 0.0004808177181985229, 0.06595245748758316, ...]

Message: I am a sentence for which I would like to get its embedding.
Embedding size: 512
Embedding: [0.0508086159825325, -0.016524316743016243, 0.015737783163785934, ...]

Message: Universal Sentence Encoder embeddings also support short paragraphs. There is no hard limit on how long the paragraph is. Roughly, the longer the more 'diluted' the embedding will be.
Embedding size: 512
Embedding: [-0.028332684189081192, -0.0558621771633625, -0.012941448017954826, ...]


सिमेंटिक टेक्सटाइल समानता टास्क उदाहरण

यूनिवर्सल सेंटेंस एनकोडर द्वारा निर्मित एम्बेडिंग लगभग सामान्यीकृत हैं। दो वाक्यों की शब्दार्थ समानता को तुच्छ के आंतरिक उत्पाद के रूप में तुच्छ रूप से गणना की जा सकती है।

04 डी 47 ए 8 बी 90

समानता दृश्य

यहाँ हम एक हीट मैप में समानता दिखाते हैं। अंतिम ग्राफ एक 9x9 मैट्रिक्स है जहां प्रत्येक प्रविष्टि [i, j] वाक्य i और j लिए एन्कोडिंग के आंतरिक उत्पाद के आधार पर रंगीन होती है।

messages = [
    # Smartphones
    "I like my phone",
    "My phone is not good.",
    "Your cellphone looks great.",

    # Weather
    "Will it snow tomorrow?",
    "Recently a lot of hurricanes have hit the US",
    "Global warming is real",

    # Food and health
    "An apple a day, keeps the doctors away",
    "Eating strawberries is healthy",
    "Is paleo better than keto?",

    # Asking about age
    "How old are you?",
    "what is your age?",
]

run_and_plot(messages)

पींग

मूल्यांकन: एसटीएस (शब्दार्थ पाठ समानता) बेंचमार्क

एसटीएस बेंचमार्क उस डिग्री का एक गहन मूल्यांकन प्रदान करता है, जिसमें मानव न्याय के साथ वाक्य एम्बेडिंग संरेखित का उपयोग करके समानता स्कोर की गणना की जाती है। बेंचमार्क को सिस्टम को वाक्य जोड़े के विविध चयन के लिए समानता स्कोर वापस करने की आवश्यकता होती है। Pearson सहसंबंध तब मानव निर्णयों के खिलाफ मशीन समानता स्कोर की गुणवत्ता का मूल्यांकन करने के लिए उपयोग किया जाता है।

डेटा डाउनलोड करें

import pandas
import scipy
import math
import csv

sts_dataset = tf.keras.utils.get_file(
    fname="Stsbenchmark.tar.gz",
    origin="http://ixa2.si.ehu.es/stswiki/images/4/48/Stsbenchmark.tar.gz",
    extract=True)
sts_dev = pandas.read_table(
    os.path.join(os.path.dirname(sts_dataset), "stsbenchmark", "sts-dev.csv"),
    error_bad_lines=False,
    skip_blank_lines=True,
    usecols=[4, 5, 6],
    names=["sim", "sent_1", "sent_2"])
sts_test = pandas.read_table(
    os.path.join(
        os.path.dirname(sts_dataset), "stsbenchmark", "sts-test.csv"),
    error_bad_lines=False,
    quoting=csv.QUOTE_NONE,
    skip_blank_lines=True,
    usecols=[4, 5, 6],
    names=["sim", "sent_1", "sent_2"])
# cleanup some NaN values in sts_dev
sts_dev = sts_dev[[isinstance(s, str) for s in sts_dev['sent_2']]]

सेंटेंस एंबेडिंग का मूल्यांकन करें

sts_data = sts_dev

def run_sts_benchmark(batch):
  sts_encode1 = tf.nn.l2_normalize(embed(tf.constant(batch['sent_1'].tolist())), axis=1)
  sts_encode2 = tf.nn.l2_normalize(embed(tf.constant(batch['sent_2'].tolist())), axis=1)
  cosine_similarities = tf.reduce_sum(tf.multiply(sts_encode1, sts_encode2), axis=1)
  clip_cosine_similarities = tf.clip_by_value(cosine_similarities, -1.0, 1.0)
  scores = 1.0 - tf.acos(clip_cosine_similarities) / math.pi
  """Returns the similarity scores"""
  return scores

dev_scores = sts_data['sim'].tolist()
scores = []
for batch in np.array_split(sts_data, 10):
  scores.extend(run_sts_benchmark(batch))

pearson_correlation = scipy.stats.pearsonr(scores, dev_scores)
print('Pearson correlation coefficient = {0}\np-value = {1}'.format(
    pearson_correlation[0], pearson_correlation[1]))
Pearson correlation coefficient = 0.8036394633818117
p-value = 0.0