Итак, вот моя проблема. У меня очень большой файл csv, который имеет 3 столбца. Первый столбец - это уникальные идентификаторы. Второй столбец - это строка, которая является английским предложением. Третий столбец представляет собой цепочку словных тегов, которые описывают предложение во втором столбце (обычно 3 тега, максимум 5). Вот пример.Поиск совпадений слов
id | sentence | tags
1 | "people walk dogs in the park" | "pet park health"
2 | "I am allergic to dogs" | "allergies health"
Что я хочу сделать, это найти все совпадения слов тега со словами в предложениях. Таким образом, желаемый результат для приведенного выше примера будет выглядеть примерно так.
("walk","pet"),1
("health","dogs"),2
("allergies","dogs"),1
etc...
где первая запись является слово пара (первый из предложения, второй тег слово), а затем количество раз, они сосуществуют.
Мне интересно, что лучший способ сделать это. Я думал, что, возможно, я мог бы придумать словарь python, где ключ - это тег-слово, а значение - это набор идентификаторов, где это слово тега появляется. Я мог бы сделать то же самое со всеми словами, которые появляются во всех предложениях (после удаления стоп-слов). Тогда я мог бы подсчитать количество идентификаторов в пересечении обоих множеств для каждой комбинации двух слов, которые дали бы мне количество раз, когда они будут происходить.
Однако, похоже, что это займет очень много времени (огромный файл csv!). У меня также может закончиться память. Может ли кто-нибудь подумать о лучшем способе сделать это. Может быть, импортировать файл в базу данных и запустить какой-то запрос?
Спасибо большое! Я попробую. Только один вопрос. Когда вы говорите о снижении карты, вы говорите об использовании нескольких кластеров? Потому что у меня нет доступа к этому. – user1893354
@ user1893354 Я ни в коем случае не гуру больших кластеров, возможно, я не должен использовать слова map-reduce. Я имею в виду более ручную обработку. Если у вас недостаточно памяти для загрузки всех данных из файла, вы можете загружать их по строкам, сохранять кортежи в файл, а затем запускать другую программу для подсчета кортежей. Я думаю, что было бы полезно загрузить эти расщепленные данные в SQL и подсчитать частоты там (вы можете создавать индексы для ускорения процесса). –
Вот что я подумал. Я просто хотел уточнить. Благодаря! – user1893354