Как да търсите вграждания за най-близко съвпадение

Kak Da T Rsite Vgrazdania Za Naj Blizko S Vpadenie



Търсенето на вграждания за най-близко съвпадение означава намиране на тези вграждания, които имат най-близкото значение едно на друго. Вгражданията са векторно представяне на изречение, което се подава към езиковите модели като входни данни за конкретни задачи. Тук ще обсъдим метода и техниките, които могат да се използват за намиране на подобни вграждания.

Синтаксис

Съществуват много техники и инструменти, които можем да използваме, за да открием разликата между вгражданията въз основа на тяхната разлика по отношение на сходството. По-долу са методите и техният включен синтаксис, които ще използваме за намиране на приликите на вграждане.







От тези споменати точки знаем моделите, които можем да използваме, за да намерим съвпадението на сходството за вгражданията. Сега ще се научим да използваме всеки от тези модели и да приложим отделните примери на всеки от тези модели.



Пример 1: Вграждане на най-близкото съвпадение чрез вграждане на Word

Преди да внедрим вгражданията на думи за съвпадението по подобие, трябва да знаем за вгражданията на думи. Вграждането на думи е процес на преобразуване на текста във формата на вектор (числови стойности), тъй като нашите системи разбират входа само под формата на цифрови цифри.



Има няколко други начина за извършване на тази задача, които включват еднократно кодиране, но ние ще използваме думата вграждане. По този начин вграждането се научава от моделите на невронната мрежа (напр. word2vec или Glove) от текстовете. Думите се картографират към по-високомерното векторно пространство. Всички онези думи, които са сходни по контекст, се картографират до най-близките точки. По този начин вгражданията могат да уловят връзките и аналогиите между различните думи в текста.





Нека създадем вграждане на дума за изречение. За да създаде думата за вграждане, Python предоставя рамката „gensim“. Gensim е библиотечен пакет, който позволява използването на модела „word2vec“, който помага при създаването на вграждания. За да реализираме вграждането, първо се уверяваме, че инсталираме gensim на нашите Python компилатори. След това от gensim импортираме модела „word2vec“.

Моделът „word2vec“ е вид алгоритъм, който използва само два входни аргумента, където първият аргумент изисква текста или изречението, чието вграждане искаме да създадем, а вторият аргумент определя минималния брой, който определя минималния брой пъти, които думата е необходима, за да се появи или да бъде видяна.



След като импортираме модела „word2vec“, ние указваме „текста“. След като уточним текста, след това обучаваме този модел „word2vec“, като го предаваме с текста и задаваме минималния брой равен на „1“. Сега наричаме този обучен „word2vec.wv.most_similar(‘consume’)” модел и подаваме думата, чиито най-близки вграждания искаме да проверим в този пример, е „consume”. За да проверим резултатите от вграждането, отпечатваме изхода от модела:

от като нация модели импортиране Word2Vec
текст = [ [ 'заек' , 'има' , 'зъби' ] ]
модел = Word2Vec ( текст , min_count = 1 )
подобно_вграждане = модел. wv . най-сходен ( 'заек' )
печат ( подобно_вграждане )

В този пример създаваме вграждане на дума за текст, като използваме модела „word2vec“, за да проверим тяхната прилика по отношение на контекста и това може да се види в прикачения по-рано фрагмент, който е резултат от кода, който проверява за подобни вграждания на думата „консумирам“.

Пример 2: Вграждане на най-близкото търсене чрез модела BERT

Съществуват предварително обучени модели за обработка на естествен език, които могат да се използват за изчисляване на сходството между текстовете, тъй като те могат да разберат и научат контекстуалната връзка между думите. BERT е един от предварително обучените езикови модели от “sentence_transformers” и може да научи приликите между текстовете. За да открием приликата между текстовете, първо трябва да настроим фино този модел към текста или изреченията.

След като това стане, можем да използваме този модел, за да научим вгражданията. След това можем да изчислим сходството между текстовете с помощта на функцията „косинусово сходство“. Ние прилагаме този пример на онлайн платформата Python, която е „google colab“. За фина настройка на модела зареждаме (BERT) модела. За тази цел първо инсталираме и импортираме „SentenceTransformers“. След това зареждаме модела от неговия предварително обучен модел с помощта на SentenceTransformer. За да заредим модела, наричаме SentenceTransformer и BERT модела като „$SentenceTransformer('bert-base-nli-mean-tokens')“, където посочваме името на предварително обучения модел на BERT във входния параметър и след това запазваме това в променливата „BERTmodel“.

След като приключим със зареждането на този модел, сега определяме четирите текста, всеки от които се състои от едно изречение, за да проверим приликата между тях. След като уточним текстовете например, сега създаваме вгражданията за този текст. Ние индивидуално създаваме вгражданията за всеки текст, като използваме функцията „кодиране“.

Ние наричаме функцията за кодиране с префикса на модела BERT като „BERTmodel.encoding ()“. След това предаваме „текста“ и „максималната дължина“, които фиксирахме да бъдат равни на „512“, към параметрите на тази функция. Ние наричаме тази функция за кодиране на всеки от текстовете и тя преобразува текста във вграждания.

Сега използваме всяко от тези вграждания и ги заместваме във функцията за косинусово сходство, за да намерим сходството между тези вграждания. Функцията за косинусово подобие се използва широко във всички задачи за обработка на естествен език за класифициране и групиране на текстове/документи.

За да намерим сходството между тези вграждания, използваме функцията за косинусово сходство и заместваме стойността на вграденото изречение с индекс „0“, а другото вградено изречение с индекс „1 до 3“, за да проверим сходството на изречение 0 с другите 3 изречения. Изходните стойности на функцията за косинусово сходство варират от -1 до 1. Тук 1 казва, че двете вграждания са подобни, а -1 казва, че двете вграждания не са подобни. Прикачихме кодовия фрагмент, който показва метода за прилагане на функцията за косинусово подобие, използвайки четирите вграждания на изречения, които току-що създадохме в примерите, използвайки предварително обучения модел BERT.

!pip инсталира изречения_трансформатори
изречения = [
'преди четири години бутилката дори беше пълна и .',
„Кучето сънува бягството от клетката и на улицата, където видя приятеля си да върви.“,
„Човекът си играеше с медуза в продължение на много  месеци.“,
„Той намери охлюв в гардероба си.“]
от sentence_transformers импортирайте SentenceTransformer
Bertmodel = SentenceTransformer('bert-base-nli-mean-tokens')
изречения_вграждания = Bertmodel.encode(изречения)
изречения_вграждания.форма
от sklearn.metrics.pairwise import cosine_similarity
# изчисляване на косинус подобие за изречението 0:
косинус_сходство(
[sentence_embeddings[0]],
вграждане_изречение[1:])

Масивът в изхода показва стойността на сходството на „изречението 0“ с другите три изречения, напр. 1, 2 и 3.

Заключение

Обсъдихме методите за намиране на приликата между вгражданията. Показахме два различни примера за търсене на най-близкото съвпадение на вграждането, използвайки генсим модела „word2vec“ и предварително обучения BERT модел.