Быстрое совпадение строк Java (чтобы связать текст с категорией) - PullRequest
4 голосов
/ 29 августа 2011

Предположим, у меня есть сообщение, похожее на

  • НАЗВАНИЕ: «WEB: SEO в 2011 году»
  • ОПИСАНИЕ: «Конференция о SEO в сети 2011 года»

также у меня есть список категорий с ключевыми словами:

  • "IT" (кошка) -> "Веб-дизайн", "SEO", "разработка", "веб-разработка" (ключевые слова)

У меня есть несколько категорий (это, искусство, медицина, литература, машины и т. Д.)

Мне нужно использовать java для автоматического обновления моих сообщений с этими категориями и ключевыми словами (своего рода тегами) для улучшения поиска в будущем.

Пример выше: должен соответствовать "seo" и "web", поэтому поле main_category должно быть заполнено "IT", а subfield_category должно быть заполнено "seo" или "web" (или, возможно, оба, что не тоже неплохо)

Моя проблема в том, что единственное решение, которое я могу придумать, это waaaaay в bruteforcing (проверить все слова, когда у вас есть совпадение, у вас есть категория и список ключевых слов, связанных с ним), и это замедлит мои выступления. ..

есть ли способ сделать поиск лучше? также я могу изменить свою категорию-> структуру ключевых слов, чтобы сделать что-то лучше (я все еще не знаю, как ...)

спасибо всем заранее!

РЕДАКТИРОВАТЬ: точность не так важна, как было сказано в комментарии. мне не нужна 100% точность при пометке, так как я знаю, что могу иметь честную степень правильности, основываясь на исходном сопоставлении строк.

Кроме того, логика, о которой я думал, такова: посмотрите на заголовок / описание поста, найдите все подходящие ключевые слова, отметьте категорию, найдите больше ключевых слов в этой категории, сохраните от 3 до 5 соответствующих ключевых слов

1 Ответ

1 голос
/ 29 августа 2011

Возможно, вы захотите попробовать другой подход, используя Машинное обучение .

Описание алгоритма:
Сначала создайте обучающие образцы [документы, которые вы точно знаете, как они должны быть помечены, вы можете пометить образец вручную и передать его в качестве входных данных для алгоритма]. Затем создайте Bag Of Words для этих образцов, используя k Bag of Words [вам нужно будет решить, какой k является оптимальным, путем сравнения качества, я объясню позже].

Каждое слово - это «особенность», и затем для каждого нового документа вы попытаетесь найти, какой документ из учебного примера является ближайшим соседом [т.е. имеет больше общего «слов» в вашей сумке слов], новый документ будет помечен как ближайший сосед.

Как оценить качество?
Вы можете проверить качество, взяв 10% документов из учебной выборки, и учиться только на оставшихся 90%. После завершения обучения вы можете оценить, насколько точен ваш алгоритм, проверив точность оставшихся 10%. Обратите внимание, что вам, вероятно, придется сделать это несколько раз, чтобы найти оптимальный k [размер мешка слов], как указано выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...