Matching Module Novas Instâncias para a Infra-estrutura de Matchmaking

48
Matching Module Novas Instâncias para a Infra-estrutura de Matchmaking

description

Matching Module Novas Instâncias para a Infra-estrutura de Matchmaking. Agenda. Overview Criando um Domain Knowledge Usando o Matching Module A Aplicação Cliente Novas Instâncias Documentos para Consulta. Overview. - PowerPoint PPT Presentation

Transcript of Matching Module Novas Instâncias para a Infra-estrutura de Matchmaking

Page 1: Matching Module Novas Instâncias para a Infra-estrutura de Matchmaking

Matching Module

Novas Instâncias para a Infra-estrutura de Matchmaking

Page 2: Matching Module Novas Instâncias para a Infra-estrutura de Matchmaking

Agenda

Overview

Criando um Domain Knowledge

Usando o Matching Module

A Aplicação Cliente

Novas Instâncias

Documentos para Consulta

Page 3: Matching Module Novas Instâncias para a Infra-estrutura de Matchmaking

Overview

• Biblioteca + Framework em Java para realização de matching entre indivíduos

• Dados dois grupos de indivíduos

séries de soluções para o problema de matching proposto

score para cada solução apresentada

Page 4: Matching Module Novas Instâncias para a Infra-estrutura de Matchmaking

Overview

• Requisitos

Flexibilidade Extensibilidade Compatibilidade com padrões

RDF, RDFS, DAML+OIL, OWL Independência de domínio Simplicidade e Facilidade de Uso

Page 5: Matching Module Novas Instâncias para a Infra-estrutura de Matchmaking

Overview

• Requisitos

Configurabilidade

Que algoritmo de matching utilizar?

Que informação de domínio utilizar?

Que ontologia ou modelo semântico foi utilizado para descrever os recursos que serão processados?

Que recursos que estão sendo processados?

Que tipo de matching será aplicado (uma a um, um a múltiplos, múltiplos a um, múltiplos a múltiplos)?

Que operações deverão ser aplicadas aos resultados? (número máximo de resultados, filtragem acima ou abaixo de um fator de corte).

Page 6: Matching Module Novas Instâncias para a Infra-estrutura de Matchmaking

Criando um Domain Knowledge

• Como criar um novo domínio de conhecimento para o Matching Module?

Exemplo:

Competências de um Funcionário

Page 7: Matching Module Novas Instâncias para a Infra-estrutura de Matchmaking

Criando um Domain Knowledge

-name : string

Person -name : string-price : double

Course

-name : string

Competency

*

-develops

*

-preRequisite *

*

*

-requires

*

*

-hasCoursed

*

Page 8: Matching Module Novas Instâncias para a Infra-estrutura de Matchmaking

Criando um Domain Knowledge

<?xml version="1.0" encoding="ISO-8859-1" ?><!DOCTYPE rdf:RDF (View Source for full doctype...)><rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xml:base="http://www.lac.inf.puc-rio.br/~ferrao/onts/aulanet.rdfs#"><rdfs:Class rdf:ID="Competency" /><rdf:Property rdf:ID="name">

<rdfs:domain rdf:resource="#Competency" /> <rdfs:range

rdf:resource="http://www.w3.org/2001/XMLSchema#string" />   </rdf:Property></rdf:RDF>

Ontologia para Competências

Page 9: Matching Module Novas Instâncias para a Infra-estrutura de Matchmaking

Criando um Domain Knowledge

Ontologia para Cursos

<?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE rdf:RDF (View Source for full doctype...)> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xml:base="http://www.lac.inf.puc-rio.br/~ferrao/onts/course.rdfs#">  <rdfs:Class rdf:ID="Course" /> <rdf:Property rdf:ID="name">  <rdfs:domain rdf:resource="#Course" />

  <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string" />   </rdf:Property> <rdf:Property rdf:ID="price">  <rdfs:domain rdf:resource="#Course" />

  <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string" />   </rdf:Property> <rdf:Property rdf:ID="develops">  <rdfs:domain rdf:resource="#Course" />

  <rdfs:range rdf:resource="http://www.lac.inf.puc-rio.br/~ferrao/onts/aulanet.rdfs#Competency" />   </rdf:Property> <rdf:Property rdf:ID="preRequisite">  <rdfs:domain rdf:resource="#Course" />

  <rdfs:range rdf:resource="#Course" />   </rdf:Property>  </rdf:RDF>

Page 10: Matching Module Novas Instâncias para a Infra-estrutura de Matchmaking

Criando um Domain Knowledge

Ontologia para Pessoas

