Kako pretraživati ​​ugradnje za najbliže podudaranje

Kako Pretrazivati Ugradnje Za Najblize Podudaranje



Pretraživanje umetanja za najbliže podudaranje znači pronalaženje onih umetanja koja imaju najbliže značenje jedno drugome. Ugradnje su vektorska reprezentacija rečenice koja se unosi u jezične modele kao input za specifične zadatke. Ovdje ćemo raspravljati o metodi i tehnikama koje se mogu koristiti za pronalaženje sličnih umetanja.

Sintaksa

Postoji mnogo tehnika i alata koje možemo upotrijebiti za pronalaženje razlike između umetanja na temelju njihove razlike u smislu sličnosti. Slijede metode i njihova uključena sintaksa koje ćemo koristiti za pronalaženje sličnosti ugrađivanja.







Iz tih spomenutih točaka znamo modele koje možemo koristiti za pronalaženje podudaranja sličnosti za ugradnje. Sada ćemo naučiti koristiti svaki od ovih modela i implementirati pojedinačne primjere na svakom od tih modela.



Primjer 1: Ugrađivanje najbližeg podudaranja putem ugrađivanja riječi

Prije nego što implementiramo ugradnje riječi za podudaranje sličnosti, moramo znati o ugrađivanju riječi. Ugrađivanje riječi je proces pretvaranja teksta u oblik vektora (numeričke vrijednosti) budući da naši sustavi razumiju samo unos u obliku numeričkih znamenki.



Postoji nekoliko drugih načina za obavljanje ovog zadatka koji uključuju jednokratno kodiranje, ali mi ćemo koristiti riječ ugrađivanja. Na ovaj način, ugrađivanje se uči pomoću modela neuronske mreže (npr. word2vec ili Glove) iz tekstova. Riječi su preslikane u vektorski prostor više dimenzije. Sve one riječi koje su slične u kontekstu preslikane su na najbliže točke. Na taj način ugradnje mogu uhvatiti odnose i analogije između različitih riječi u tekstu.





Kreirajmo ugradnju riječi za rečenicu. Za stvaranje ugradnje riječi, Python osigurava okvir 'gensim'. Gensim je knjižnični paket koji omogućuje korištenje modela 'word2vec' koji pomaže u stvaranju umetanja. Da bismo implementirali ugradnju, prvo moramo instalirati gensim na naše Python prevoditelje. Zatim, iz gensima, uvozimo model 'word2vec'.

Model 'word2vec' vrsta je algoritma koji koristi samo dva ulazna argumenta gdje prvi argument zahtijeva tekst ili rečenicu čije ugrađivanje želimo stvoriti, a drugi argument specificira minimalni broj koji specificira minimalni broj puta riječ je potrebna da bi se pojavila ili bila viđena.



Nakon uvoza modela 'word2vec', specificiramo 'tekst'. Nakon što navedemo tekst, obučavamo ovaj model 'word2vec' prosljeđujući ga s tekstom i postavljajući minimalni broj jednak '1'. Sada nazivamo ovaj obučeni model 'word2vec.wv.most_similar('consume')' i unosimo riječ čije najbliže ugradnje želimo provjeriti u kojoj je u ovom primjeru 'consume'. Kako bismo provjerili rezultate ugradnje, ispisujemo izlaz iz modela:

iz kao nacija modeli uvoz Word2Vec
tekst = [ [ 'zec' , 'ima' , 'zubi' ] ]
model = Word2Vec ( tekst , min_count = 1 )
slično_ugrađivanje = model. wv . najsličniji ( 'zec' )
ispisati ( slično_ugrađivanje )

U ovom primjeru stvaramo ugradnju riječi za tekst pomoću modela 'word2vec' kako bismo provjerili njihovu sličnost u smislu konteksta i to se može vidjeti u prethodno priloženom isječku koji je izlaz koda koji provjerava slične ugradnje riječi “konzumirati”.

Primjer 2: Ugradnja najbližeg pretraživanja kroz BERT model

