Kako poiskati vdelave za najbližje ujemanje

Kako Poiskati Vdelave Za Najblizje Ujemanje



Iskanje vdelav za najbližje ujemanje pomeni iskanje tistih vdelav, ki imajo med seboj najbližji pomen. Vdelave so vektorska predstavitev stavka, ki se vnese v jezikovne modele kot vhodni podatki za posebne naloge. Tukaj bomo razpravljali o metodi in tehnikah, ki jih je mogoče uporabiti za iskanje podobnih vdelav.

Sintaksa

Obstaja veliko tehnik in orodij, ki jih lahko uporabimo za iskanje razlike med vdelavami na podlagi njihove razlike v smislu podobnosti. Sledijo metode in njihova sintaksa, ki jih bomo uporabili za iskanje podobnosti vdelave.







Iz teh omenjenih točk poznamo modele, ki jih lahko uporabimo za iskanje ujemanja podobnosti za vdelave. Zdaj se bomo naučili uporabiti vsakega od teh modelov in implementirati posamezne primere na vsakem od teh modelov.



Primer 1: Vdelava najbližjega ujemanja prek vdelav besed

Preden implementiramo besedne vdelave za ujemanje podobnosti, moramo vedeti o besednih vdelavah. Vdelava besed je postopek pretvorbe besedila v obliko vektorja (številske vrednosti), saj naši sistemi razumejo samo vnos v obliki številskih števk.



Obstaja več drugih načinov za opravljanje te naloge, ki vključujejo enkratno kodiranje, vendar bomo uporabili besedne vdelave. Na ta način se vdelave naučijo modeli nevronske mreže (npr. word2vec ali Glove) iz besedil. Besede so preslikane v vektorski prostor višje dimenzije. Vse tiste besede, ki so podobne v kontekstu, so preslikane na najbližje točke. Na ta način lahko vdelave zajamejo razmerja in analogije med različnimi besedami v besedilu.





Ustvarimo besedno vdelavo za stavek. Za ustvarjanje vdelave besed Python nudi ogrodje »gensim«. Gensim je knjižnični paket, ki omogoča uporabo modela 'word2vec', ki pomaga pri ustvarjanju vdelav. Za izvedbo vdelave najprej poskrbimo za namestitev gensima v naše prevajalnike Python. Nato iz gensima uvozimo model »word2vec«.

Model »word2vec« je nekakšen algoritem, ki uporablja samo dva vhodna argumenta, pri čemer prvi argument zahteva besedilo ali stavek, katerega vdelavo želimo ustvariti, drugi argument pa določa najmanjše število, ki določa najmanjše število krat, ko beseda je potrebna, da se pojavi ali da je viden.



Po uvozu modela »word2vec« določimo »text«. Ko podamo besedilo, nato urimo ta model »word2vec« tako, da ga posredujemo skupaj z besedilom in nastavimo najmanjše število na »1«. Sedaj imenujemo ta naučeni model »word2vec.wv.most_similar('consume')« in besedo, katere najbližje vdelave želimo preveriti, v tem primeru dodamo »consume«. Če želite preveriti rezultate vdelave, natisnemo izhod iz modela:

od kot narod modeli uvoz Word2Vec
besedilo = [ [ 'zajec' , 'ima' , 'zobje' ] ]
model = Word2Vec ( besedilo , min_count = 1 )
podobno_vstavljanje = model. wv . najbolj_podobno ( 'zajec' )
tiskanje ( podobno_vstavljanje )

V tem primeru ustvarimo besedno vdelavo za besedilo z uporabo modela »word2vec«, da preverimo njuno podobnost glede na kontekst in to je mogoče videti v predhodno priloženem izrezku, ki je rezultat kode, ki preverja podobne vdelave besede 'porabljati'.

Primer 2: Vdelava iskanja najbližjega prek modela BERT

