Slik søker du innbygginger for den nærmeste matchen

Slik Soker Du Innbygginger For Den Naermeste Matchen



Å søke i innebyggingene etter det nærmeste samsvaret betyr å finne de innebyggingene som har den nærmeste betydningen til hverandre. Innebyggingene er den vektorielle representasjonen av en setning som mates til språkmodellene som input for spesifikke oppgaver. Vi vil her diskutere metoden og teknikkene som kan brukes for å finne lignende innstøpninger.

Syntaks

Det finnes mange teknikker og verktøy som vi kan bruke for å finne forskjellen mellom embeddingene basert på deres forskjell når det gjelder likhet. Følgende er metodene og deres involverte syntaks som vi vil bruke for å finne innbyggingslikhetene.







Fra de nevnte punktene kjenner vi modellene som vi kan bruke for å finne likhetsmatch for innbyggingene. Nå skal vi lære å bruke hver av disse modellene og implementere de individuelle eksemplene på hver av disse modellene.



Eksempel 1: Innebygging av det nærmeste samsvaret gjennom Word-innbygging

Før vi implementerer ordet embeddings for likhetsmatchen, må vi vite om ordet embeddings. Ordinnbygging er prosessen med å konvertere teksten til form av en vektor (numeriske verdier) siden våre systemer bare forstår input i form av numeriske sifre.



Det er flere andre måter å gjøre denne oppgaven på, som inkluderer one-hot-koding, men vi vil bruke ordet embeddings. På denne måten læres innebyggingen av det nevrale nettverkets modeller (f.eks. word2vec eller Glove) fra tekstene. Ordene er kartlagt til det høyere dimensjonale vektorrommet. Alle de ordene som er like i kontekst er kartlagt til de nærmeste punktene. På denne måten kan innbyggingene fange opp relasjonene og analogiene mellom de ulike ordene i teksten.





La oss lage et ordinnbygging for en setning. For å lage ordet innebygging, gir Python rammeverket 'gensim'. Gensim er en bibliotekspakke som tillater bruk av 'word2vec'-modellen som hjelper til med å lage innebyggingene. For å implementere innebyggingen, sørger vi først for å installere gensim på våre Python-kompilatorer. Deretter, fra gensim, importerer vi 'word2vec'-modellen.

'word2vec'-modellen er en slags algoritme som bare bruker to input-argumenter der det første argumentet krever teksten eller setningen som vi ønsker å lage, og det andre argumentet spesifiserer minimumsantallet som spesifiserer minimum antall ganger en ordet kreves for å vises eller bli sett.



Etter å ha importert 'word2vec'-modellen, spesifiserer vi 'teksten'. Når vi har spesifisert teksten, trener vi denne 'word2vec'-modellen ved å sende den med teksten og sette minimumsantallet lik '1'. Nå kaller vi denne trente 'word2vec.wv.most_similar('consume')'-modellen og mater ordet hvis nærmeste innebygging vi ønsker å sjekke inn, som i dette eksemplet er 'consume'. For å sjekke innbyggingsresultatene skriver vi ut resultatet fra modellen:

fra som en nasjon modeller import Word2Vec
tekst = [ [ 'kanin' , 'har' , 'tenner' ] ]
modell = Word2Vec ( tekst , min_count = 1 )
lignende_innbygging = modell. wv . mest_lignende ( 'kanin' )
skrive ut ( lignende_innbygging )

I dette eksemplet lager vi ordet innebygging for en tekst ved å bruke 'word2vec'-modellen for å sjekke likheten når det gjelder konteksten, og som kan sees i den tidligere vedlagte kodebiten som er utdata fra koden som sjekker for lignende innebygginger av ordet «konsumere».

Eksempel 2: Innbygging av det nærmeste søket gjennom BERT-modellen