<?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE rdf:RDF (View Source for full doctype...)> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xml:base="http://www.lac.inf.puc-rio.br/~ferrao/onts/person.rdfs#">  <rdfs:Class rdf:ID="Person" /> <rdf:Property rdf:ID="name">

<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string" />   </rdf:Property> <rdf:Property rdf:ID="requires">

  <rdfs:domain rdf:resource="#Person" />   <rdfs:range

rdf:resource="http://www.lac.inf.puc-rio.br/~ferrao/onts/aulanet.rdfs#Competency" />   </rdf:Property> <rdf:Property rdf:ID="hasCoursed">

  <rdfs:domain rdf:resource="#Person" />   <rdfs:range

rdf:resource="http://www.lac.inf.puc-rio.br/~ferrao/onts/courses.rdfs#Course" />   </rdf:Property>  </rdf:RDF>

Page 11: Matching Module Novas Instâncias para a Infra-estrutura de Matchmaking

Criando um Domain Knowledge

• Como ensinar ao MM como avaliar os possíveis conjuntos de resultados?

Definindo um domain knowledge

Definindo um evaluator

Definindo um state changer

Page 12: Matching Module Novas Instâncias para a Infra-estrutura de Matchmaking

Criando um Domain Knowledge

•Como ensinar ao MM como avaliar os possíveis conjuntos de resultados?

Definindo um domain knowledge

public class PersonCourseDomainKnowledge extends DomainKnowledge{

public PersonCourseDomainKnowledge(){

super( new PersonCourseEvaluator(), new PersonCourseStateChanger() );

}}

Page 13: Matching Module Novas Instâncias para a Infra-estrutura de Matchmaking

Criando um Domain Knowledge

• Como ensinar ao MM como avaliar os possíveis conjuntos de resultados?

Definindo um evaluator

Matching é um problema sensível a contexto

Como saber se uma seqüência (OO, Java) é melhor que uma (OO, .Net) para o funcionário Daniel?

Page 14: Matching Module Novas Instâncias para a Infra-estrutura de Matchmaking

Criando um Domain Knowledge

• Como ensinar ao MM como avaliar os possíveis conjuntos de resultados?

Definindo um evaluator

Um evaluator é responsável por calcular o score de uma solução particular para um matching em um dado domínio.

Isso é feito através da definição de funções genéricas que podem, em tempo de execução, calcular o score para instâncias de solução.

Os métodos eval do evaluator avaliam quão boa uma solução é para um problema

Page 15: Matching Module Novas Instâncias para a Infra-estrutura de Matchmaking

Criando um Domain Knowledge

• Como ensinar ao MM como avaliar os possíveis conjuntos de resultados?

Definindo um evaluator

Novos evaluators devem ser criados através da herança de um dos tipos de evaluators existentes, com a implementação de novos comportamentos para os métodos:

public double[] eval1to1( Individual i1, Individual i2 ) public double[] eval1toN( Individual i, IndividualsCollection list ) public double[] evalNto1( IndividualsCollection list, Individual i ) public double[] evalNtoN( IndividualsCollection l1,

IndividualsCollection l2 )

(essas implementações são ou não necessárias de acordo com a natureza do problema)

Page 16: Matching Module Novas Instâncias para a Infra-estrutura de Matchmaking

Criando um Domain Knowledge

• Exemplo

Uma pessoa deve fazer um curso se este desenvolve alguma competência que aquela pessoa demanda.

Quanto maior o número de competências que o curso desenvolve, mais adequado ele é para aquela pessoa.

Nenhuma pessoa deve fazer o mesmo curso duas vezes.

Cursos podem ter pré-requisitos.

Page 17: Matching Module Novas Instâncias para a Infra-estrutura de Matchmaking

Criando um Domain Knowledge

public double[] eval1to1(Individual person, Individual course) {

float count = 0.0f;double price = 0.0;try{ price = course.getPropertyAsDouble( "price" );

if( hasCoursed( person, course ) ){

return new double[] {-100.0f, -price};}if( !checkForPreRequisites( person, course ) ){

return new double[] {-1.0f, -price};}

Iterator requires = person.getRelation("requires").iterator();while(requires.hasNext()){

Individual r = (Individual) requires.next(); Iterator develops = course.getRelation("develops").iterator();

while(develops.hasNext()){

Individual d = (Individual) develops.next();Comparator cmp = new StringComparator();if( cmp.compare( r.getId(), d.getId() ) == 0 ){

count++;}

}}

}catch( PropertyNotFoundException e ){

e.printStackTrace();}catch( NonRelationException e ){

e.printStackTrace();}catch( PropertyException e ){

e.printStackTrace();}return new double[] {(float)count, -price};

}

