Структура данных необходима, чтобы найти вероятность совместного вхождения двух слов в предложении? - PullRequest
0 голосов
/ 28 сентября 2018

У меня большой набор данных почти с 1 ТБ.

Данные являются просто текстовыми.

Я должен найти совместное вхождение двух слов вместе во всем корпусе.

Мне нужно посмотреть весь корпус и найти вероятность возникновения.

Другими словами, мне нужно найти все предложения, в которых эти два слова встречаются вместе.

Но мне нужноповторите это несколько раз.

Как бы вы подошли к этой проблеме, чтобы она занимала меньше времени?

Я знаю только некоторые базовые Python.

Ясно строю цикл for для каждогофайл и каждое предложение и подсчет одного за другим займет вечность.

Я ценю любую помощь.

1 Ответ

0 голосов
/ 29 сентября 2018

Общая идея такова:

  1. Сканирование текста, выявление предложений и слов, содержащихся в них.Напишите текстовый файл, содержащий эту информацию.Например, если первое предложение в вашем первом документе «Это была темная и бурная ночь».Это будет в вашем файле: 1, 1, It 1, 1, was 1, 1, a 1, 1, dark 1, 1, and 1, 1, stormy

Когда вы закончите, у вас будет огромный текстовый файл, содержащий одну строку для каждого слова в каждом документе.

Затем вы сортируете этот файл по слову, документу и номеру предложения.

Теперь вы можете просмотреть этот файл и создать индекс по слову.По сути, это показывает, в каких предложениях содержится каждое слово. Например, записи для «темных» и «бурных» могут выглядеть примерно так:

dark: 1:1, 3:8, 22:99, ...
stormy: 1:1, 12:6, 22:99, ...

Теперь, если кто-то попросит вас сказать им, в каких предложениях "происходит «темное» и «бурное», вы можете получить списки для двух слов, пересечь множество и вернуть результат (в данном случае 1: 1, 22:99).

Это неОсобенно сложно это сделать для небольшого объема (несколько мегабайт) данных.Это было бы сложным упражнением для тех, кто имеет немного опыта программирования.Выполнимо, но сложно.

Однако при работе с терабайтами вы должны быть очень креативны со своими структурами данных или иметь возможность бросить много оборудования на проблему.Это определенно не проблема, которую я бы ожидал от начинающего программиста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...