Cum să căutați încorporații pentru cea mai apropiată potrivire

Cum Sa Cautati Incorporatii Pentru Cea Mai Apropiata Potrivire



Căutarea înglobărilor pentru cea mai apropiată potrivire înseamnă găsirea acelor înglobări care au cel mai apropiat semnificație între ele. Înglobările sunt reprezentarea vectorială a unei propoziții care este alimentată modelelor de limbaj ca intrări pentru sarcini specifice. Vom discuta aici metoda și tehnicile care pot fi utilizate pentru a găsi înglobări similare.

Sintaxă

Există o mulțime de tehnici și instrumente pe care le putem utiliza pentru a găsi diferența dintre încorporații pe baza diferenței lor în ceea ce privește asemănarea. Următoarele sunt metodele și sintaxa lor implicată pe care le vom folosi pentru a găsi asemănările de încorporare.







Din acele puncte menționate, cunoaștem modelele pe care le putem folosi pentru a găsi potrivirea de similitudine pentru înglobări. Acum, vom învăța să utilizăm fiecare dintre aceste modele și să implementăm exemplele individuale pe fiecare dintre aceste modele.



Exemplul 1: Încorporarea celei mai apropiate potriviri prin încorporarea Word

Înainte de a implementa cuvântul embeddings pentru potrivirea de similaritate, trebuie să știm despre cuvântul embeddings. Încorporarea cuvântului este procesul de conversie a textului în formă de vector (valori numerice), deoarece sistemele noastre înțeleg intrarea doar sub formă de cifre numerice.



Există mai multe alte moduri de a face această sarcină, care includ codificarea one-hot, dar vom folosi cuvântul încorporare. În acest fel, încorporarea este învățată de modelele rețelei neuronale (de exemplu, word2vec sau Glove) din texte. Cuvintele sunt mapate în spațiul vectorial de dimensiuni superioare. Toate acele cuvinte care sunt similare în context sunt mapate la cele mai apropiate puncte. În acest fel, înglobările pot surprinde relațiile și analogiile dintre diferitele cuvinte din text.





Să creăm un cuvânt încorporat pentru o propoziție. Pentru a crea cuvântul încorporare, Python oferă cadrul „gensim”. Gensim este un pachet de bibliotecă care permite utilizarea modelului „word2vec” care ajută la crearea înglobărilor. Pentru a implementa încorporarea, mai întâi ne asigurăm că instalăm gensim pe compilatoarele noastre Python. Apoi, din gensim, importăm modelul „word2vec”.

Modelul „word2vec” este un fel de algoritm care utilizează doar două argumente de intrare în care primul argument necesită textul sau propoziția a cărei încorporare dorim să o creăm, iar al doilea argument specifică numărul minim care specifică numărul minim de ori cuvântul este necesar pentru a apărea sau a fi văzut.



După importarea modelului „word2vec”, specificăm „textul”. Odată ce specificăm textul, antrenăm acest model „word2vec” trecându-l cu textul și setând numărul minim egal cu „1”. Acum, numim acest model antrenat „word2vec.wv.most_similar(‘consuma’)” și alimentăm cuvântul ale cărui înglobări cele mai apropiate dorim să verificăm în care în acest exemplu este „consuma”. Pentru a verifica rezultatele încorporarii, imprimăm rezultatul din model:

din ca națiune modele import Word2Vec
text = [ [ 'iepure' , 'are' , 'dinti' ] ]
model = Word2Vec ( text , min_count = 1 )
similar_embedding = model. wv . cele mai_similare ( 'iepure' )
imprimare ( similar_embedding )

În acest exemplu, creăm cuvântul încorporare pentru un text folosind modelul „word2vec” pentru a verifica asemănarea acestora în ceea ce privește contextul și care poate fi văzut în fragmentul atașat anterior, care este rezultatul codului care verifică încorporarea similară. a cuvântului „consum”.

Exemplul 2: Încorporarea celei mai apropiate căutări prin modelul BERT