Eval 1 to 1

Page 18: Matching Module Novas Instâncias para a Infra-estrutura de Matchmaking

Criando um New Domain Knowledge

Eval 1 to N

public double[] eval1toN(Individual person, IndividualsCollection courses){

double result = 0.0f;double firstValue = -1.0f;boolean firstTime = true;double totalPrice = 0.0f;try{

Individual p = (Individual)person.getClone();Iterator iter = courses.iterator();while( iter.hasNext() ){

Individual currCourse = (Individual) iter.next();double[] currEval = eval1to1( p, currCourse );if( currEval[0] >= 0 ){

stateChanger.changeState( p, currCourse );}if( currEval[0] == 0 ){

currEval[0] = -0.1f;}result += currEval[0];totalPrice += currCourse.getPropertyAsDouble( "price" );if( firstTime ){

firstValue = currEval[0];firstTime = false;

}}return new double [] { result, -totalPrice, firstValue };

}catch( PropertyNotFoundException e ){

e.printStackTrace();}catch( PropertyException e ){

e.printStackTrace();}catch( StateChangeException e ){

e.printStackTrace();}return new double[] { result };

}

Page 19: Matching Module Novas Instâncias para a Infra-estrutura de Matchmaking

Criando um New Domain Knowledge

• Como ensinar ao MM como avaliar os possíveis conjuntos de resultados?

Definindo um state changer

Resultados são obtidos incrementalmente

A cada iteração, o estado do grupo de indivíduos muda, bem como as próximas melhores soluções

Um state changer é o mecanismo que muda o estado de um problema após cada solução

Page 20: Matching Module Novas Instâncias para a Infra-estrutura de Matchmaking

Criando um Domain Knowledge

public void changeState( Individual person, Individual course ) throws StateChangeException{

if( ( person == null ) || ( course == null ) ){

return;}try{

person.addRelationIndividual( "hasCoursed", course );IndividualsCollection develops = course.getRelation( "develops" ); if( develops != null ){

Iterator iter = develops.iterator();while( iter.hasNext() ){

Individual currComp = (Individual) iter.next();person.removeRelationIndividual( "requires", currComp );

}}

}catch( PropertyNotFoundException e ){

System.out.println( "Some of the changes made in class PersonCourseStateChanger were not made!" );System.out.println( "Some of the properties accessed do not exist!" );e.printStackTrace();throw new StateChangeException();

}catch( NonRelationException e ){

e.printStackTrace();throw new StateChangeException();

}catch( PropertyException e ){

e.printStackTrace();throw new StateChangeException( e );

}}

State Changer para o domínio de exemplo

Page 21: Matching Module Novas Instâncias para a Infra-estrutura de Matchmaking

Usando o Matching Module

Definindo o problema e o espaço de soluções para o matching

Definindo os parâmetros de matching

Especificando o problema

Especificando o espaço de soluções

Especificando uma estratégia

Page 22: Matching Module Novas Instâncias para a Infra-estrutura de Matchmaking

Usando o Matching Module

Definindo o problema e o espaço de soluções para o matching

Estrutura do XML<?xml version="1.0"?><Matchings> <!—Define the matching parameters by setting the appropriate Matchings attributes.--> <Matching> <Problem> <!—Problem definition --> </Problem> <SolutionSpace> <!—Solution Space definition --> </SolutionSpace> <Strategies> <!—Define the strategies used to solve the matching problem --> </Strategies> </Matching></Matchings>

Page 23: Matching Module Novas Instâncias para a Infra-estrutura de Matchmaking

Usando o Matching Module

Definindo o problema e o espaço de soluções para o matching

Parâmetros de Matching

<Matchings> <Matching type="1toN" model="RDFS" name="Tereza"> <!—Problem definition to find the best course for Tereza --> </Matching> <Matching type="1toN" model="RDFS" name="Joao"> <!—Problem definition to find the best course for Joao --> </Matching> <Matching type="1toN" model="RDFS" name="Maria"> <!—Problem definition to find the best course for Maria --> </Matching></Matchings>

Page 24: Matching Module Novas Instâncias para a Infra-estrutura de Matchmaking

Usando o Matching Module

Definindo o problema e o espaço de soluções para o matching

Parâmetros de Matching

Name Type (1to1, Nto1, 1toN, NtoN) Model MaxResultsSize Threshold

<Matching type="1toN" model="RDFS" name="Tereza" maxResultsSize=”10” threshold=”0.7”>

