Sådan søger du indlejringer efter det tætteste match

Sadan Soger Du Indlejringer Efter Det Taetteste Match



At søge i indlejringer efter det tætteste match betyder at finde de indlejringer, der har den nærmeste betydning for hinanden. Indlejringerne er den vektorielle repræsentation af en sætning, der føres til sprogmodellerne som input til specifikke opgaver. Vi vil her diskutere metoden og de teknikker, der kan bruges til at finde de lignende indlejringer.

Syntaks

Der findes en masse teknikker og værktøjer, som vi kan bruge til at finde forskellen mellem indlejringerne baseret på deres forskel med hensyn til lighed. Følgende er metoderne og deres involverede syntaks, som vi vil bruge til at finde indlejringslighederne.







Ud fra de nævnte punkter kender vi de modeller, som vi kan bruge til at finde lighedsmatchen for indlejringerne. Nu vil vi lære at bruge hver af disse modeller og implementere de individuelle eksempler på hver af disse modeller.



Eksempel 1: Indlejring af det nærmeste match gennem Word-indlejringer

Før vi implementerer ordet indlejringer for lighedsmatchet, skal vi kende til ordet indlejringer. Ordindlejring er processen med at konvertere teksten til form af en vektor (numeriske værdier), da vores systemer kun forstår input i form af numeriske cifre.



Der er flere andre måder at udføre denne opgave på, som inkluderer one-hot-kodning, men vi vil bruge ordet indlejringer. På denne måde læres indlejringen af ​​det neurale netværks modeller (f.eks. word2vec eller Glove) fra teksterne. Ordene er afbildet til det højere dimensionelle vektorrum. Alle de ord, der ligner hinanden i kontekst, er kortlagt til de nærmeste punkter. På denne måde kan indlejringerne fange relationerne og analogierne mellem de forskellige ord i teksten.





Lad os oprette et ordindlejring til en sætning. For at skabe ordet indlejring giver Python 'gensim'-rammen. Gensim er en bibliotekspakke, der tillader brugen af ​​'word2vec'-modellen, som hjælper med at skabe indlejringerne. For at implementere indlejringen sørger vi først for at installere gensim på vores Python-kompilere. Derefter importerer vi fra gensim 'word2vec'-modellen.

'word2vec'-modellen er en slags algoritme, der kun anvender to input-argumenter, hvor det første argument kræver teksten eller sætningen, hvis indlejring vi ønsker at skabe, og det andet argument specificerer minimumsantallet, der angiver det mindste antal gange, en ord kræves for at dukke op eller blive set.



Efter at have importeret 'word2vec'-modellen, angiver vi 'teksten'. Når vi har specificeret teksten, træner vi denne 'word2vec'-model ved at sende den sammen med teksten og indstille minimumsantallet lig med '1'. Nu kalder vi denne trænede 'word2vec.wv.most_similar('consume')'-model og fodrer det ord, hvis nærmeste indlejringer vi ønsker at tjekke, som i dette eksempel er 'consume'. For at kontrollere indlejringsresultaterne udskriver vi output fra modellen:

fra som nation modeller importere Word2Vec
tekst = [ [ 'kanin' , 'har' , 'tænder' ] ]
model = Word2Vec ( tekst , min_count = 1 )
lignende_indlejring = model. wv . mest_lignende ( 'kanin' )
Print ( lignende_indlejring )

I dette eksempel opretter vi ordet indlejring for en tekst ved hjælp af 'word2vec'-modellen for at kontrollere deres lighed med hensyn til konteksten, og det kan ses i det tidligere vedhæftede uddrag, som er outputtet af koden, der kontrollerer for lignende indlejringer af ordet 'forbruge'.

Eksempel 2: Indlejring af den nærmeste søgning gennem BERT-modellen

