Я пишу инструмент лингвистического анализа на основе браузера (Javascript и jQuery), который извлекает текст из HTML, а затем извлекает языковые единицы, такие как предложения, слова и так далее.
Чтобы импортировать текст, PHP-бэкэнд отслеживает заданный URL-адрес и очищает полученный HTML-код. Затем этот HTML-код вставляется в div#container
в интерфейсе, примерно так:
Я столкнулся с некоторыми трудностями, когда исходная HTML-страница очень длинная. Чтение и вставка такой страницы в интерфейс DOM
, похоже, не вызывает проблем (хотя это занимает некоторое время).
Но запуск алгоритма частотности слов для содержимого паука очень медленный, если страница длинная. Скажем, если страница приближается к 100 тысячам слов, это в значительной степени приведет к полной остановке.
Итак, я вижу несколько вариантов:
- Измените паук PHP, чтобы он обрезал исходный документ или поделил его на несколько документов
- Измените алгоритм частоты слова, чтобы он был менее точным, и сэмплируйте распределение слова, а не записывайте его полностью
- Попробуйте этот новый инструмент для Web Worker, чтобы узнать, смогу ли я распределить вычисления по нескольким фоновым процессам.
Мне кажется, что (3) - это просто слово, на которое рассчитаны веб-работники. Я представляю, как разбить содержимое паука на куски, а затем назначить по одному веб-работнику для каждого чанка. Профиль частоты слов каждого фрагмента может быть возвращен из Web Worker, а затем суммирован и представлен на диаграмме.
Прежде чем я попытался это сделать, я надеялся, что смогу проверить здравомыслие у других людей, которые, возможно, раньше работали с веб-работниками. Во-первых, мне интересно, будет ли проблема эффективного разделения содержимого div#container
- я предполагаю, что это потребует некоторого обхода дерева DOM под div#container
.