Ako hľadať vloženia pre najbližšiu zhodu

Ako Hladat Vlozenia Pre Najblizsiu Zhodu



Hľadanie vloženia s najbližšou zhodou znamená nájsť tie vloženia, ktoré majú k sebe najbližší význam. Vloženie je vektorová reprezentácia vety, ktorá sa privádza do jazykových modelov ako vstupy pre konkrétne úlohy. Budeme tu diskutovať o metóde a technikách, ktoré možno použiť na nájdenie podobných vložení.

Syntax

Existuje veľa techník a nástrojov, ktoré môžeme použiť na nájdenie rozdielu medzi vloženiami na základe ich rozdielu z hľadiska podobnosti. Nasledujú metódy a ich príslušná syntax, ktoré použijeme na nájdenie podobností vkladania.







Z uvedených bodov poznáme modely, ktoré môžeme použiť na nájdenie zhody podobnosti pre vloženia. Teraz sa naučíme využívať každý z týchto modelov a implementovať jednotlivé príklady na každom z týchto modelov.



Príklad 1: Vkladanie najbližšej zhody prostredníctvom vkladania slov

Predtým, ako implementujeme slovo vloženie pre podobnostnú zhodu, musíme vedieť o slove vloženie. Vkladanie slov je proces prevodu textu do formy vektora (číselné hodnoty), keďže naše systémy rozumejú len vstupu vo forme číselných číslic.



Existuje niekoľko ďalších spôsobov, ako vykonať túto úlohu, ktoré zahŕňajú jednorazové kódovanie, ale použijeme slovo vloženie. Týmto spôsobom sa vkladanie učia modely neurónovej siete (napr. word2vec alebo Glove) z textov. Slová sú mapované do vektorového priestoru vyššej dimenzie. Všetky slová, ktoré sú v kontexte podobné, sú namapované na najbližšie body. Týmto spôsobom môžu vloženia zachytiť vzťahy a analógie medzi rôznymi slovami v texte.





Vytvorme vloženie slova pre vetu. Na vytvorenie vkladania slov poskytuje Python rámec „gensim“. Gensim je knižničný balík, ktorý umožňuje použitie modelu „word2vec“, ktorý pomáha pri vytváraní vložení. Aby sme implementovali vkladanie, najprv sa ubezpečíme, že sme nainštalovali gensim do našich kompilátorov Pythonu. Potom z gensim importujeme model „word2vec“.

Model „word2vec“ je druh algoritmu, ktorý využíva iba dva vstupné argumenty, pričom prvý argument vyžaduje text alebo vetu, ktorej vloženie chceme vytvoriť, a druhý argument určuje minimálny počet, ktorý určuje minimálny počet opakovaní slovo sa vyžaduje, aby sa objavilo alebo bolo videné.



Po importovaní modelu „word2vec“ špecifikujeme „text“. Po zadaní textu potom trénujeme tento model „word2vec“ tak, že ho prenesieme s textom a nastavíme minimálny počet na „1“. Teraz tento trénovaný model nazveme „word2vec.wv.most_similar(‘consume’)“ a pripojíme slovo, ktorého najbližšie vloženie chceme skontrolovať, v ktorom je v tomto príklade „consume“. Na kontrolu výsledkov vkladania vytlačíme výstup z modelu:

od ako národ modelov importovať Word2Vec
text = [ [ 'králik' , 'má' , 'zuby' ] ]
Model = Word2Vec ( text , min_count = 1 )
podobné_vkladanie = Model. wv . najviac_podobný ( 'králik' )
vytlačiť ( podobné_vkladanie )

V tomto príklade vytvoríme vloženie slova pre text pomocou modelu „word2vec“, aby sme skontrolovali ich podobnosť z hľadiska kontextu, čo možno vidieť v predtým pripojenom úryvku, ktorý je výstupom kódu, ktorý kontroluje podobné vloženia. slova „spotrebovať“.

Príklad 2: Vloženie najbližšieho vyhľadávania prostredníctvom modelu BERT

