#python #pattern-matching #cluster-analysis #fuzzy-comparison #record-linkage
#python #сопоставление с образцом #кластерный анализ #нечеткое сравнение #привязка к записи
Вопрос:
У меня есть таблица примерно из 100 000 строк. Эта таблица находится в файле Excel, и вот ее снимок:
------------ ----------- ----- ----- -----------------------------------------------------------
| First Name | Last Name | Sex | Age | Address |
------------ ----------- ----- ----- -----------------------------------------------------------
| Parm | Jit | m | 23 | palm court scoeity, RD. golf course, delhi |
| Param | jit | m | 24 | palm cort society, road golf course, delhi |
| Pram | Jet | m | 28 | palm court socityt Road golf course, Delhi |
| Prm | jit | m | 31 | society palm court, Rod. Golf coure, delhi |
| Param | Jeet | m | 33 | palm court scoety, delhi |
| varun | nagraj | m | 36 | Thame Square, auckland-AZ-2014 |
| Janet | kumar | m | 40 | Thame Square, auckland-AZ-2014 |
| varun | kumar | m | 42 | Thame Square, auckland-AZ-2014 |
| Jatin | Kakkar | m | 45 | Noida, near shipra mall, sectr 57, Noida, U.P. |
| Jatin | Kakar | m | 56 | Noida, near shipra mall, sectr 57, Noida, Uttar pardesh |
| Jatin | Kakkr | m | 57 | Noida, Flat no- 23, near shipra mall, sectr 57, Noida, UP |
| Janet | Yellen | F | 23 | 11 CORONADO POINTELAGUNA NIGUELCA92677 |
| Janet | Yellen | F | 24 | 11 CORONADO POINTELAGUNA NIGUELCA |
| Janet | Yellen | F | 25 | 11 CORONADO POINTELAGUNA 92677-0000 |
| Jant | Yelen | F | 26 | 11 CORONADO POINTELAGUNA NIGUELCA0000 |
| Janet | Yellen | F | 26 | 11 CORONADO POINTELAGUNA NIGUELC |
| Abigail | Johnson | F | 24 | PRESERVE DRIVE NE, 11BELMONTMI4930 |
| andrew | symonds | m | 24 | Fame Stret, brisbane, hn 181 |
| Angel | Ahrendts | F | 26 | WYNGATE MANOR CTALEXANDRIAVA |
| Safra | Catz | F | 26 | 31155 ZOAR SCHOOL ROADLOCUST GROVEVA22508-0000 |
| Park | Geun-hye | F | 30 | CATHOLIC CHURCH RDBEACH LAKEPA |
| Sheryl | Sandberg | F | 24 | 80164 SULTANA AVEINDIOCA92201-0000 |
| Sheryl | Sandberg | F | 24 | SULTANA AVEINDIOC |
| Safra | Catz | F | 26 | OAR SCHOOL ROADLOCUST GROVEV |
| Park | Geun-hye | F | 30 | 308 CATHOLIC CHURCH RDBEACH LAKEPA18405-0000 |
| andrw | simnds | m | 24 | Fame Stret, 181 HOUSE NO |
| prashat | vats | m | 35 | Al thei, al nzar, dubai12 |
| prasant | vats | m | 37 | Al, al nazar, dubai23 |
| andrw | simonds | m | 34 | Fame brisbane, 181 H.N. |
| vats | prashant | m | 30 | Al thei, al nazar, dubai |
| vast | prshant | m | 30 | al nazar, dubai, street adamifullah |
| prashant | vats | m | 37 | Al thei, al nazar, dubai |
| ram | vats | m | 29 | Al thei, nazar, dubai |
| Kiss | hanes | m | 45 | Sydney, andrew str. 223 |
------------ ----------- ----- ----- -----------------------------------------------------------
Я пытаюсь выяснить сходство строк в этих данных, например, строка 1 очень похожа на строку 2. Я пробовал алгоритмы кластеризации (а именно BIRCH
, DBSCAN
, K means
Spectral
и Markov Clustering
), но всем им требуется около получаса для выполнения 100 000 строк, прежде чем они выдадут ошибку памяти в python
(поскольку я беру все данные на своей python
платформе, объем оперативной памяти на моей машине составляет 16gb
).
Должен ли я использовать какой-нибудь лучший алгоритм для решения этой проблемы или мне нужно перенести мои данные на такую платформу, как spark
, а затем поработать над этим? Если верно первое, можете ли вы помочь мне с каким-нибудь алгоритмом, который не отнимает слишком много времени? Пожалуйста, не рассматривайте это как теоретический вопрос, поскольку я с нетерпением жду подхода к решению практической проблемы с большими данными.
Комментарии:
1. Excel и всего 100000 записей — это не большие данные. Это мегабайты, а не эксабайты…
Ответ №1:
Не имеет смысла использовать эти алгоритмы для этого набора данных…
Прежде всего, всегда начинайте с образца, чтобы узнать, какой подход работает, прежде чем рассматривать масштабирование. Не тратьте время на масштабирование нерабочего подхода…
Что касается реальной проблемы, вместо кластеризации я бы предложил сосредоточиться на очистке данных. OpenRefine может быть хорошим началом.
Комментарии:
1. Какой подход вы бы предложили для очистки данных?