Re[2]: Частота слов в тексте
От: andy1618 Россия  
Дата: 06.10.09 06:33
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Дык, 2, 3, 4 — это разновидности 1-го.

L>Поскольку слов немного, то каждому слову пожно сопоставить 2-х байтовое число. Поучаем массив 2-х байтовых чисел A.
L>1. Чтобы найти частоты слов, достаточно найти частоты соответствующих 2-х байтовых чисел.
L>2. Чтобы найти частоты пар, достаточно сформировать другой массив 4-х байтовых чисел: B[i] = A[i] + A[i+1] >> 16. И найти частоты этих чисел.
L>3. Для трех слов можно поступить так же, только в формуле будет учавствовать еще и B[i] = A[i] + A[i+1] >> 16 + A[i+2] >> 32
L>4. Разновидность 2-го: B[i] = A[i] + A[i+2] >> 16

Причём, если для пункта 1 можно устроить подсчёт частот через обычный массив, то для остальных пунктов целесообразно будет использовать какой-нибудь список/дерево с хешированием. Например, в C# очень хорошо для этого подойдёт
Dictionary<long, int>
, где первый параметр (ключ) — это число, представляющее пару/тройку слов, а второй параметр (значение) — это счётчик употреблений данной пары/тройки.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.