So durchsuchen Sie Einbettungen nach der besten Übereinstimmung

So Durchsuchen Sie Einbettungen Nach Der Besten Ubereinstimmung



Das Durchsuchen der Einbettungen nach der größten Übereinstimmung bedeutet, die Einbettungen zu finden, die einander am nächsten kommen. Bei den Einbettungen handelt es sich um die vektorielle Darstellung eines Satzes, der den Sprachmodellen als Eingaben für bestimmte Aufgaben zugeführt wird. Wir werden hier die Methode und die Techniken diskutieren, die verwendet werden können, um ähnliche Einbettungen zu finden.

Syntax

Es gibt viele Techniken und Werkzeuge, mit denen wir den Unterschied zwischen den Einbettungen anhand ihrer Ähnlichkeit hinsichtlich der Ähnlichkeit ermitteln können. Im Folgenden sind die Methoden und die dazugehörige Syntax aufgeführt, die wir zum Finden der Einbettungsähnlichkeiten verwenden werden.







Aus den genannten Punkten kennen wir die Modelle, mit denen wir die Ähnlichkeitsübereinstimmung für die Einbettungen finden können. Jetzt lernen wir, jedes dieser Modelle zu nutzen und die einzelnen Beispiele für jedes dieser Modelle zu implementieren.



Beispiel 1: Einbetten der engsten Übereinstimmung durch Worteinbettungen

Bevor wir die Worteinbettungen für den Ähnlichkeitsabgleich implementieren, müssen wir etwas über die Worteinbettungen wissen. Bei der Worteinbettung wird der Text in die Form eines Vektors (numerische Werte) umgewandelt, da unsere Systeme die Eingabe nur in Form numerischer Ziffern verstehen.



Es gibt mehrere andere Möglichkeiten, diese Aufgabe zu erledigen, einschließlich One-Hot-Codierung, aber wir werden die Worteinbettungen verwenden. Auf diese Weise wird die Einbettung von den Modellen des neuronalen Netzwerks (z. B. word2vec oder Glove) aus den Texten gelernt. Die Wörter werden auf den höherdimensionalen Vektorraum abgebildet. Alle Wörter, die im Kontext ähnlich sind, werden den nächstgelegenen Punkten zugeordnet. Auf diese Weise können die Einbettungen die Beziehungen und Analogien zwischen den verschiedenen Wörtern im Text erfassen.





Lassen Sie uns eine Worteinbettung für einen Satz erstellen. Um die Worteinbettung zu erstellen, stellt Python das „gensim“-Framework zur Verfügung. Gensim ist ein Bibliothekspaket, das die Verwendung des „word2vec“-Modells ermöglicht, das bei der Erstellung der Einbettungen hilft. Um die Einbettung zu implementieren, stellen wir zunächst sicher, dass wir gensim auf unseren Python-Compilern installieren. Dann importieren wir aus dem Gensim das „word2vec“-Modell.

Das „word2vec“-Modell ist eine Art Algorithmus, der nur zwei Eingabeargumente verwendet, wobei das erste Argument den Text oder den Satz erfordert, dessen Einbettung wir erstellen möchten, und das zweite Argument die Mindestanzahl angibt, die die Mindesthäufigkeit angibt, die a Das Wort muss erscheinen oder gesehen werden.



Nach dem Import des „word2vec“-Modells geben wir den „Text“ an. Sobald wir den Text spezifiziert haben, trainieren wir dieses „word2vec“-Modell, indem wir es mit dem Text übergeben und die Mindestanzahl auf „1“ setzen. Nun nennen wir dieses trainierte „word2vec.wv.most_similar(‚consume‘)“-Modell und geben das Wort ein, dessen engste Einbettungen wir überprüfen möchten, was in diesem Beispiel „consume“ ist. Um die Einbettungsergebnisse zu überprüfen, drucken wir die Ausgabe des Modells aus:

aus als Nation Modelle importieren Word2Vec
Text = [ [ 'Kaninchen' , 'hat' , 'Zähne' ] ]
Modell = Word2Vec ( Text , min_count = 1 )
ähnliche_Einbettung = Modell. wv . Am ähnlichsten ( 'Kaninchen' )
drucken ( ähnliche_Einbettung )

In diesem Beispiel erstellen wir die Worteinbettung für einen Text mithilfe des „word2vec“-Modells, um deren Ähnlichkeit im Hinblick auf den Kontext zu überprüfen. Dies ist im zuvor angehängten Snippet zu sehen, das die Ausgabe des Codes darstellt, der nach ähnlichen Einbettungen sucht des Wortes „konsumieren“.

Beispiel 2: Einbetten der nächstgelegenen Suche durch das BERT-Modell

