Insluitingen zoeken naar de beste overeenkomst

Insluitingen Zoeken Naar De Beste Overeenkomst



Zoeken in de inbeddingen naar de meest overeenkomende overeenkomst betekent het vinden van die inbeddingen die het dichtst bij elkaar staan. De inbeddingen zijn de vectoriële weergave van een zin die aan de taalmodellen wordt ingevoerd als input voor specifieke taken. We bespreken hier de methode en de technieken die kunnen worden gebruikt om de gelijkaardige inbeddingen te vinden.

Syntaxis

Er bestaan ​​veel technieken en hulpmiddelen die we kunnen gebruiken om het verschil tussen de inbeddingen te vinden op basis van hun verschil in termen van gelijkenis. Hieronder volgen de methoden en de bijbehorende syntaxis die we zullen gebruiken om de inbeddingsovereenkomsten te vinden.







Uit die genoemde punten kennen we de modellen die we kunnen gebruiken om de gelijkenisovereenkomst voor de inbeddingen te vinden. Nu zullen we elk van deze modellen leren gebruiken en de individuele voorbeelden op elk van deze modellen implementeren.



Voorbeeld 1: de beste match insluiten via woordinsluitingen

Voordat we de woordinsluitingen voor de gelijkenisovereenkomst implementeren, moeten we meer weten over de woordinsluitingen. Woordinbedding is het proces waarbij de tekst wordt omgezet in de vorm van een vector (numerieke waarden), aangezien onze systemen alleen de invoer in de vorm van numerieke cijfers begrijpen.



Er zijn verschillende andere manieren om deze taak uit te voeren, waaronder one-hot codering, maar we zullen het woord inbedding gebruiken. Op deze manier wordt de inbedding door de modellen van het neurale netwerk (bijvoorbeeld word2vec of Glove) uit de teksten geleerd. De woorden worden toegewezen aan de hoger-dimensionale vectorruimte. Al die woorden die qua context op elkaar lijken, worden toegewezen aan de dichtstbijzijnde punten. Op deze manier kunnen de inbeddingen de relaties en de analogieën tussen de verschillende woorden in de tekst vastleggen.





Laten we een woordinbedding voor een zin maken. Om het woord inbedding te creëren, biedt Python het 'gensim' -framework. Gensim is een bibliotheekpakket dat het gebruik van het 'word2vec' -model mogelijk maakt dat helpt bij het maken van de inbeddingen. Om de inbedding te implementeren, zorgen we er eerst voor dat we gensim installeren op onze Python-compilers. Vervolgens importeren we vanuit de gensim het 'word2vec' -model.

Het 'word2vec'-model is een soort algoritme dat slechts twee invoerargumenten gebruikt, waarbij het eerste argument de tekst of de zin vereist waarvan we de inbedding willen maken, en het tweede argument het minimum aantal specificeert dat het minimum aantal keren specificeert dat een woord is vereist om te verschijnen of gezien te worden.



Na het importeren van het “word2vec” model specificeren we de “tekst”. Nadat we de tekst hebben gespecificeerd, trainen we dit 'word2vec' -model door het met de tekst door te geven en het minimum aantal gelijk te stellen aan '1'. Nu noemen we dit getrainde 'word2vec.wv.most_similar('consume')'-model en voeren we het woord in waarvan we de dichtstbijzijnde inbedding willen controleren, in dit voorbeeld is dit 'consume'. Om de inbeddingsresultaten te controleren, printen we de uitvoer van het model:

van als een natie modellen importeren Word2Vec
tekst = [ [ 'konijn' , 'heeft' , 'tanden' ] ]
model = Word2Vec ( tekst , min_count = 1 )
vergelijkbare_inbedding = model. wv . meest_soortgelijk ( 'konijn' )
afdrukken ( vergelijkbare_inbedding )

In dit voorbeeld maken we de woordinbedding voor een tekst met behulp van het 'word2vec'-model om hun gelijkenis te controleren in termen van de context en dat is te zien in het eerder bijgevoegde fragment dat de uitvoer is van de code die controleert op vergelijkbare inbeddingen van het woord 'consumeren'.

Voorbeeld 2: Inbedden van de dichtstbijzijnde zoekopdracht via het BERT-model