Obstajajo vnaprej usposobljeni modeli za obdelavo naravnega jezika, ki jih je mogoče uporabiti za izračun podobnosti med besedili, saj lahko razumejo in se naučijo kontekstualnega odnosa med besedami. BERT je eden od vnaprej usposobljenih jezikovnih modelov iz »sentence_transformers« in se lahko nauči podobnosti med besedili. Da najdemo podobnost med besedili, moramo ta model najprej natančno prilagoditi besedilu ali stavkom.

Ko je to storjeno, lahko uporabimo ta model za učenje vdelav. Nato lahko izračunamo podobnost med besedili s funkcijo 'kosinusna podobnost'. Ta primer izvajamo na spletni platformi Python, ki je »google colab«. Za natančno nastavitev modela naložimo (BERT) model. V ta namen najprej namestimo in uvozimo »SentenceTransformers«. Nato naložimo model iz njegovega vnaprej usposobljenega modela z uporabo SentenceTransformer. Za nalaganje modela poimenujemo SentenceTransformer in model BERT skupaj kot »$SentenceTransformer('bert-base-nli-mean-tokens')«, kjer v vhodnem parametru določimo ime vnaprej usposobljenega modela BERT in potem to shranimo v spremenljivko 'BERTmodel'.

Ko končamo z nalaganjem tega modela, določimo štiri besedila, od katerih je vsako sestavljeno iz enega stavka, da preverimo podobnost med njimi. Ko na primer določimo besedila, zdaj ustvarimo vdelave za to besedilo. Posamezno ustvarimo vdelave za vsako besedilo z uporabo funkcije 'encode'.

Funkcijo kodiranja s predpono modela BERT imenujemo 'BERTmodel.encoding ()'. Nato parametrom te funkcije posredujemo »besedilo« in »največjo dolžino«, ki smo ju določili na »512«. To funkcijo kodiranja imenujemo za vsako od besedil in pretvori besedilo v vdelane.

Zdaj uporabimo vsako od teh vdelav in jih nadomestimo s funkcijo kosinusne podobnosti, da poiščemo podobnost med temi vdelavami. Funkcija kosinusne podobnosti se široko uporablja pri vseh nalogah obdelave naravnega jezika za klasifikacije in združevanje besedil/dokumentov.

Za iskanje podobnosti med temi vdelavami uporabimo funkcijo podobnosti kosinusa in vrednost vdelanega stavka nadomestimo z indeksom »0«, drugega vdelanega stavka pa z indeksom »1 do 3«, da preverimo podobnost stavka 0 z drugimi 3 stavki. Izhodne vrednosti funkcije kosinusne podobnosti so v razponu od -1 do 1. Tu 1 pove, da sta vdelavi podobni, -1 pa, da si vdelavi nista podobni. Priložili smo delček kode, ki prikazuje metodo za implementacijo funkcije kosinusne podobnosti z uporabo štirih vdelav stavkov, ki smo jih pravkar ustvarili v primerih z vnaprej usposobljenim modelom BERT.

!pip namestite stavek_pretvornike
stavki = [
'pred štirimi leti je bila steklenica celo polna in .',
'Pes je sanjal, da je pobegnil iz kletke in na ulici, kamor je videla, da gre njen prijatelj.',
'Oseba se je več mesecev igrala z meduzami.',
'V svoji garderobi je našel polža.']
iz sentence_transformers uvozi SentenceTransformer
Bertmodel = SentenceTransformer('bert-base-nli-mean-tokens')
stavek_embeddings = Bertmodel.encode(stavki)
stavčne_vdelave.oblika
iz sklearn.metrics.pairwise uvoz cosine_similarity
# izračunaj podobnost kosinusa za stavek 0:
kosinus_podobnost(
[sentence_embeddings[0]],
stavčne_vdelave [1:])

Matrika v izhodu prikaže vrednost podobnosti »stavka 0« z drugimi tremi stavki, npr. 1, 2 in 3.

Zaključek

Razpravljali smo o metodah za iskanje podobnosti med vdelavami. Pokazali smo dva različna primera za iskanje najbližjega ujemanja vdelave z uporabo modela gensim »word2vec« in vnaprej pripravljenega modela BERT.