Es gibt vorab trainierte Modelle zur Verarbeitung natürlicher Sprache, die zur Berechnung der Ähnlichkeit zwischen den Texten verwendet werden können, da sie die Kontextbeziehung zwischen den Wörtern verstehen und lernen können. BERT ist eines der vortrainierten Sprachmodelle der „sentence_transformers“ und kann die Ähnlichkeiten zwischen den Texten lernen. Um die Ähnlichkeit zwischen den Texten zu finden, müssen wir dieses Modell zunächst auf den Text oder die Sätze abstimmen.

Sobald dies erledigt ist, können wir dieses Modell verwenden, um die Einbettungen zu lernen. Dann können wir die Ähnlichkeit zwischen den Texten mithilfe der Funktion „Kosinusähnlichkeit“ berechnen. Wir implementieren dieses Beispiel auf der Online-Python-Plattform „google colab“. Zur Feinabstimmung des Modells laden wir das (BERT)-Modell. Dazu installieren und importieren wir zunächst die „SentenceTransformers“. Anschließend laden wir das Modell mithilfe des SentenceTransformer aus seinem vorab trainierten Modell. Um das Modell zu laden, rufen wir den SentenceTransformer und das BERT-Modell insgesamt als „$SentenceTransformer('bert-base-nli-mean-tokens')“ auf, wobei wir im Eingabeparameter und den Namen des vorab trainierten Modells von BERT angeben dann speichern wir dies in der Variablen „BERTmodel“.

Nachdem wir mit dem Laden dieses Modells fertig sind, geben wir nun die vier Texte an, die jeweils aus einem Satz bestehen, um die Ähnlichkeit zwischen ihnen zu überprüfen. Nachdem wir beispielsweise die Texte spezifiziert haben, erstellen wir nun die Einbettungen für diesen Text. Wir erstellen die Einbettungen für jeden Text einzeln, indem wir die Funktion „Encode“ nutzen.

Wir nennen die Kodierungsfunktion mit dem Präfix des BERT-Modells „BERTmodel.encoding()“. Anschließend übergeben wir den „Text“ und die „maximale Länge“, die wir auf „512“ festgelegt haben, an die Parameter dieser Funktion. Wir rufen diese Kodierungsfunktion für jeden Text auf und sie wandelt den Text in Einbettungen um.

Nun nutzen wir jede dieser Einbettungen und ersetzen sie in der Kosinus-Ähnlichkeitsfunktion, um die Ähnlichkeit zwischen diesen Einbettungen zu ermitteln. Die Kosinus-Ähnlichkeitsfunktion wird häufig in allen Verarbeitungsaufgaben natürlicher Sprache zur Klassifizierung und Gruppierung von Texten/Dokumenten verwendet.

Um die Ähnlichkeit zwischen diesen Einbettungen zu ermitteln, verwenden wir die Kosinus-Ähnlichkeitsfunktion und ersetzen den Wert des eingebetteten Satzes durch den Index „0“ und des anderen eingebetteten Satzes durch den Index „1 bis 3“, um die Ähnlichkeit von Satz 0 mit den anderen 3 zu überprüfen Sätze. Die Ausgabewerte der Kosinus-Ähnlichkeitsfunktion reichen von -1 bis 1. Hier gibt 1 an, dass die beiden Einbettungen ähnlich sind, und -1 sagt aus, dass die beiden Einbettungen nicht ähnlich sind. Wir haben das Code-Snippet angehängt, das die Methode zur Implementierung der Kosinus-Ähnlichkeitsfunktion mithilfe der vier Satzeinbettungen zeigt, die wir gerade in den Beispielen mithilfe des vorab trainierten BERT-Modells erstellt haben.

!pip install sent_transformers
Sätze = [
„Vor vier Jahren war die Flasche noch voll und ...“,
„Der Hund träumte davon, aus dem Käfig zu entkommen und auf die Straße zu gehen, wohin sie ihre Freundin gehen sah.“,
„Die Person spielte viele Monate lang mit Quallen.“,
„Er hat eine Schnecke in seinem Kleiderschrank gefunden.“]
aus Satz_transformers Importieren Sie SentenceTransformer
Bertmodel = SentenceTransformer('bert-base-nli-mean-tokens')
Satz_embeddings = Bertmodel.encode(Sätze)
Satz_embeddings.shape
aus sklearn.metrics.pairwise import cosine_similarity
# berechne die Kosinusähnlichkeit für den Satz 0:
cosine_similarity(
[sentence_embeddings[0]],
Satz_Einbettungen[1:])

Das Array in der Ausgabe zeigt den Ähnlichkeitswert des „Satzes 0“ zu den anderen drei Sätzen an, z.B. 1, 2 und 3.

Abschluss

Wir haben die Methoden besprochen, um die Ähnlichkeit zwischen den Einbettungen zu finden. Wir haben zwei verschiedene Beispiele gezeigt, um mithilfe des „word2vec“-Gensim-Modells und des vorab trainierten BERT-Modells nach der engsten Übereinstimmung der Einbettung zu suchen.