Postoje unaprijed uvježbani modeli obrade prirodnog jezika koji se mogu koristiti za izračunavanje sličnosti između tekstova jer mogu razumjeti i naučiti kontekstualni odnos između riječi. BERT je jedan od prethodno uvježbanih jezičnih modela iz “sentence_transformers” i može naučiti sličnosti među tekstovima. Da bismo pronašli sličnost između tekstova, prvo moramo fino prilagoditi ovaj model tekstu ili rečenicama.

Kada to učinimo, možemo koristiti ovaj model za učenje ugrađivanja. Zatim možemo izračunati sličnost između tekstova pomoću funkcije 'kosinusna sličnost'. Implementiramo ovaj primjer na online platformi Python koja je 'google colab'. Za fino podešavanje modela učitavamo (BERT) model. U tu svrhu prvo instaliramo i uvozimo “SentenceTransformers”. Zatim učitavamo model iz njegovog prethodno obučenog modela pomoću SentenceTransformera. Za učitavanje modela nazivamo SentenceTransformer i BERT model zajedno kao “$SentenceTransformer('bert-base-nli-mean-tokens')” gdje navodimo naziv unaprijed obučenog modela BERT-a u ulaznom parametru i onda to spremamo u varijablu “BERTmodel”.

Nakon što završimo s učitavanjem ovog modela, sada specificiramo četiri teksta, od kojih se svaki sastoji od jedne rečenice kako bismo provjerili sličnost među njima. Nakon što navedemo tekstove, na primjer, sada stvaramo ugradnje za ovaj tekst. Pojedinačno stvaramo ugradnje za svaki tekst pomoću funkcije 'encode'.

Funkciju kodiranja s prefiksom BERT modela nazivamo 'BERTmodel.encoding ()'. Zatim prosljeđujemo 'tekst' i 'maksimalnu duljinu' za koju smo fiksirali da bude jednaka '512' parametrima ove funkcije. Ovu funkciju nazivamo kodiranjem na svakom od tekstova i ona pretvara tekst u umetnute elemente.

Sada koristimo svako od ovih ugrađivanja i zamjenjujemo ih u funkciju sličnosti kosinusa kako bismo pronašli sličnost između ovih umetanja. Funkcija kosinusne sličnosti naširoko se koristi u svim zadacima obrade prirodnog jezika za klasifikaciju i grupiranje tekstova/dokumenata.

Kako bismo pronašli sličnost između ovih umetanja, koristimo funkciju sličnosti kosinusa i zamijenimo vrijednost ugrađene rečenice indeksom '0', a druge ugrađene rečenice indeksom '1 do 3' kako bismo provjerili sličnost rečenice 0 s ostale 3 rečenice. Izlazne vrijednosti funkcije kosinusne sličnosti kreću se od -1 do 1. Ovdje 1 govori da su dva ugrađivanja slična, a -1 kaže da dva ugrađivanja nisu slična. Priložili smo isječak koda koji pokazuje metodu za implementaciju funkcije sličnosti kosinusa pomoću četiri umetanja rečenica koje smo upravo izradili u primjerima koristeći unaprijed obučeni BERT model.

!pip instalirajte transformator_rečenica
rečenice = [
'prije četiri godine boca je čak bila puna i .',
'Pas je sanjao kako bježi iz kaveza i na ulici kuda je vidjela svog prijatelja kako ide.',
'Osoba se igrala s meduzama mnogo  mjeseci.',
'Pronašao je puža u svom ormaru.']
iz sentence_transformers import SentenceTransformer
Bertmodel = SentenceTransformer('bert-base-nli-mean-tokens')
rečenice_ugrađivanja = Bertmodel.encode(rečenice)
rečenične_ugradnje.oblik
iz sklearn.metrics.pairwise import cosine_similarity
# izračunaj sličnost kosinusa za rečenicu 0:
kosinus_sličnost(
[sentence_embeddings[0]],
umetanje_rečenica[1:])

Niz u izlazu prikazuje vrijednost sličnosti 'rečenice 0' s ostale tri rečenice, npr. 1, 2 i 3.

Zaključak

Razgovarali smo o metodama pronalaženja sličnosti između umetanja. Pokazali smo dva različita primjera za traženje najbližeg podudaranja ugradnje pomoću gensim modela 'word2vec' i unaprijed obučenog BERT modela.