Există modele pre-antrenate de procesare a limbajului natural care pot fi utilizate pentru a calcula similaritatea dintre texte, deoarece pot înțelege și învăța relația contextuală dintre cuvinte. BERT este unul dintre modelele de limbaj pre-antrenate din „transformatorii de propoziții” și poate învăța asemănările dintre texte. Pentru a găsi asemănarea dintre texte, mai întâi trebuie să ajustam acest model la text sau propoziții.

Odată făcut acest lucru, putem folosi acest model pentru a învăța înglobările. Apoi, putem calcula similaritatea dintre texte folosind funcția „asemănarea cosinusului”. Implementăm acest exemplu pe platforma online Python care este „google colab”. Pentru a ajusta modelul, încărcăm modelul (BERT). În acest scop, mai întâi instalăm și importăm „SentenceTransformers”. Apoi, încărcăm modelul din modelul său pre-antrenat folosind SentenceTransformer. Pentru a încărca modelul, numim SentenceTransformer și modelul BERT în totalitate ca „$SentenceTransformer('bert-base-nli-mean-tokens')” unde specificăm numele modelului pre-antrenat de BERT în parametrul de intrare și apoi salvăm acest lucru în variabila „BERTmodel”.

După ce am terminat de încărcat acest model, precizăm acum cele patru texte, fiecare constând dintr-o propoziție pentru a verifica asemănarea dintre ele. Odată ce specificăm textele, de exemplu, acum creăm înglobările pentru acest text. Creăm în mod individual înglobările pentru fiecare text utilizând funcția „codare”.

Numim funcția de codificare cu prefixul modelului BERT „BERTmodel.encoding ()”. Trecem apoi „textul” și „lungimea maximă” pe care le-am fixat să fie egale cu „512” parametrilor acestei funcții. Numim această funcție de codificare pe fiecare dintre texte și transformă textul în înglobări.

Acum, utilizăm fiecare dintre aceste înglobări și le înlocuim în funcția de similaritate cosinus pentru a găsi similitudinea dintre aceste înglobări. Funcția de similaritate cosinus este utilizată pe scară largă în toate sarcinile de procesare a limbajului natural pentru clasificări și grupare a textelor/documentelor.

Pentru a găsi asemănarea dintre aceste înglobări, folosim funcția de asemănare cosinus și înlocuim valoarea propoziției încorporate cu indicele „0” și a celeilalte propoziții încorporate cu indicele „1 la 3” pentru a verifica asemănarea propoziției 0 cu celelalte 3. propoziții. Valorile de ieșire ale funcției de similaritate cosinus variază de la -1 la 1. Aici, 1 spune că cele două înglobări sunt similare și -1 spune că cele două înglobări nu sunt similare. Am atașat fragmentul de cod care arată metoda de implementare a funcției de similaritate cosinus folosind cele patru înglobări de propoziții pe care tocmai le-am creat în exemple folosind modelul BERT preantrenat.

!pip install sentence_transformers
propoziții = [
„cu patru ani înainte, sticla era chiar plină și.”,
„Câinea a visat scăparea din cușcă și pe stradă unde și-a văzut prietena mergând.”
„Persoana s-a jucat cu meduze timp de multe  luni.”,
„A găsit un melc în garderoba lui.”]
din sentence_transformers import SentenceTransformer
Bertmodel = SentenceTransformer('bert-base-nli-mean-tokens')
sentence_embeddings = Bertmodel.encode(propoziții)
sentence_embeddings.shape
din sklearn.metrics.pairwise import cosine_similarity
# calculate=ing asemănarea cosinusului pentru propoziția 0:
asemănarea_cosinusului(
[sentence_embeddings[0]],
sentence_embeddings[1:])

Matricea din ieșire afișează valoarea de similaritate a „propoziției 0” cu celelalte trei propoziții, de ex. 1, 2 și 3.

Concluzie

Am discutat despre metodele de a găsi asemănarea dintre înglobări. Am arătat două exemple diferite pentru a căuta cea mai apropiată potrivire a încorporarii folosind modelul gensim „word2vec” și modelul BERT preantrenat.