Kā meklēt iegulumos vistuvāko atbilstību

Ka Meklet Iegulumos Vistuvako Atbilstibu



Meklējot iegulumos tuvāko atbilstību, ir jāatrod tie ieguljumi, kuriem ir vistuvākā nozīme viena otrai. Iegulumi ir teikuma vektora attēlojums, kas tiek ievadīts valodas modeļos kā ievade konkrētiem uzdevumiem. Šeit mēs apspriedīsim metodi un paņēmienus, ko var izmantot, lai atrastu līdzīgus iegulumus.

Sintakse

Ir daudz paņēmienu un rīku, ko mēs varam izmantot, lai atrastu atšķirību starp iegulumiem, pamatojoties uz to atšķirību līdzības ziņā. Tālāk ir norādītas metodes un to sintakse, ko izmantosim, lai atrastu iegulšanas līdzības.







No minētajiem punktiem mēs zinām modeļus, kurus varam izmantot, lai atrastu iegulšanas līdzības atbilstību. Tagad mēs iemācīsimies izmantot katru no šiem modeļiem un ieviest atsevišķus piemērus katrā no šiem modeļiem.



1. piemērs: vistuvākās atbilstības iegulšana, izmantojot Word iegulšanu

Pirms vārda iegulšanas ieviešanas līdzības atbilstībai, mums ir jāzina par vārdu iegulšana. Vārdu iegulšana ir process, kurā tekstu pārvērš vektora formā (skaitliskās vērtības), jo mūsu sistēmas saprot ievadi tikai ciparu ciparu formātā.



Ir vairāki citi veidi, kā veikt šo uzdevumu, tostarp viena karstuma kodēšana, taču mēs izmantosim vārdu iegulšana. Tādā veidā neironu tīkla modeļi (piemēram, word2vec vai Glove) apgūst iegulšanu no tekstiem. Vārdi tiek kartēti uz augstākas dimensijas vektoru telpu. Visi tie vārdi, kas ir līdzīgi kontekstā, tiek kartēti uz tuvākajiem punktiem. Tādā veidā iegulumi var uztvert attiecības un analoģijas starp dažādiem teksta vārdiem.





Izveidosim teikuma vārda iegulšanu. Lai izveidotu vārda iegulšanu, Python nodrošina “gensim” ietvaru. Gensim ir bibliotēkas pakotne, kas ļauj izmantot “word2vec” modeli, kas palīdz izveidot iegulšanu. Lai ieviestu iegulšanu, mēs vispirms noteikti instalējam gensim savos Python kompilatoros. Pēc tam no gensim mēs importējam “word2vec” modeli.

Modelis “word2vec” ir sava veida algoritms, kas izmanto tikai divus ievades argumentus, kur pirmajam argumentam ir nepieciešams teksts vai teikums, kura iegulšanu mēs vēlamies izveidot, bet otrais arguments norāda minimālo skaitu, kas norāda minimālo reižu skaitu, kad vārds ir jāparādās vai jāredz.



Pēc modeļa “word2vec” importēšanas mēs norādām “tekstu”. Kad esam norādījuši tekstu, mēs apmācām šo “word2vec” modeli, nododot tam tekstu un iestatot minimālo skaitu vienādu ar “1”. Tagad mēs nosaucam šo apmācīto modeli “word2vec.wv.most_similar(‘patērē”) un ievadām vārdu, kura tuvākos iegultos elementus vēlamies pārbaudīt, kurā šajā piemērā ir “patērēt”. Lai pārbaudītu iegulšanas rezultātus, mēs izdrukājam modeļa izvadi:

no kā tauta modeļiem imports Word2Vec
tekstu = [ [ 'zaķis' , 'ir' , 'zobi' ] ]
modelis = Word2Vec ( tekstu , min_count = 1 )
līdzīga_iegulšana = modelis. W V . visvairāk_līdzīgi ( 'zaķis' )
drukāt ( līdzīga_iegulšana )

Šajā piemērā mēs izveidojam vārda iegulšanu tekstam, izmantojot modeli “word2vec”, lai pārbaudītu to līdzību konteksta ziņā, un to var redzēt iepriekš pievienotajā fragmentā, kas ir koda izvade, kas pārbauda līdzīgus iegulumus. no vārda 'patērē'.

2. piemērs: tuvākās meklēšanas iegulšana, izmantojot BERT modeli