Existujú vopred pripravené modely spracovania prirodzeného jazyka, ktoré možno použiť na výpočet podobnosti medzi textami, pretože dokážu pochopiť a naučiť sa kontextový vzťah medzi slovami. BERT je jedným z predtrénovaných jazykových modelov z „sentence_transformers“ a dokáže sa naučiť podobnosti medzi textami. Aby sme našli podobnosť medzi textami, musíme najprv tento model doladiť k textu alebo vetám.

Keď to urobíme, môžeme tento model použiť na naučenie sa vložení. Potom môžeme vypočítať podobnosť medzi textami pomocou funkcie „kosínusová podobnosť“. Tento príklad implementujeme na online platforme Python, ktorá je „google colab“. Na doladenie modelu načítame model (BERT). Na tento účel najprv nainštalujeme a importujeme „SentenceTransformers“. Potom načítame model z jeho predtrénovaného modelu pomocou SentenceTransformer. Na načítanie modelu voláme SentenceTransformer a model BERT spolu ako „$SentenceTransformer('bert-base-nli-mean-tokens')“, kde vo vstupnom parametri špecifikujeme názov vopred trénovaného modelu BERT a potom to uložíme do premennej „BERTmodel“.

Po dokončení načítania tohto modelu teraz špecifikujeme štyri texty, z ktorých každý pozostáva z jednej vety, aby sme skontrolovali podobnosť medzi nimi. Keď napríklad špecifikujeme texty, teraz vytvoríme vloženie pre tento text. Vloženie pre každý text vytvárame individuálne pomocou funkcie „kódovať“.

Funkciu kódovania s predponou modelu BERT nazývame „BERTmodel.encoding ()“. Parametrom tejto funkcie potom odovzdáme „text“ a „maximálnu dĺžku“, ktoré sme stanovili na hodnotu „512“. Túto funkciu kódovania nazývame na každom z textov a konvertuje text na vloženia.

Teraz použijeme každé z týchto vložení a nahradíme ich do funkcie kosínusovej podobnosti, aby sme našli podobnosť medzi týmito vloženiami. Funkcia kosínusovej podobnosti sa široko používa vo všetkých úlohách spracovania prirodzeného jazyka na klasifikáciu a zoskupovanie textov/dokumentov.

Aby sme našli podobnosť medzi týmito vloženiami, použijeme funkciu kosínusovej podobnosti a nahradíme hodnotu vloženej vety indexom „0“ a druhú vloženú vetu indexom „1 až 3“, aby sme skontrolovali podobnosť vety 0 s ostatnými 3. vety. Výstupné hodnoty funkcie kosínusovej podobnosti sa pohybujú od -1 do 1. Tu 1 hovorí, že tieto dve vloženia sú podobné a -1 hovorí, že tieto dve vloženia nie sú podobné. Priložili sme úryvok kódu, ktorý ukazuje metódu implementácie funkcie kosínusovej podobnosti pomocou štyroch vložení viet, ktoré sme práve vytvorili v príkladoch pomocou vopred pripraveného modelu BERT.

!pip install vety_transformers
vety = [
'pred štyrmi rokmi bola fľaša dokonca plná a .',
'Psovi sa snívalo o úteku z klietky a na ulici, kam videla ísť svojho priateľa.',
'Tá osoba sa hrávala s medúzami mnoho mesiacov.',
'Našiel vo svojom šatníku slimáka.']
z vety_transformers importovať SentenceTransformer
Bertmodel = SentenceTransformer('bert-base-nli-mean-tokens')
vetné_embeddings = Bertmodel.encode(vety)
vetné_vloženie.tvar
zo sklearn.metrics.pairwise import cosine_similarity
# vypočítať=ing kosínusová podobnosť pre vetu 0:
kosínusová_podobnosť(
[sentence_embeddings[0]],
vety_vložené[1:])

Pole vo výstupe zobrazuje hodnotu podobnosti „vety 0“ s ostatnými tromi vetami, napr. 1, 2 a 3.

Záver

Diskutovali sme o metódach na nájdenie podobnosti medzi vloženiami. Ukázali sme dva rôzne príklady na hľadanie najbližšej zhody vloženia pomocou modelu gensim „word2vec“ a vopred pripraveného modelu BERT.