Jak hledat vložení pro nejbližší shodu

Jak Hledat Vlozeni Pro Nejblizsi Shodu



Hledání vložení pro nejbližší shodu znamená najít ta vložení, která mají k sobě nejbližší význam. Vložení jsou vektorovou reprezentací věty, která je přiváděna do jazykových modelů jako vstupy pro konkrétní úkoly. Budeme zde diskutovat o metodě a technikách, které lze použít k nalezení podobných vložení.

Syntax

Existuje mnoho technik a nástrojů, které můžeme použít k nalezení rozdílu mezi vloženími na základě jejich rozdílu z hlediska podobnosti. Následují metody a jejich zahrnutá syntaxe, kterou použijeme pro nalezení podobnosti vkládání.







Z těchto zmíněných bodů známe modely, které můžeme použít k nalezení podobnosti pro vložení. Nyní se naučíme používat každý z těchto modelů a implementovat jednotlivé příklady na každém z těchto modelů.



Příklad 1: Vkládání nejbližší shody prostřednictvím vkládání slov

Než implementujeme slovo vložení pro podobnostní shodu, musíme vědět o slovu vložení. Vkládání slov je proces převodu textu do formy vektoru (číselné hodnoty), protože naše systémy rozumí vstupu pouze ve formě číselných číslic.



Existuje několik dalších způsobů, jak provést tento úkol, které zahrnují jednorázové kódování, ale my použijeme slovo vkládání. Tímto způsobem se vkládání učí modely neuronové sítě (např. word2vec nebo Glove) z textů. Slova jsou mapována do vektorového prostoru vyšších dimenzí. Všechna slova, která jsou v kontextu podobná, jsou mapována k nejbližším bodům. Tímto způsobem mohou vložení zachytit vztahy a analogie mezi různými slovy v textu.





Vytvořme vložení slova pro větu. Pro vytvoření vkládání slov poskytuje Python rámec „gensim“. Gensim je balíček knihoven, který umožňuje použití modelu „word2vec“, který pomáhá při vytváření vložení. Abychom implementovali vložení, nejprve se ujistíme, že na naše kompilátory Pythonu nainstalujeme gensim. Poté z gensimu importujeme model „word2vec“.

Model „word2vec“ je druh algoritmu, který využívá pouze dva vstupní argumenty, kde první argument vyžaduje text nebo větu, jejíž vložení chceme vytvořit, a druhý argument určuje minimální počet, který určuje minimální počet opakování slovo se musí objevit nebo být viděno.



Po importu modelu „word2vec“ specifikujeme „text“. Jakmile specifikujeme text, trénujeme tento model „word2vec“ předáním s textem a nastavením minimálního počtu na „1“. Nyní tento trénovaný model nazveme „word2vec.wv.most_similar(‘consume’)“ a vložíme slovo, jehož nejbližší vložení chceme zkontrolovat, které je v tomto příkladu „consume“. Pro kontrolu výsledků vkládání vytiskneme výstup z modelu:

z jako národ modely import Word2Vec
text = [ [ 'králičí' , 'má' , 'zuby' ] ]
Modelka = Word2Vec ( text , min_count = 1 )
podobné_vložení = Modelka. wv . nejpodobnější ( 'králičí' )
tisk ( podobné_vložení )

V tomto příkladu vytvoříme vložení slova pro text pomocí modelu „word2vec“, abychom zkontrolovali jejich podobnost z hlediska kontextu, což lze vidět v dříve připojeném úryvku, který je výstupem kódu, který kontroluje podobná vložení. slova „spotřebovat“.

Příklad 2: Vložení nejbližšího vyhledávání prostřednictvím modelu BERT

Existují předem trénované modely zpracování přirozeného jazyka, které lze použít k výpočtu podobnosti mezi texty, protože dokážou porozumět a naučit se kontextový vztah mezi slovy. BERT je jedním z předtrénovaných jazykových modelů z „sentence_transformers“ a dokáže se naučit podobnosti mezi texty. Abychom našli podobnost mezi texty, musíme tento model nejprve doladit k textu nebo větám.

Jakmile to uděláme, můžeme tento model použít k naučení vložení. Potom můžeme pomocí funkce „kosinová podobnost“ vypočítat podobnost mezi texty. Tento příklad implementujeme na online platformě Python, která je „google colab“. Pro doladění modelu načteme model (BERT). Za tímto účelem nejprve nainstalujeme a importujeme „SentenceTransformers“. Poté načteme model z jeho předem trénovaného modelu pomocí SentenceTransformer. Pro načtení modelu nazýváme SentenceTransformer a model BERT společně jako „$SentenceTransformer('bert-base-nli-mean-tokens')“, kde ve vstupním parametru specifikujeme název předem trénovaného modelu BERT a pak to uložíme do proměnné „BERTmodel“.

Poté, co dokončíme načítání tohoto modelu, nyní specifikujeme čtyři texty, z nichž každý se skládá z jedné věty, abychom ověřili podobnost mezi nimi. Jakmile například specifikujeme texty, nyní vytvoříme vložení pro tento text. Vložení pro každý text vytváříme individuálně pomocí funkce „kódovat“.

Funkci kódování s předponou modelu BERT nazýváme „BERTmodel.encoding ()“. Parametrům této funkce pak předáme „text“ a „maximální délku“, kterou jsme zafixovali na „512“. Tuto funkci kódování nazýváme u každého z textů a převádí text na vložení.

Nyní použijeme každé z těchto vložení a dosadíme je do funkce kosinové podobnosti, abychom našli podobnost mezi těmito vloženími. Funkce kosinové podobnosti se široce používá ve všech úlohách zpracování přirozeného jazyka pro klasifikaci a shlukování textů/dokumentů.

Abychom našli podobnost mezi těmito vloženími, použijeme funkci kosinusové podobnosti a nahradíme hodnotu vložené věty indexem „0“ a druhé vložené věty indexem „1 až 3“, abychom zkontrolovali podobnost věty 0 s ostatními 3. věty. Výstupní hodnoty funkce kosinusové podobnosti se pohybují od -1 do 1. Zde 1 říká, že dvě vložení jsou podobná a -1 říká, že tato dvě vložení nejsou podobná. Připojili jsme úryvek kódu, který ukazuje metodu implementace funkce kosinové podobnosti pomocí čtyř vložení vět, které jsme právě vytvořili v příkladech pomocí předem připraveného modelu BERT.

!pip nainstalujte větu_transformers
věty = [
'čtyři roky předtím byla láhev dokonce plná a .',
'Pesovi se zdálo o útěku z klece a na ulici, kam viděla jít svého přítele.',
'Ten člověk si po mnoho měsíců hrál s medúzami.',
'Našel ve svém šatníku šneka.']
z věty_transformers import SentenceTransformer
Bertmodel = SentenceTransformer('bert-base-nli-mean-tokens')
vložení_vět = Bertmodel.encode(věty)
věta_vložení.tvar
ze sklearn.metrics.pairwise import cosine_similarity
# vypočítat=ing kosinus podobnost pro větu 0:
kosinusová_podobnost(
[sentence_embeddings[0]],
vložení_vět[1:])

Pole ve výstupu zobrazuje hodnotu podobnosti „věty 0“ s dalšími třemi větami, např. 1, 2 a 3.

Závěr

Diskutovali jsme o metodách, jak najít podobnost mezi vloženími. Ukázali jsme dva různé příklady hledání nejbližší shody vložení pomocí gensim modelu „word2vec“ a předem trénovaného modelu BERT.