Допустим, у меня есть набор из миллиона тегов и текст, который необходимо проанализировать для этих и, возможно, новых тегов. Количество тегов здесь является лишь примером, иллюстрирующим мою проблему мышления - слишком много для циклического прохождения, слишком много для хранения в памяти и т.д.
Почему-то я не могу придумать решение с низкой занимаемой площадью (и которое остается быстрым). Я знаю, что нужно ожидать компромиссов, но я предполагаю, что я пропускаю некоторые концепции.
Это особенно интересно для интеллектуальных тегов ("Michael Jackson" = "artist" и т. Д.), Поскольку применяемый тег может не являться частью самого текста.
Помимо создания черного списка слов, кэширования популярных тегов и огромных SQL-запросов, какой будет наиболее эффективный способ решения этой проблемы?
(достаточно забавно, я должен сам отметить этот вопрос :-))
Поскольку я ограничен в пространстве комментариев, позвольте мне добавить несколько мыслей здесь:
- Я согласен, что использование целочисленных хешей повышает скорость. Хорошая идея.
- Хэши не решат итерационных проблем (циклически просматривая каждый хеш / тег при проверке слова или комбинации слов по списку тегов)
- Чтобы уточнить проблему: предположим, что текст типа "привет мир". Этот текст имеет 3 потенциальных тега ("привет", "мир" и "привет мир"). Список тегов может содержать только «hello», но «world» или «hello world» могут быть добавлены после анализа, что означает, что эти теги не применяются к тексту.
Проблемы:
- Предполагается, что текст размером с книгу, итерация всех комбинаций (например, «Nine Inch Nails», но давайте предположим, что предел комбинации составляет 4 слова) для сравнения их с тегами в базе данных занимает много времени, даже при условии использования целочисленных хэшей .
- Список тегов потенциально длинный, поэтому итерация по сохраненным тегам также, вероятно, медленная.
- Обновление тегов будет означать дополнительный полнотекстовый поиск по текстам - в зависимости от количества текстов и их длины, и это может быть убийцей БД и вообще неэффективно?
- Как можно автоматически найти «релевантные» новые теги? (снова «Nine Inch Nails» вспоминается в статье о музыке - но «выпустил новую песню» не будет хорошим тэгом). Это, вероятно, вопрос сам по себе.