2014-10-24 1 views
0

У меня есть список частых терминов, полученных из разных поисковых запросов определенного пользователя.
Например:
спорта, бадминтон, футбол
футбол, спорт
исследования, AI, алгоритм
исследования, адаптивный, персонализированный поиск
исследования А.И., нейро сетьПостроение иерархического профиля пользователя

Цель здесь заключается в создании иерархический профиль пользователя на основе этих частых терминов с гипотезой о том, что термины, которые часто появляются в таких запросах, представляют темы, которые интересны пользователю. В иерархии общие термины с более высокой частотой размещаются на более высоких уровнях, а конкретные термины с более низкой частотой размещаются на более низких уровнях иерархического профиля пользователя.

Ожидаемый результат будет дерево профиля пользователя смотрит как-то так:

  • Профиль пользователя
    • исследование
      • А.И.
      • алгоритм
      • персонализированный поиск
      • ..
    • спорт
      • футбол
      • бадминтона

Итак, я в настоящее время застрял, и я даже не знаю, как начать или какие библиотеки использовать. (Я работаю с java в этом проекте).
Буду очень признателен, если кто-нибудь может мне помочь.
Спасибо заранее.

ответ

0

Возможно, вы ищете структуру данных вложенных карт. Что-то в следующих строках предоставит вам возможность хранить иерархические данные и легко получить к нему доступ:

//creating the data structure 
Map<String, Map<String, String>> map = new HashMap<String, Map<String, String>>(); 

//adding data 
map.put("key", new HashMap<String, String>()); //adding category 
map.get("key").put("nested_key", "value"); //adding TO the category 

//reading entries 
map.get("key")).get("nested_key"); 
+0

Спасибо за ответ. Возможно, я не очень хорошо объяснил, но количество запросов варьируется и термины тоже. Также я хотел бы, чтобы структура имела в себе некоторую логику или семантику. Например, спортивная часть, которая содержит футбол и бадминтон, которые являются конкретными видами спорта. – paskun

+0

вам понадобится какая-то оболочка api, но базовая структура данных останется такой, как описано. Класс, содержащий экземпляр таких карт + вспомогательные функции, например. addCAtegory, addToCategory, getCategory, getFromCategory, processRequest и т. д. «ключ», «nested_key» и «value» являются заполнителями для ваших собственных данных. –

+0

Okay :) Во время моих поисков я видел термин «ontolgy», но я не понимал, как его использовать. У вас есть информация об этом? Еще раз спасибо – paskun