Jak wyszukiwać osadzenia dla najbliższego dopasowania

Jak Wyszukiwac Osadzenia Dla Najblizszego Dopasowania



Wyszukiwanie osadzeń w celu znalezienia najbliższego dopasowania oznacza znalezienie tych osadzeń, które mają najbliższe znaczenie. Osadzenia to wektorowa reprezentacja zdania, która jest podawana do modeli językowych jako dane wejściowe dla określonych zadań. Omówimy tutaj metodę i techniki, które można wykorzystać do znalezienia podobnych osadzeń.

Składnia

Istnieje wiele technik i narzędzi, które możemy wykorzystać, aby znaleźć różnicę między osadzonymi na podstawie ich różnicy pod względem podobieństwa. Poniżej przedstawiono metody i ich składnię, których użyjemy do znalezienia podobieństw osadzania.







Z tych wspomnianych punktów znamy modele, których możemy użyć do znalezienia dopasowania podobieństwa dla osadzeń. Teraz nauczymy się wykorzystywać każdy z tych modeli i wdrażać poszczególne przykłady w każdym z tych modeli.



Przykład 1: Osadzanie najbliższego dopasowania za pomocą osadzania słów

Zanim zaimplementujemy osadzanie słów dla dopasowania podobieństwa, musimy wiedzieć o osadzaniach słów. Osadzanie słów to proces przekształcania tekstu w postać wektorową (wartości liczbowe), ponieważ nasze systemy rozumieją tylko dane wejściowe w postaci cyfr.



Istnieje kilka innych sposobów wykonania tego zadania, które obejmują kodowanie na gorąco, ale użyjemy osadzania słów. W ten sposób osadzania uczą się modele sieci neuronowych (np. word2vec czy Glove) z tekstów. Słowa są odwzorowywane na wielowymiarową przestrzeń wektorową. Wszystkie te słowa, które są podobne w kontekście, są odwzorowywane na najbliższe punkty. W ten sposób osadzania mogą uchwycić relacje i analogie między różnymi słowami w tekście.





Utwórzmy osadzanie słów w zdaniu. Aby utworzyć osadzanie słów, Python udostępnia platformę „gensim”. Gensim to pakiet bibliotek, który umożliwia wykorzystanie modelu „word2vec”, który pomaga w tworzeniu embeddingów. Aby zaimplementować osadzanie, najpierw instalujemy gensim na naszych kompilatorach Pythona. Następnie z gensima importujemy model „word2vec”.

Model „word2vec” jest rodzajem algorytmu, który wykorzystuje tylko dwa argumenty wejściowe, przy czym pierwszy argument wymaga tekstu lub zdania, którego osadzenie chcemy utworzyć, a drugi argument określa minimalną liczbę, która określa minimalną liczbę wystąpień słowo jest wymagane, aby się pojawić lub być widzianym.



Po zaimportowaniu modelu „word2vec” określamy „tekst”. Po określeniu tekstu trenujemy ten model „word2vec”, przekazując go wraz z tekstem i ustawiając minimalną liczbę równą „1”. Teraz nazywamy ten przeszkolony model „word2vec.wv.most_similar('consume')” i przekazujemy słowo, którego najbliższe osadzenie chcemy sprawdzić, w którym w tym przykładzie jest to „consume”. Aby sprawdzić wyniki osadzania, drukujemy dane wyjściowe z modelu:

z jako naród modele import Word2Vec
tekst = [ [ 'Królik' , 'ma' , 'zęby' ] ]
Model = Word2Vec ( tekst , min_liczba = 1 )
podobne_osadzenie = Model. wv . najbardziej_podobne ( 'Królik' )
wydrukować ( podobne_osadzenie )

W tym przykładzie tworzymy osadzanie słów dla tekstu za pomocą modelu „word2vec”, aby sprawdzić ich podobieństwo pod względem kontekstu, co można zobaczyć w załączonym wcześniej fragmencie kodu, który jest wynikiem kodu sprawdzającego podobne osadzenia słowa „konsumować”.

Przykład 2: Osadzenie najbliższego wyszukiwania w modelu BERT