Pastāv iepriekš apmācīti dabiskās valodas apstrādes modeļi, kurus var izmantot, lai aprēķinātu līdzību starp tekstiem, jo ​​tie var saprast un iemācīties kontekstuālās attiecības starp vārdiem. BERT ir viens no iepriekš apmācītajiem valodas modeļiem no “teikumu_transformatoriem”, un tas var iemācīties līdzības starp tekstiem. Lai atrastu līdzību starp tekstiem, mums vispirms ir precīzi jāpielāgo šis modelis tekstam vai teikumiem.

Kad tas ir izdarīts, mēs varam izmantot šo modeli, lai apgūtu iegulšanu. Pēc tam mēs varam aprēķināt līdzību starp tekstiem, izmantojot funkciju “kosinusa līdzība”. Mēs ieviešam šo piemēru tiešsaistes Python platformā, kas ir “google colab”. Lai precīzi noregulētu modeli, mēs ielādējam (BERT) modeli. Šim nolūkam mēs vispirms instalējam un importējam “SentenceTransformers”. Pēc tam mēs ielādējam modeli no tā iepriekš apmācītā modeļa, izmantojot SentenceTransformer. Lai ielādētu modeli, mēs saucam SentenceTransformer un BERT modeli kā “$SentenceTransformer('bert-base-nli-mean-tokens')”, kur ievades parametrā norādām iepriekš apmācītā BERT modeļa nosaukumu un tad mēs to saglabājam mainīgajā “BERTmodel”.

Pēc šī modeļa ielādes mēs norādām četrus tekstus, katrs sastāv no viena teikuma, lai pārbaudītu to līdzību. Piemēram, kad esam precizējuši tekstus, tagad izveidojam šī teksta iegulšanas. Iegulumus katram tekstam veidojam individuāli, izmantojot funkciju “kodēt”.

Kodēšanas funkciju ar BERT modeļa prefiksu mēs saucam par “BERTmodel.encoding ()”. Pēc tam šīs funkcijas parametriem mēs nododam “tekstu” un “maksimālo garumu”, kas ir vienāds ar “512”. Mēs šo kodēšanas funkciju saucam par katru tekstu, un tā pārvērš tekstu iegulumos.

Tagad mēs izmantojam katru no šiem iegulumiem un aizstājam tos kosinusa līdzības funkcijā, lai atrastu līdzību starp šiem iegulumiem. Kosinusa līdzības funkcija tiek plaši izmantota visos dabiskās valodas apstrādes uzdevumos tekstu/dokumentu klasifikācijai un klasterizēšanai.

Lai atrastu šo iegulumu līdzību, mēs izmantojam kosinusa līdzības funkciju un aizstājam iegultā teikuma vērtību ar indeksu “0” un otru iegulto teikumu ar indeksu “1 līdz 3”, lai pārbaudītu teikuma 0 līdzību ar pārējiem 3. teikumi. Kosinusa līdzības funkcijas izvades vērtības svārstās no -1 līdz 1. Šeit 1 norāda, ka abas iegulšanas ir līdzīgas, un -1 norāda, ka abas iegulšanas nav līdzīgas. Mēs pievienojām koda fragmentu, kas parāda kosinusa līdzības funkcijas ieviešanas metodi, izmantojot četru teikumu iegulšanu, ko tikko izveidojām piemēros, izmantojot iepriekš apmācītu BERT modeli.

!pip instalēt teikumu_transformatorus
teikumi = [
'Pirms četriem gadiem pudele bija pat pilna un .',
'Suns sapņoja par aizbēgšanu no būra un uz ielas, kur viņa redzēja savu draugu.'
'Persona daudzus mēnešus spēlējās ar medūzām.'
'Viņš savā drēbju skapī atrada gliemezi.']
no mondat_transformatori importējiet SentenceTransformer
Bertmodel = SentenceTransformer ('bert-base-nli-mean-tokens')
teikuma_iegulšana = Bertmodel.encode(teikumi)
teikuma_iegulšanas.forma
no sklearn.metrics.pairwise importēt kosinusu_līdzīgumu
# aprēķināt = kosinusa līdzības noteikšana teikumam 0:
kosinusa_līdzība(
[sentence_embeddings[0]],
teikumu_iegulšanas[1:])

Izvadā esošais masīvs parāda “teikuma 0” līdzības vērtību ar pārējiem trim teikumiem, piem. 1, 2 un 3.

Secinājums

Mēs apspriedām metodes, kā atrast līdzību starp iegulšanu. Mēs parādījām divus dažādus piemērus, lai meklētu tuvāko iegulšanas atbilstību, izmantojot “word2vec” gensim modeli un iepriekš sagatavoto BERT modeli.