Skip to content

Commit

Permalink
add images and readme 7
Browse files Browse the repository at this point in the history
  • Loading branch information
dikar8 committed Oct 26, 2022
1 parent c332419 commit ec02a88
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 3 deletions.
28 changes: 25 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ python3 name_sim.py --check <первое название> <второе наз
В скрипте импортируйте класс.

```python
from org_name_similarity import NameSim
from org_name_similarity.name_sim import NameSim

namesim = NameSim()

Expand Down Expand Up @@ -91,7 +91,13 @@ print(namesim.check_similarity('Saudi Aramco', 'Rosneft'))

![alt text](https://github.com/dpkaranov/org_name_similarity/blob/master/images/attention.png?raw=true)

В качестве альтернативы рассматривались tensorflow, torch, spacy, но в итоге выбор был сделан в пользу sentence-transformes. Преимущества ST: высокопроизводительные модели, автоматизированная настройка гиперпараметров и простота использования. Помимо этого для поиска имен в тексте (задача NER) используется Spacy.
В качестве альтернативы рассматривались tensorflow, torch, spacy, но в итоге выбор был сделан в пользу sentence-transformes. Преимущества ST: высокопроизводительные модели, автоматизированная настройка гиперпараметров и простота использования.
Технология достаточно проста: списки строк (сначала первые названия компаний, потом вторые) отправляются в модель, которая возвращает эмбеддинги. Полученные эмбеддинги сравниваются с помощью измерения косинусного расстояния между ними. Если косинусное расстояние близко к 1, то названия организаций схожи, если к 0, то нет.
Помимо этого для поиска имен в тексте (задача NER) используется Spacy.

## Набор данных (датасет)

Для обучения модели использовался датасет, состоящий из 497814 строк и 4 столбцов - номер пары (pair_id), первое название (name_1), второе название (name_2) и отметка схожести (is_duplicated). При этом 99 % пары были отмечены как непохожие (0), и менее 1 % - похожие (1). К тому же, названия компаний включали в себя разный шум (символы, лишние буквы из других алфавитов и т.д.). Соответственно, необходимо было тщательно подготовить датасет перед обучением.

## Этапы решения задачи

Expand All @@ -105,7 +111,23 @@ print(namesim.check_similarity('Saudi Aramco', 'Rosneft'))

## Эксперименты

### Эксперимент №1
### Эксперимент №1 Обучение модели на мультиязычном датасете

_Гипотеза: перевод всех схожих пар названий организаций и такого же количества непохожих пар на разные языки позволит увеличить датасет в несколько раз, а классы будут представлены в нем в одинаковых пропорциях._

![alt text](https://github.com/dpkaranov/org_name_similarity/blob/master/images/diagram1.png?raw=true)

Перевод названий организаций осуществлен с помощью библиотеки transliterate. В качестве модели выбрана MiniLM-L12-v2.

Реализация этого эксперимента представлена в папке notebooks, в файлах 1 - 4.

В 4 ноутбуке проведено сравнение обученной модели с необученными.

_Таблица №1 Сравнительный анализ обученной модели MiniLM-L12-v2 с её необученным аналогом и остальными трансформерами._

![alt text](https://github.com/dpkaranov/org_name_similarity/blob/master/images/table1.png?raw=true)

Вывод: несмотря на перевод слов на разные языки модель и мультиязычную базу самой модели, модель переобучилась. Это не столько очевидно по результатам тестов на тестовом наборе данных, выделенном из общего датасета, сколько по "ручной проверке". Так, например, модель не смогла отличить Газпром от Роснефти, а с этим примером может справиться даже расстояния Левенштейна. Тем не менее, этот эксперимент позволил отбросить одну из гипотез, а сравнение разных моделей показало, что гораздо больше смысла в обучении

### Эксперимент №2

Expand Down
Binary file added images/diagram1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/table1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit ec02a88

Please sign in to comment.