Det finnes de ferdigtrente naturlige språkbehandlingsmodellene som kan brukes til å beregne likheten mellom tekstene siden de kan forstå og lære det kontekstuelle forholdet mellom ordene. BERT er en av de ferdigtrente språkmodellene fra «setningstransformatorene» og den kan lære likhetene mellom tekstene. For å finne likheten mellom tekstene, må vi først finjustere denne modellen til teksten eller setningene.

Når dette er gjort, kan vi bruke denne modellen til å lære innbyggingene. Deretter kan vi beregne likheten mellom tekstene ved å bruke funksjonen 'kosinuslikhet'. Vi implementerer dette eksemplet på den nettbaserte Python-plattformen som er 'google colab'. For å finjustere modellen laster vi inn (BERT) modellen. For det formålet installerer og importerer vi først 'SentenceTransformers'. Deretter laster vi modellen fra den ferdigtrente modellen ved hjelp av SentenceTransformer. For å laste modellen kaller vi SentenceTransformer og BERT-modellen totalt som '$SentenceTransformer('bert-base-nli-mean-tokens')' hvor vi spesifiserer navnet på den forhåndstrente modellen til BERT i inngangsparameteren og så lagrer vi dette i 'BERTmodel'-variabelen.

Etter at vi er ferdige med å laste inn denne modellen, spesifiserer vi nå de fire tekstene, som hver består av én setning for å sjekke likheten mellom dem. Når vi for eksempel har spesifisert tekstene, lager vi nå innebyggingene for denne teksten. Vi lager individuelt innebyggingene for hver tekst ved å bruke 'encode'-funksjonen.

Vi kaller kodingsfunksjonen med prefikset til BERT-modellen som 'BERTmodel.encoding ()'. Vi sender deretter 'teksten' og 'maksimal lengde' som vi fikset til å være lik '512' til parametrene for denne funksjonen. Vi kaller denne kodingsfunksjonen på hver av tekstene, og den konverterer teksten til embeddings.

Nå bruker vi hver av disse innebyggingene og erstatter dem med cosinuslikhetsfunksjonen for å finne likheten mellom disse innebyggingene. Kosinuslikhetsfunksjonen brukes mye i alle de naturlige språkbehandlingsoppgavene for klassifiseringer og gruppering av tekstene/dokumentene.

For å finne likheten mellom disse innbyggingene bruker vi cosinuslikhetsfunksjonen og erstatter verdien av den innebygde setningen med indeksen '0' og den andre innebygde setningen med indeksen '1 til 3' for å sjekke likheten til setning 0 med de andre 3 setninger. Utgangsverdiene for cosinuslikhetsfunksjonen varierer fra -1 til 1. Her forteller 1 at de to innbyggingene er like og -1 sier at de to innbyggingene ikke er like. Vi la ved kodebiten som viser metoden for å implementere cosinuslikhetsfunksjonen ved å bruke de fire setningsinnbyggingene som vi nettopp opprettet i eksemplene ved å bruke den forhåndstrente BERT-modellen.

!pip installer setningstransformers
setninger = [
'fire år før var flasken til og med full og .',
'Hunden drømte at hun rømte fra buret og på gaten der hun så vennen sin gå.'
'Personen lekte med maneter i mange måneder .',
'Han fant en snegle i garderoben hans.']
fra setningstransformers importer SentenceTransformer
Bertmodel = SentenceTransformer('bert-base-nli-mean-tokens')
setning_embeddings = Bertmodel.encode(setninger)
setningsinnebygginger.form
fra sklearn.metrics.pairwise importer cosine_similarity
# calculate=ing cosinus likhet for setningen 0:
cosine_similarity(
[setningsinnbygginger[0]],
setningsinnbygging[1:])

Matrisen i utdataene viser likhetsverdien til 'setningen 0' med de tre andre setningene, f.eks. 1, 2 og 3.

Konklusjon

Vi diskuterte metodene for å finne likheten mellom embeddingene. Vi viste to forskjellige eksempler for å søke etter innebyggingens nærmeste match ved å bruke 'word2vec' gensim-modellen og den forhåndsopplærte BERT-modellen.