Page 25: Matching Module Novas Instâncias para a Infra-estrutura de Matchmaking

Usando o Matching Module

Definindo o problema e o espaço de soluções para o matching

Problema

<Problem> <Elements> <Element id="http://www.lac.inf.puc-rio.br/~ferrao/inf/tereza.rdf" /> <Element id="http://www.lac.inf.puc-rio.br/~ferrao/inf/maria.rdf" /> <Element id="http://www.lac.inf.puc-rio.br/~ferrao/inf/joao.rdf" /> </Elements> </Problem>

Page 26: Matching Module Novas Instâncias para a Infra-estrutura de Matchmaking

Usando o Matching Module

Definindo o problema e o espaço de soluções para o matching

Soluções

<SolutionSpace> <Elements> <ElementList address="http://www.lac.inf.puc-rio.br/~ferrao/inf/courses.rdf#courses_list" semantics="index" property="http://www.lac.inf.puc-rio.br/~ferrao/onts/link.rdfs#linksIndex" /> </Elements></SolutionSpace>

Page 27: Matching Module Novas Instâncias para a Infra-estrutura de Matchmaking

Usando o Matching Module

Definindo o problema e o espaço de soluções para o matching

Estratégias

<Strategies> <TabuSearchStrategy name="Tabu" maximize="true"> <DomainKnowledge name="PersonCourseDomainKnowledge" /> </TabuSearchStrategy> <GreedyStrategy name="Greedy" maximize="true"> <DomainKnowledge name="PersonCourseDomainKnowledge" /> </GreedyStrategy></Strategies>

Page 28: Matching Module Novas Instâncias para a Infra-estrutura de Matchmaking

Usando o Matching Module

Definindo o problema e o espaço de soluções para o matching

Estratégias

Três estratégias já estão implementadas no MM:

Estratégia Força Bruta Estratégia Gulosa Estratégia Busca Tabu

Page 29: Matching Module Novas Instâncias para a Infra-estrutura de Matchmaking

Usando o Matching Module

Definindo o problema e o espaço de soluções para o matching

Especificação Completa

<?xml version="1.0"?><Matchings> <Matching type="1toN" model="RDFS" name="Tereza"> <Problem> <Elements> <Element id="http://www.lac.inf.puc-rio.br/~ferrao/inf/tereza.rdf" /> </Elements> </Problem> <SolutionSpace> <Elements> <ElementList address="http://www.lac.inf.puc-rio.br/~ferrao/inf/courses.rdf#courses_list" semantics="index" property="http://www.lac.inf.puc-rio.br/~ferrao/onts/link.rdfs#linksIndex" /> </Elements> </SolutionSpace> <Strategies> <TabuSearchStrategy name="Tabu" maximize="true" nIterations="100" tenure="5"> <DomainKnowledge name="PersonCourseDomainKnowledge" /> </TabuSearchStrategy> <GreedyStrategy name="Greedy" maximize="true"> <DomainKnowledge name="PersonCourseDomainKnowledge" /> </GreedyStrategy> </Strategies> </Matching></Matchings>

Page 30: Matching Module Novas Instâncias para a Infra-estrutura de Matchmaking

A Aplicação Cliente

Exemplo: Domínio de Pessoas, Cursos e Competências

-name : string

Person -name : string-price : double

Course

-name : string

Competency

*

-develops

*

-preRequisite *

*

*

-requires

*

*

-hasCoursed

*

Page 31: Matching Module Novas Instâncias para a Infra-estrutura de Matchmaking

A Aplicação Cliente

Exemplo: Domínio de Pessoas, Cursos e Competências

Course1$100

Course10$300

Course9$300

Course8$300

Course7$400

Course6$200

Course5$250

Course4$300

Course3$150

Course2$150

- Comp9- Comp10- Comp13

- Comp8- Comp9- Comp11

- Comp9- Comp11

- Comp4- Comp5- Comp6

- Comp5- Comp6- Comp8- Comp12

- Comp5- Comp6- Comp7

- Comp2- Comp3

- Comp2- Comp4

- Comp1

Page 32: Matching Module Novas Instâncias para a Infra-estrutura de Matchmaking

A Aplicação Cliente

Exemplo: Domínio de Pessoas, Cursos e Competências

Person hasCoursed requires

Luis Course1 Comp2Comp5Comp9Comp11

Maria Course1 Comp2Comp5Comp8Comp9Comp11

Antonio Course1Course2Course3

Comp5Comp6Comp8Comp9

Tereza Course1Course2Course3

