fix goal generation to handle multiple sentences
All checks were successful
studiorailgun/trpg/pipeline/head This commit looks good
All checks were successful
studiorailgun/trpg/pipeline/head This commit looks good
This commit is contained in:
parent
fd5ed6b181
commit
c2ddc5818d
@ -1,5 +1,6 @@
|
|||||||
package org.studiorailgun.conversation.evaluators;
|
package org.studiorailgun.conversation.evaluators;
|
||||||
|
|
||||||
|
import org.studiorailgun.Globals;
|
||||||
import org.studiorailgun.conversation.categorization.SentenceFunctionCategorizor;
|
import org.studiorailgun.conversation.categorization.SentenceFunctionCategorizor;
|
||||||
import org.studiorailgun.conversation.evaluators.goal.GoalEval;
|
import org.studiorailgun.conversation.evaluators.goal.GoalEval;
|
||||||
import org.studiorailgun.conversation.evaluators.greet.GreetingEval;
|
import org.studiorailgun.conversation.evaluators.greet.GreetingEval;
|
||||||
@ -18,7 +19,7 @@ public class EvaluationTree {
|
|||||||
/**
|
/**
|
||||||
* Number of times to evaluate response logic
|
* Number of times to evaluate response logic
|
||||||
*/
|
*/
|
||||||
static final int RESPONSE_EVAL_COUNT = 1;
|
static final int RESPONSE_EVAL_COUNT = 2;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Evaluates a quote
|
* Evaluates a quote
|
||||||
@ -62,6 +63,11 @@ public class EvaluationTree {
|
|||||||
//evaluate the AI's current goal in the conversation
|
//evaluate the AI's current goal in the conversation
|
||||||
GoalEval.evaluate(conversation);
|
GoalEval.evaluate(conversation);
|
||||||
|
|
||||||
|
//finished evaluation (couldn't find any more goals to pursue)
|
||||||
|
if(Globals.conversation.getGoalData().getGoal() == null){
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
//synthesize language based on the results of the actions performed
|
//synthesize language based on the results of the actions performed
|
||||||
Sentence newSent = ResponseEval.evaluate(conversation);
|
Sentence newSent = ResponseEval.evaluate(conversation);
|
||||||
if(newSent != null){
|
if(newSent != null){
|
||||||
|
|||||||
@ -3,7 +3,6 @@ package org.studiorailgun.conversation.evaluators.goal;
|
|||||||
import org.studiorailgun.conversation.evaluators.goal.GoalData.ConversationGoal;
|
import org.studiorailgun.conversation.evaluators.goal.GoalData.ConversationGoal;
|
||||||
import org.studiorailgun.conversation.evaluators.greet.GreetingData;
|
import org.studiorailgun.conversation.evaluators.greet.GreetingData;
|
||||||
import org.studiorailgun.conversation.evaluators.query.QueryData;
|
import org.studiorailgun.conversation.evaluators.query.QueryData;
|
||||||
import org.studiorailgun.conversation.tracking.ConvParticipant;
|
|
||||||
import org.studiorailgun.conversation.tracking.Conversation;
|
import org.studiorailgun.conversation.tracking.Conversation;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -20,25 +19,21 @@ public class GoalEval {
|
|||||||
GreetingData greetingData = conversation.getGreetingData();
|
GreetingData greetingData = conversation.getGreetingData();
|
||||||
GoalData goalData = conversation.getGoalData();
|
GoalData goalData = conversation.getGoalData();
|
||||||
QueryData queryData = goalData.getQueryData();
|
QueryData queryData = goalData.getQueryData();
|
||||||
ConvParticipant selfParticipant = conversation.getSelf();
|
|
||||||
|
|
||||||
boolean set = false;
|
|
||||||
|
|
||||||
//evaluate if goal should be to greet
|
//evaluate if goal should be to greet
|
||||||
if(!greetingData.getHaveGreeted().contains(selfParticipant)){
|
if(!greetingData.getHaveGreeted().contains(conversation.getSelf())){
|
||||||
conversation.getGoalData().setGoal(ConversationGoal.GREET);
|
conversation.getGoalData().setGoal(ConversationGoal.GREET);
|
||||||
set = true;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
//evaluate if goal should be to answer a question
|
//evaluate if goal should be to answer a question
|
||||||
if(queryData.getRecentQueries().size() > 0){
|
if(queryData.getRecentQueries().size() > 0){
|
||||||
conversation.getGoalData().setGoal(ConversationGoal.ANSWER);
|
conversation.getGoalData().setGoal(ConversationGoal.ANSWER);
|
||||||
set = true;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!set){
|
//if failed to find a goal, set current goal to null
|
||||||
throw new Error("Failed to find a goal to pursue in the conversation!");
|
conversation.getGoalData().setGoal(null);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -12,19 +12,17 @@ import org.studiorailgun.conversation.tracking.Sentence;
|
|||||||
*/
|
*/
|
||||||
public class NLPParser {
|
public class NLPParser {
|
||||||
|
|
||||||
public static String text = "Joe Smith was born in California. " +
|
/**
|
||||||
"In 2017, he went to Paris, France in the summer. " +
|
* The CoreNLP pipeline
|
||||||
"His flight left at 3:00pm on July 10th, 2017. " +
|
*/
|
||||||
"After eating some escargot for the first time, Joe said, \"That was delicious!\" " +
|
|
||||||
"He sent a postcard to his sister Jane Smith. " +
|
|
||||||
"After hearing about Joe's trip, Jane decided she might go to France one day.";
|
|
||||||
|
|
||||||
static StanfordCoreNLP pipeline;
|
static StanfordCoreNLP pipeline;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initializes the part-of-speech Parser
|
* Initializes the part-of-speech Parser
|
||||||
*/
|
*/
|
||||||
public static void init(){
|
public static void init(){
|
||||||
|
System.out.println("Initializing NLP Parser");
|
||||||
|
|
||||||
// set up pipeline properties
|
// set up pipeline properties
|
||||||
Properties props = new Properties();
|
Properties props = new Properties();
|
||||||
// set the list of annotators to run
|
// set the list of annotators to run
|
||||||
@ -33,6 +31,8 @@ public class NLPParser {
|
|||||||
props.setProperty("coref.algorithm", "neural");
|
props.setProperty("coref.algorithm", "neural");
|
||||||
// build pipeline
|
// build pipeline
|
||||||
pipeline = new StanfordCoreNLP(props);
|
pipeline = new StanfordCoreNLP(props);
|
||||||
|
|
||||||
|
System.out.println("Finished Initializing NLP Parser");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -54,8 +54,6 @@ public class NLPParser {
|
|||||||
quote.addSentence(sentence);
|
quote.addSentence(sentence);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO: grab information from document here
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,6 +4,7 @@ import static org.junit.jupiter.api.Assertions.*;
|
|||||||
|
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.studiorailgun.conversation.ConvAI;
|
import org.studiorailgun.conversation.ConvAI;
|
||||||
|
import org.studiorailgun.conversation.evaluators.goal.GoalEval;
|
||||||
import org.studiorailgun.conversation.evaluators.goal.GoalData.ConversationGoal;
|
import org.studiorailgun.conversation.evaluators.goal.GoalData.ConversationGoal;
|
||||||
import org.studiorailgun.conversation.tracking.Quote;
|
import org.studiorailgun.conversation.tracking.Quote;
|
||||||
|
|
||||||
@ -25,7 +26,7 @@ public class GreetingTests {
|
|||||||
public void testGoal(){
|
public void testGoal(){
|
||||||
Globals.init("./data/webs/test/web.json");
|
Globals.init("./data/webs/test/web.json");
|
||||||
|
|
||||||
ConvAI.simFrame("Hello");
|
GoalEval.evaluate(Globals.conversation);
|
||||||
|
|
||||||
assertEquals(Globals.conversation.getGoalData().getGoal(), ConversationGoal.GREET);
|
assertEquals(Globals.conversation.getGoalData().getGoal(), ConversationGoal.GREET);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user