Istnieją wstępnie wytrenowane modele przetwarzania języka naturalnego, które można wykorzystać do obliczenia podobieństwa między tekstami, ponieważ mogą one zrozumieć i nauczyć się kontekstowej relacji między słowami. BERT jest jednym z wstępnie wytrenowanych modeli językowych z „sentence_transformers” i może uczyć się podobieństw między tekstami. Aby znaleźć podobieństwo między tekstami, musimy najpierw dostroić ten model do tekstu lub zdań.

Po wykonaniu tej czynności możemy użyć tego modelu do nauczenia się osadzania. Następnie możemy obliczyć podobieństwo między tekstami za pomocą funkcji „podobieństwa cosinusowego”. Implementujemy ten przykład na internetowej platformie Pythona, którą jest „google colab”. Aby dostroić model, ładujemy model (BERT). W tym celu najpierw instalujemy i importujemy „SentenceTransformers”. Następnie ładujemy model z jego wstępnie wytrenowanego modelu za pomocą SentenceTransformer. Aby załadować model, wywołujemy SentenceTransformer i model BERT razem jako „$SentenceTransformer('bert-base-nli-mean-tokens')”, gdzie określamy nazwę wstępnie wytrenowanego modelu BERT w parametrze wejściowym i następnie zapisujemy to w zmiennej „BERTmodel”.

Po zakończeniu ładowania tego modelu określamy teraz cztery teksty, z których każdy składa się z jednego zdania, aby sprawdzić podobieństwo między nimi. Kiedy na przykład określimy teksty, teraz tworzymy osadzenie dla tego tekstu. Indywidualnie tworzymy osadzenia dla każdego tekstu za pomocą funkcji „encode”.

Funkcję kodującą z przedrostkiem modelu BERT wywołujemy jako „BERTmodel.encoding ()”. Następnie przekazujemy „tekst” i „maksymalną długość”, które ustaliliśmy na „512” do parametrów tej funkcji. Wywołujemy tę funkcję kodowania na każdym z tekstów, która konwertuje tekst na osadzenie.

Teraz wykorzystujemy każde z tych osadzeń i podstawiamy je do cosinusowej funkcji podobieństwa, aby znaleźć podobieństwo między tymi osadzeniami. Funkcja podobieństwa cosinusowego jest szeroko stosowana we wszystkich zadaniach przetwarzania języka naturalnego do klasyfikacji i grupowania tekstów/dokumentów.

Aby znaleźć podobieństwo między tymi osadzaniami, używamy funkcji podobieństwa cosinusów i zastępujemy wartość osadzonego zdania indeksem „0”, a drugiego osadzonego zdania indeksem „1 do 3”, aby sprawdzić podobieństwo zdania 0 z pozostałymi 3 zdania. Wartości wyjściowe funkcji cosinus podobieństwa mieszczą się w zakresie od -1 do 1. Tutaj 1 mówi, że dwa osadzania są podobne, a -1 mówi, że dwa osadzania nie są podobne. Dołączyliśmy fragment kodu, który pokazuje metodę implementacji funkcji podobieństwa cosinusów przy użyciu osadzania czterech zdań, które właśnie utworzyliśmy w przykładach przy użyciu wstępnie wytrenowanego modelu BERT.

!pip zainstaluj sent_transformers
zdania = [
'cztery lata wcześniej butelka była nawet pełna i.',
'Pies śnił o ucieczce z klatki i na ulicy, gdzie widziała idącego przyjaciela.',
„Ta osoba bawiła się meduzami przez wiele miesięcy.”,
„Znalazł ślimaka w swojej szafie.”]
from sentence_transformers importuj SentenceTransformer
Bertmodel = SentenceTransformer('bert-base-nli-mean-tokens')
sent_embeddings = Bertmodel.encode(zdania)
sent_embeddings.shape
z sklearn.metrics.pairwise zaimportuj cosine_similarity
# obliczamy=podobieństwo cosinusowe dla zdania 0:
cosinus_podobieństwo(
[sentence_embeddings[0]],
osadzenie_zdania[1:])

Tablica na wyjściu wyświetla wartość podobieństwa „zdania 0” do pozostałych trzech zdań, np. 1, 2 i 3.

Wniosek

Omówiliśmy metody znajdowania podobieństw między osadzaniami. Pokazaliśmy dwa różne przykłady wyszukiwania najbliższego dopasowania osadzania przy użyciu modelu Gensim „word2vec” i wstępnie wytrenowanego modelu BERT.