Comp5Comp6Comp8Comp9Comp13

João Course1Course2

Comp12

Ana Course1Course2Course3Course5

Comp12

Page 33: Matching Module Novas Instâncias para a Infra-estrutura de Matchmaking

A Aplicação Cliente

Exemplo: Domínio de Pessoas, Cursos e Competências

Resultados Esperados

Person Next Best Course Best Sequence of Courses (ordered) / Explanation

Luis Course3 Course3Course6Course9

This sequence is chosen since it develops all required competencies and has the lowest total price.

Maria Course3 Course3Course5Course8

This sequence is the only one which develops all required competencies.

Antonio Course5 Course5Course8

This sequence is the cheapest one (in particular it is cheaper than the one where course7 is taken).

Tereza Course5 Course5Course4Course7

This sequence is the only one which develops all required competencies.

João Course3 Course3Course6Course10

The path through Course10 is the one which develops all competencies with the lowest cost.

Ana Course4 Course4 The path through Course4 is the one which develops all competencies with the lowest cost.

Page 34: Matching Module Novas Instâncias para a Infra-estrutura de Matchmaking

A Aplicação Cliente

Exemplo: Domínio de Pessoas, Cursos e Competências

Page 35: Matching Module Novas Instâncias para a Infra-estrutura de Matchmaking

A Aplicação Cliente

Exemplo: Domínio de Pessoas, Cursos e Competências

Configuração do servidor

Page 36: Matching Module Novas Instâncias para a Infra-estrutura de Matchmaking

A Aplicação Cliente

Exemplo: Domínio de Pessoas, Cursos e Competências

Configuração do servidor

Page 37: Matching Module Novas Instâncias para a Infra-estrutura de Matchmaking

A Aplicação Cliente

Exemplo: Domínio de Pessoas, Cursos e Competências

Page 38: Matching Module Novas Instâncias para a Infra-estrutura de Matchmaking

A Aplicação Cliente

Exemplo: Domínio de Pessoas, Cursos e Competências

Page 39: Matching Module Novas Instâncias para a Infra-estrutura de Matchmaking

A Aplicação Cliente

Exemplo: Domínio de Pessoas, Cursos e Competências

Page 40: Matching Module Novas Instâncias para a Infra-estrutura de Matchmaking

A Aplicação Cliente

Exemplo: Domínio de Pessoas, Cursos e Competências

Page 41: Matching Module Novas Instâncias para a Infra-estrutura de Matchmaking

A Aplicação Cliente

Exemplo: Domínio de Pessoas, Cursos e Competências

Page 42: Matching Module Novas Instâncias para a Infra-estrutura de Matchmaking

A Aplicação Cliente

Exemplo: Domínio de Pessoas, Cursos e Competências

Page 43: Matching Module Novas Instâncias para a Infra-estrutura de Matchmaking

A Aplicação Cliente

Exemplo: Domínio de Pessoas, Cursos e Competências

Page 44: Matching Module Novas Instâncias para a Infra-estrutura de Matchmaking

A Aplicação Cliente

Exemplo: Domínio de Pessoas, Cursos e Competências

Page 45: Matching Module Novas Instâncias para a Infra-estrutura de Matchmaking

A Aplicação Cliente

Exemplo: Domínio de Pessoas, Cursos e Competências

Page 46: Matching Module Novas Instâncias para a Infra-estrutura de Matchmaking

Novas Instâncias

• Problemas de Matching:

Dada uma vaga e as competências necessárias para preenchê-la, qual o melhor candidato? (Já desenvolvido)

Dado um conjunto de pessoas e seus interesses e um conjunto de mensagens publicitárias, quais são aquelas que terão o maior impacto?

Dado um projeto e suas necessidades e um conjunto de profissionais, suas competências e disponibilidades, quais são os profissionais mais indicados?

Dado um conjunto de cursos, as competências e um conjunto de profissionais, quais são os mais indicados para o treinamento?

Dada uma dissertação ou tese e seus temas, qual a composição mais indicada para uma banca?

Page 47: Matching Module Novas Instâncias para a Infra-estrutura de Matchmaking

Documentos de Referência

An Overview of the Matching Module Creating a New Domain Knowledge Using the Matching Module Configuring a Matching Server An Introduction to the Matching Module Client

Application Skills Management Case Study

JavaDocs, Diagramas e Classes

Page 48: Matching Module Novas Instâncias para a Infra-estrutura de Matchmaking

Obrigado!

Cristiano Rocha, Luiz Gustavo Ferrão, Francisco Ferreira, Daniel Orlean

21 [email protected]

[email protected]