2016-09-21 7 views
1

У меня есть 3 миллиона рефератов, и я хотел бы извлечь из них 4 грамма. Я хочу построить языковую модель, поэтому мне нужно найти частоты этих 4-граммов.N-граммы - не в памяти

Моя проблема заключается в том, что я не могу извлечь все эти 4 грамма в память. Как я могу реализовать систему, которая может оценить все частоты для этих 4-граммов?

+0

Вы посмотрели на hdf5 или pytables, насколько я знаю, они хорошо соединяются с numpy и предположительно быстро. – Magellan88

+0

Благодарим вас за отзыв. Я проверю их –

+0

Большинство 4-граммов появляются только один раз, поэтому, возможно, вы можете получить необходимую информацию, найдя те, которые появляются более одного раза. Ключевое замечание состоит в том, что 4-грамм появляется более одного раза, если он расширяет триграмму, которая появляется более одного раза, и такая триграмма появляется более одного раза, если она расширяет биграмм, который появляется более одного раза. Вы можете делать все поэтапно. Сначала найдите такие биграммы (возможно выполнимые), а затем найдите триграммы, а затем, наконец, 4 грамма. Мой ответ на этот вопрос показывает эту идею для триграмм: http://stackoverflow.com/a/36935796/4996248 –

ответ

0

Похоже, вам нужно хранить промежуточные частоты на диске, а не в памяти. К счастью, большинство баз данных могут это сделать, и python может разговаривать с большинством баз данных.

+0

У меня уже есть это в голове, но я не знаю, насколько эффективен. Я думал создать для каждого 100000 статей файл, отсортированный по первому слову. Затем я реализовал сортировку слияния, чтобы создать уникальный файл, и все эти 4граммы отсортированы. –