Оптимизация токенизатора и сегментатора в SDK

Jan 13, 2013 20:28

Я начал собирать статистику употребления русских глаголов по большому неразмеченному текстовому корпусу (~30 Гб в utf8). Чтобы переварить такой объем за разумное время, пришлось пооптимизировать токенизатор. Вот что получилось.

1. Внутренняя реализация алгоритма токенизации в функции sol_TokenizeW (http://solarix.ru/api/ru/sol_Tokenize.shtml) существенно ускорена, фактически почти в 20 раз. Для тестового случая с токенизацией 13 Мб текстовых файлов в utf-8 вместо 700 секунд теперь получается 38 секунд.

Набор русских utf-8 текстов размером в 485 Мб обработан сегментатором (http://www.solarix.ru/api/ru/sol_FetchSentence.shtml) и sol_Tokenize за 1400 секунд. Скорость 1.2 Гб/час уже достаточна хороша, хотя и немного уступает по скорости токенизатору в поисковке. Но, конечно, токенизатор грамматического словаря проверяет множество особых случаев, включая слова с внутренними символами-разделителями (т.д.) и слова с пробелами (Нижний Новгород).

2. В сегментаторе предложений поправлен баг, из-за которого иногда извлекались слишком большие предложения, несмотря на внутренний лимит на максимальный размер фраз.

токенизатор, api, SDK грамматического словаря

Previous post Next post
Up