Linked Profiler
LinkedTV's personalisation and contextualisation services involve capturing, learning and creating semantic user profiles implicitly based on the user's online behaviour with networked media. To this end, CERTH-ITI has implented services for managing and learning user interests and wrapping intra- and extra-CERTH-developed tools under a semantic profile construction workflow.
These tools are bundled under a modelling component API that handles storage and update of the profile and provision to all other parts of the LinkedTV personalisation workflow, namely Linked Profiler.
Jump to:
Additional content profiling services & REST API
Description
Linked Profiler is responsible for receiving input by captured or explicitly declared user interests, for incorporating and handling cooperation among all preference capturing and learning tools within the LinkedTV personalisation and contextualisation task and that ultimately produces a fuzzy semantic user profile that can be received as input by the LinkedTV filtering tools.
Two subcomponents developed by CERTH-ITI are incorporated in the Linked Profiler:
- LUMO wrapper, which unifies the semantic description of captured user preferences under a common vocabulary.
- Simple Learner, which is responsible for learning a user profile over time and content consumption.
The Linked Profiler workflow
Association rules mining is an extra-CERTH-ITI component wrapped into the workflow via Linked Profiler.
User information capturing and Filtering are processes outside the Linked Profiler API and are not part of the description of the services presented here, but are only illustrated as indicated input and output.
However, Filtering can be achieved via the CERTH-ITI developed tool LiFR, among other solutions.
The Linked Profiler is in particular:
- responsible for the communication among all preference reception, transormation and learning components,
- responsible for the production of the final semantic user profile.
LUMO wrapper
Within LinkedTV, multimedia content is segmented into spatio-temporal fragments, accompanied by metadata stemming from several analysis services within the LinkedTV pipeline. Among this metadata, semantic annotation of media fragments, describing 'what this fragment is about' may be retrieved. The content analysis tools provide this description into a plurality of LOD vocabularies, in the interest of efficient, complete and standardized disambiguation and linking of media fragments.
However, in the interest of more efficient personalisation services, the hetereogenity of content annotation imposed by this variety of descriptive vocabularies, the lack of user-pertinent semantics in vocabularies of a more general purpose, the overflow of information unrelated to a user-centric perspective and the imperfection in the structure and semantics of often user-contributed vocabularies have lead to the need of expressing user preferences in a homogeneous, user-centric reference knowledge base. This KB, namely LUMO, aims to cover all information pertinent to user in the networked media domain in a uniform, lightweight and formal ontological vocabulary.
To this end, information about user preferences, captured implicitly through his interaction with the content on the LinkedTV platform and based on the content's semantic description is tranformed from this LOD-based annotation into LUMO via the LUMO wrapper component. Through this transformation, uniformly expressed preferences are passed onto the profile learning modules, thus also minimizing the concept space and maintaining the profiles more cohesive and lightweight.
Simple Learner
Simple Learner is a baseline profile learning component that adds new preferences (i.e. concepts) to the user profile, weighted based on the interest shown by the user in a given content consumption session. Given this interest, it is able to manage and communicate both captured interests and disinterests.
The learning stage consists of updating the interest weights of existing preferences according to their frequency of appearance in the user's transaction history and the age of the preference (time decay factor).
Simple Learner can also provide an intermediate output of JSON-formatted preferences, before these are coupled with mined association rules (extra-CERTH-ITI component in the Linked Profiler workflow) and serialised in the ontological user profile. This intermediate (called "plain") profile provides an entry per user preference along with its attributes in the user's transaction history of the form:
"timestamp":{last timestamp that the concept was consumed},"concept":{LUMO-based concept name},"aggregated weight":{sum of interest across all user sessions for this concept},"frequency":{times that concept was accessed},"positive":{TRUE if interest/FALSE if disinterest}
Semantic user profile construction
The user profile produced is expressed in a variant of the KRSS ontological formalization for two reasons:
- The expressivity of the user profile is much richer than a list of weighted concepts and as such can only be expressed in an ontological formalization - rather than a more simple web standard such as JSON.
- KRSS is significantly more lighweight than other known ontological formalizations/standards (OWL, RDF) and as such accomodates storage and management of ontological profiles much more efficiently.
To see details of the supported syntax, please refer to the LiFR supported syntax.
Example
The example illustrates the contextual profile of user "Ralph". The persona specifications are:
Ralph really likes the band Silbermond and their music, so when content around Silbermong shows on the TV he frequently browses through related content in the RBB broadcast archives or searches the web to find out more about the band. However, he does not care for lengthy interviews.
Other main interests are: crafts, weather, local (he is from Bradenburg) sport clubs when he is in town, athletes in the Olympics
Other main disinterests are: politics
Current contextual facts are: His location is Bradenburg by a confidence >= 0.85
KRSS Ralph profile:
(IMPLIES (SOME has_interest (OR profsubconcept1 inst_silbermond profsubconcept2 crafting weather)) ralph)
(IMPLIES (AND (SOME inRule sports_club) (SOME inRule inst_bradenburg)) profsubconcept1)
(IMPLIES inst_bradenburg user_location)
(IMPLIES inst_silbermond band)
(IMPLIES (AND (SOME inRule olympics) (SOME inRule athlete)) profsubconcept2)
(IMPLIES (SOME has_interest (OR politics interview)) ralph_dis)
(DISJOINT ralph ralph_dis)
(WEIGHT profsubconcept1 0.76)
(WEIGHT inst_bradenburg 0.85)
(WEIGHT inst_silbermond 0.82)
(WEIGHT profsubconcept2 0.51)
(WEIGHT crafting 0.68)
(WEIGHT weather 0.54)
(INSTANCE bradenburg inst_bradenburg >= 0.85
)
(INSTANCE silbermond inst_silbermond
< -1.0
)
(RELATED rule bradenburg inRule)
(RELATED content bradenburg has_interest)
(RELATED content sibermond has_interest)
Note: Silbermond and Bradenburg are individiduals (most specific entities) and as such they don't belong at the schema level of the reference ontology. To add specific entities as preferences in the user profile, we manufacture a concept "inst_{individual name}", weighteed by the degree of preference, and we extend the TBox with this knowledge by appending it as a subclass of the most specific type that the individual would instantiate in our reference TBox (ontology).
So what would have been (INSTANCE silbermond band) now becomes (IMPLIES inst_silbermond band), (WEIGHT inst_silbermond 0.82), (INSTANCE silbermond inst_silbermond < -1.0).
In the employed LiFR reasoner, a concept assertion of an individual belonging to a concept is essentially non-existent in the KB unless it has a membership degree >=0. A valid concept assertion in our KB will be derived either from (a) contextual facts (the LinkedTV platform has determined that the current user context is this entity), or (b) content annotation facts (a content item candidate for recommendation is about this entity).
Linked Profiler REST API
Linked Profiler and its subcomponents are supported by a REST API which gives access to services for retrieving and uploading user information on the profiling server. The API is currently hosted on a CERTH-ITI server (base URI: http://multimedia.iti.gr/api/).
GET all profiles available
(For internal use only) Retrieves a list of all user ids available on the server.
GET /api/profiles
- Description: GET /api/profiles
- HTTP method: GET
- Content-Type: application/json
- URI: http://multimedia.iti.gr/api/profiles
- Example of response:
{ "[{"ralph"}]", "[{"ralph_context"}]", "[{"silbermond_all_content"}]" }
GET a KRSS user profile
Receives a given user profile from the server in the KRSS format. This is the final export of Linked Profiler, incorporating a learned model through both Simple Learner and EasyMiner.
GET /api/KRSS_profile?uid={uid}
- Description: GET /api/KRSS_profile?uid={uid}
- HTTP method: GET
- Content-Type: application/json
- URI: http://multimedia.iti.gr/api/KRSS_profile?uid={uid}
- Example of response:
{Profile:
(IMPLIES (SOME has_interest (OR profsubconcept1 inst_silbermond profsubconcept2 crafting weather)) ralph)
(IMPLIES (AND (SOME inRule sports_club) (SOME inRule inst_bradenburg)) profsubconcept1)
(IMPLIES inst_bradenburg user_location)
(IMPLIES inst_silbermond band)
(IMPLIES (AND (SOME inRule olympics) (SOME inRule athlete)) profsubconcept2)
(IMPLIES (SOME has_interest (OR politics interview)) ralph_dis)
(DISJOINT ralph ralph_dis)
(WEIGHT profsubconcept1 0.76)
(WEIGHT inst_bradenburg 0.85)
(WEIGHT inst_silbermond 0.82)
(WEIGHT profsubconcept2 0.51)
(WEIGHT crafting 0.68)
(WEIGHT weather 0.54)
(INSTANCE bradenburg inst_bradenburg >= 0.85)
(INSTANCE silbermond inst_silbermond
< -1.0
)
(RELATED rule bradenburg inRule)
(RELATED content bradenburg has_interest)
(RELATED content sibermond has_interest)
}
GET a plain user profile
Receives a given user profile from the server in its plain pre-ontological form (i.e. from Simple Learner)
GET /api/plain_profile?uid={uid}
- Description: GET /api/plain_profile?uid={uid}
- HTTP method: GET
- Content-Type: application/json
- URI: http://multimedia.iti.gr/api/plain_profile?uid={uid}
- Example of response:
{
"[{"timestamp":"1.22943E+12","concept":"silbermond:band","aggregated weight":"22.8682","frequency":"40","positive":"TRUE"}]", "[{"timestamp":"1.22943E+12","concept":"bradenburg:user_location","aggregated weight":"14.2667","frequency":"28","positive":"TRUE"}]", "[{"timestamp":"1.22943E+12","concept":"profsubconcept1","aggregated weight":"12.2092","frequency":"26","positive":"TRUE"}]", "[{"timestamp":"1.22943E+12","concept":"profsubconcept2","aggregated weight":"11.3937","frequency":"26","positive":"TRUE"}]", "[{"timestamp":"1.22943E+12","concept":"crafting","aggregated weight":"10.9337","frequency":"32","positive":"TRUE"}]", "[{"timestamp":"1.22943E+12","concept":"weather","aggregated weight":"10.9213","frequency":"19","positive":"TRUE"}]", "[{"timestamp":"1.22942E+12","concept":"politics","aggregated weight":"10","frequency":"10","positive":"FALSE"}]", "[{"timestamp":"1.22943E+12","concept":"interview","aggregated weight":"9.2095","frequency":"12","positive":"FALSE"}]", "[{"timestamp":"1.22942E+12","concept":"profsubconcept3","aggregated weight":"8.2045","frequency":"10","positive":"FALSE"}]"}
Note:
Concepts of the form “profsubconcept#”: are pointers to Association Rules. These pointers will help retrieve learned association rules to be transverted onto the final ontological user profile.
POST a profile on the server
POST /api/upload_profile
- Description: POST /api/upload_profile
- HTTP method: POST
- Content-Type: text/plain
- URI: http://multimedia.iti.gr/api/upload_profile?uid={uid}
- Requisite:
- a .txt file containing a profile in the KRSS format (e.g. profile example)
- The KRSS profile includes an implication axiom where a rule (the interests) imply the profile-concept (e.g. in profile example, the concept "ralph". The name of the uploaded file must be the same as this profile-concept.
- CURL command:
curl -i -X POST --data-binary @{uid}.txt http://multimedia.iti/api/upload_profile?uid={uid}
- Result:
- Uploads the selected profile on the server
- Note! Make sure you notice the argument you give. If you change the argument to "cid" instead if "uid", this call will upload a content annotation profile instead of a user profile (see below).
Additional content profiling services & REST API
In addition to providing access to the creation, overview and management of semantic user profiles, the modules incorporated within Linked Profiler can also be used to transform semantic content descriptions from LOD to LUMO, expressed again in the KRSS format, in the interest of having a homogenized set of recommendation items, suitable for fast and efficient content filtering via the CERTH-ITI LiFR reasoner.
Example
(IMPLIES (SOME offers (AND inst_silbermond video interview)) silbermond_juergen)
(IMPLIES inst_silbermond band)
(INSTANCE silbermond inst_silbermond >= 0.9)
(INSTANCE vi_1 video >= 0.99)
(INSTANCE in_1 interview >= 0.69)
(RELATED content silbermond offers)
(RELATED content vi_1 offers)
(RELATED content in_1 offers)
(RELATED silbermond content hastopic)
Where silbermond_juergen
is a content identifier pseudo-concept, pointing to the particular content item (media fragment id), used to retrieve the fragment if it will be recommended.
Content annotation REST API
REST services available for producing, managing and accessing content annotation in the KRSS format
Translation REST API - TBD
GET all annotated content available
(For internal use only) Retrieves a list of all annotated content ids available on the server for marchmaking.
GET /api/KRSS_content_annotation_files
- Description: GET /api/KRSS_content_annotation_files
- HTTP method: GET
- Content-Type: application/json
- URI: http://multimedia.iti.gr/api/KRSS_content_annotation_files
- Example of response:
{
"[{"stilbruch_20120322_silber_m"}]",
"[{"www_silbermond_de"}]",
"[{"www_silbermond_de2"}]",
"[{"radioberlin_silbermond"}]",
"[{"radioberlin_silbermond_eine"}]",
"[{"silbermond"}]",
"[{"silbermondclubconzert"}]",
"[{"silbermond_juergen"}]",
"[{"silbermond_seed_content_chapter"}]"
}
GET a KRSS content profile
Receives a given content profile from the server in the KRSS format. This is the input for LiFR's content matching service and will be the set of related content returned by WP2.
GET /api/KRSS_content_annotation?cid={cid}
- Description: GET /api/KRSS_content_annotation?cid={cid}
- HTTP method: GET
- Content-Type: application/json
- URI: http://multimedia.iti.gr/api/KRSS_content_annotation?cid={cid}
- Example of response:
{KRSS_content_annotation:
(IMPLIES (SOME offers (AND inst_silbermond video interview)) silbermond_juergen)
(IMPLIES inst_silbermond band)
(INSTANCE silbermond inst_silbermond >= 0.9)
(INSTANCE vi_1 video >= 0.99)
(INSTANCE in_1 interview >= 0.69)
(RELATED content silbermond offers)
(RELATED content vi_1 offers)
(RELATED content in_1 offers)
(RELATED silbermond content hastopic)
}
POST a KRSS annotation profile on the server
POST /api/upload_content_annotation
- Description: POST /api/upload_content_annotation
- HTTP method: POST
- Content-Type: text/plain
- URI: http://multimedia.iti.gr/api/upload_profile?cid={cid}
- Requisite:
- a .txt file containing a the annotation of the content item in the KRSS format (e.g. content profile example)
- The KRSS profile includes an implication axiom where a rule (a conjunction of the concepts annotating the content) imply the profile-concept. The name of the uploaded file must be the same as this profile-concept (e.g. in content profile example, the concept "silbermond_juergen").
- CURL command:
curl -i -X POST --data-binary @{cid}.txt http://multimedia.iti/api/upload_profile?cid={cid}
- Result:
- Uploads the selected profile on the server
- Note! Make sure you notice the argument you give. If you change the argument to "uid" instead if "cid", this call will upload a user profile instead of a content annotation profile (see above).
Downloads
Linked Profiler is an open source software, distributed under the GNU LGPL license. You can download the source code and complementary information from the links below.
The Linked Profiler source code (tar.gz). Includes a copy of the license.
The Linked Profiler documentation files (tar.gz)
Useful materials (tar.gz). Includes an example user profile, a copy of a version of the LUMO ontology and accompanying LUMO mappings (in a KRSS-variant syntax) and a copy of a version of the LiFR reasoner library.
Disclaimer: Currently the development of Linked Profiler has ceased and no support in bug tracking, versioning (to comply with newer versions of dependent components such as the GAIN user tracking and preference learning web service), or further requests can be provided.
Contacts
For Linked Profiler related issues, please contact dorothea [at] iti [dot] gr.
For LinkedTV related issues, please contact bmezaris [at] iti [dot] gr.