Автоматическое создание тегов с помощью ElasticSearch (или Thinking Sphinx/pg-search)

Я немного подумал об этом (и просмотрел каждое сообщение типа «автогенерация тегов для контента» на StackOverflow).

У меня есть статья (body:string) с несколькими тегами (объединенными через теги).

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

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

Если бы я сделал это сам, есть ли какие-нибудь примеры для эффективного выполнения этого?


person Doug    schedule 11.07.2012    source источник


Ответы (2)


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

curl -XGET 'http://127.0.0.1:9200/myindex/article/_search?pretty=1'  -d '
{
   "query" : {
      "more_like_this_field" : {
         "body" : {
            "min_doc_freq" : 1,
            "like_text" : "BODY OF THE NEW ARTICLE",
            "min_term_freq" : 1,
            "percent_terms_to_match" : 0.2
         }
      }
   },
   "facets" : {
      "tags" : {
         "terms" : {
            "field" : "tags"
         }
      }
   }
}
'

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

person DrTech    schedule 16.07.2012
comment
Статья, описывающая это решение: elastic.co/blog/< /а> - person GromNaN; 24.08.2018

Лучший способ сделать это — использовать API Percolator elasticsearch. Проверьте этот ответ:

Elasticsearch - использовать индекс тегов, чтобы обнаружить все теги в заданной строке

person Redtopia    schedule 01.07.2016