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:

Description

LUMO wrapper

Simple Learner

LinkedTV user profiles

Linked Profiler REST API

Additional content profiling services & REST API

Downloads

Contacts

 

 

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:

  1. LUMO wrapper, which unifies the semantic description of captured user preferences under a common vocabulary.
  2. 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:

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:

  1. 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.
  2. 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

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}


{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}

{
"[{"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

curl -i -X POST --data-binary @{uid}.txt http://multimedia.iti/api/upload_profile?uid={uid}

 

 

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

 {
   "[{"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}

{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

curl -i -X POST --data-binary @{cid}.txt http://multimedia.iti/api/upload_profile?cid={cid}

 

 

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.