Er bestaan ​​vooraf getrainde natuurlijke taalverwerkingsmodellen die kunnen worden gebruikt om de overeenkomst tussen de teksten te berekenen, aangezien ze de contextuele relatie tussen de woorden kunnen begrijpen en leren. BERT is een van de vooraf getrainde taalmodellen van de 'sentence_transformers' en kan de overeenkomsten tussen de teksten leren. Om de overeenkomst tussen de teksten te vinden, moeten we dit model eerst afstemmen op de tekst of zinnen.

Zodra dit is gebeurd, kunnen we dit model gebruiken om de inbeddingen te leren. Vervolgens kunnen we de overeenkomst tussen de teksten berekenen met behulp van de functie 'cosinusovereenkomst'. We implementeren dit voorbeeld op het online Python-platform dat 'google colab' is. Om het model te verfijnen laden we het (BERT) model. Daarvoor installeren en importeren we eerst de “SentenceTransformers”. Vervolgens laden we het model vanuit het vooraf getrainde model met behulp van de SentenceTransformer. Om het model te laden, noemen we de SentenceTransformer en het BERT-model samen '$SentenceTransformer('bert-base-nli-mean-tokens')', waarbij we de naam specificeren van het vooraf getrainde model van BERT in de invoerparameter en dan slaan we dit op in de variabele “BERTmodel”.

Nadat we klaar zijn met het laden van dit model, specificeren we nu de vier teksten, die elk uit één zin bestaan, om de overeenkomst ertussen te controleren. Nadat we bijvoorbeeld de teksten hebben gespecificeerd, maken we nu de inbeddingen voor deze tekst. We maken individueel de inbedding voor elk van de tekst door de functie 'coderen' te gebruiken.

We noemen de coderingsfunctie met het voorvoegsel van het BERT-model als 'BERTmodel.encoding ()'. Vervolgens geven we de 'tekst' en de 'maximale lengte' die we hebben vastgesteld op '512' door aan de parameters van deze functie. We noemen deze coderingsfunctie op elk van de teksten en het zet de tekst om in inbeddingen.

Nu gebruiken we elk van deze inbeddingen en vervangen ze door de cosinus-gelijkenisfunctie om de overeenkomst tussen deze inbeddingen te vinden. De cosinusgelijkenisfunctie wordt veel gebruikt in alle natuurlijke taalverwerkingstaken voor classificaties en clustering van de teksten/documenten.

Om de overeenkomst tussen deze inbeddingen te vinden, gebruiken we de cosinus-overeenkomstfunctie en vervangen we de waarde van de ingesloten zin door index '0' en de andere ingesloten zin door '1 tot 3' index om de overeenkomst van zin 0 met de andere 3 te controleren zinnen. De uitvoerwaarden van de cosinusgelijkenisfunctie variëren van -1 tot 1. Hier geeft 1 aan dat de twee inbeddingen vergelijkbaar zijn en de -1 zegt dat de twee inbeddingen niet vergelijkbaar zijn. We hebben het codefragment bijgevoegd dat de methode laat zien om de cosinus-gelijkenisfunctie te implementeren met behulp van de vier zinsinbeddingen die we zojuist in de voorbeelden hebben gemaakt met behulp van het vooraf getrainde BERT-model.

!pip install zin_transformers
zinnen = [
'vier jaar daarvoor was de fles zelfs vol en .',
'De hond droomde van het ontsnappen uit de kooi en in de straat waar ze haar vriend zag gaan.',
'De persoon speelde maandenlang met kwallen .',
'Hij vond een slak in zijn kleerkast.']
van zin_transformatoren importeren SentenceTransformer
Bertmodel = ZinTransformer('bert-base-nli-mean-tokens')
zin_inbeddingen = Bertmodel.encode(zinnen)
zin_inbeddingen.vorm
van sklearn.metrics.pairwise import cosinus_similarity
# bereken=ing cosinus gelijkenis voor de zin 0:
cosinus_gelijkenis(
[zin_inbedding[0]],
zin_inbeddingen[1:])

De array in de uitvoer geeft de overeenkomstwaarde weer van de 'zin 0' met de andere drie zinnen, b.v. 1, 2 en 3.

Conclusie

We bespraken de methoden om de overeenkomst tussen de inbeddingen te vinden. We lieten twee verschillende voorbeelden zien om te zoeken naar de beste match van de inbedding met behulp van het 'word2vec' gensim-model en het vooraf getrainde BERT-model.