Der findes de fortrænede naturlige sprogbehandlingsmodeller, som kan bruges til at beregne ligheden mellem teksterne, da de kan forstå og lære det kontekstuelle forhold mellem ordene. BERT er en af ​​de fortrænede sprogmodeller fra 'sætningstransformere', og den kan lære lighederne mellem teksterne. For at finde ligheden mellem teksterne skal vi først finjustere denne model til teksten eller sætningerne.

Når dette er gjort, kan vi bruge denne model til at lære indlejringerne. Derefter kan vi beregne ligheden mellem teksterne ved hjælp af funktionen 'cosinus lighed'. Vi implementerer dette eksempel på online Python-platformen, som er 'google colab'. For at finjustere modellen indlæser vi (BERT) modellen. Til det formål installerer og importerer vi først 'SentenceTransformers'. Derefter indlæser vi modellen fra dens forudtrænede model ved hjælp af SentenceTransformer. For at indlæse modellen kalder vi SentenceTransformer og BERT-modellen helt som '$SentenceTransformer('bert-base-nli-mean-tokens')', hvor vi angiver navnet på den præ-trænede model af BERT i inputparameteren og så gemmer vi dette i 'BERTmodel'-variablen.

Efter at vi er færdige med at indlæse denne model, specificerer vi nu de fire tekster, der hver består af en sætning for at kontrollere ligheden mellem dem. Når vi f.eks. har specificeret teksterne, opretter vi nu indlejringerne til denne tekst. Vi opretter individuelt indlejringerne for hver af teksterne ved at bruge 'encode'-funktionen.

Vi kalder indkodningsfunktionen med BERT-modellens præfiks som 'BERTmodel.encoding ()'. Vi sender derefter 'teksten' og den 'maksimale længde', som vi fikserede til at være lig med '512', til parametrene for denne funktion. Vi kalder denne indkodningsfunktion på hver af teksterne, og den konverterer teksten til indlejringer.

Nu bruger vi hver af disse indlejringer og erstatter dem med cosinus-lighedsfunktionen for at finde ligheden mellem disse indlejringer. Cosinus-lighedsfunktionen bruges i vid udstrækning i alle de naturlige sprogbehandlingsopgaver til klassifikationer og klyngedannelse af teksterne/dokumenterne.

For at finde ligheden mellem disse indlejringer bruger vi cosinus-lighedsfunktionen og erstatter værdien af ​​den indlejrede sætning med indekset '0' og den anden indlejrede sætning med '1 til 3'-indekset for at kontrollere ligheden mellem sætning 0 med de andre 3 sætninger. Cosinus-lighedsfunktionens outputværdier varierer fra -1 til 1. Her fortæller 1, at de to indlejringer er ens, og -1 siger, at de to indlejringer ikke ligner hinanden. Vi vedhæftede kodestykket, som viser metoden til at implementere cosinus-lighedsfunktionen ved hjælp af de fire sætningsindlejringer, som vi lige har oprettet i eksemplerne ved hjælp af den fortrænede BERT-model.

!pip installer sætningstransformere
sætninger = [
'fire år før var flasken endda fuld og .',
'Hunden drømte om at flygte fra buret og på gaden, hvor hun så sin ven gå.'
'Personen legede med vandmænd i mange måneder .',
'Han fandt en snegl i sit klædeskab.']
fra sætningstransformere importer SentenceTransformer
Bertmodel = SentenceTransformer('bert-base-nli-mean-tokens')
sætningsindlejringer = Bertmodel.encode(sætninger)
sætningsindlejringer.form
fra sklearn.metrics.pairwise importer cosine_similarity
# calculate=ing cosinus lighed for sætningen 0:
cosinus_lighed(
[sætningsindlejringer[0]],
sætningsindlejringer[1:])

Arrayet i outputtet viser lighedsværdien af ​​'sætning 0' til de tre andre sætninger, f.eks. 1, 2 og 3.

Konklusion

Vi diskuterede metoderne for at finde ligheden mellem indlejringerne. Vi viste to forskellige eksempler for at søge efter indlejringens nærmeste match ved hjælp af 'word2vec' gensim-modellen og den fortrænede BERT-model.