Skip to content

Commit

Permalink
upgrade gradle + adding CoreNLP and SUTime pipeline
Browse files Browse the repository at this point in the history
  • Loading branch information
tobyli committed Jun 18, 2020
1 parent 037253a commit b8fc532
Show file tree
Hide file tree
Showing 15 changed files with 257 additions and 108 deletions.
Binary file modified .idea/caches/build_file_checksums.ser
Binary file not shown.
134 changes: 109 additions & 25 deletions .idea/codeStyles/Project.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 4 additions & 1 deletion .idea/gradle.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

33 changes: 18 additions & 15 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ android {
buildToolsVersion '28.0.3'
defaultConfig {
//applicationId "edu.cmu.hcii.sugilite"
minSdkVersion 24
minSdkVersion 26
targetSdkVersion 26//25
versionCode 2
versionName "1.1"
Expand Down Expand Up @@ -70,35 +70,38 @@ repositories {
dependencies {
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
implementation fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
implementation "com.android.support:appcompat-v7:$supportLibraryVersion"//25.3.1
implementation "com.android.support:design:$supportLibraryVersion"//25.3.1
implementation "com.android.support:support-v4:$supportLibraryVersion"//25.3.1

testImplementation 'junit:junit:4.12'
implementation "com.android.support:appcompat-v7:$supportLibraryVersion"
//25.3.1
implementation "com.android.support:design:$supportLibraryVersion"
//25.3.1
implementation "com.android.support:support-v4:$supportLibraryVersion"
//25.3.1
implementation 'com.google.code.gson:gson:2.2.4'
implementation 'com.opencsv:opencsv:3.9'
implementation 'org.apache.commons:commons-lang3:3.4'
//compile 'edu.stanford.nlp:stanford-corenlp:3.8.0'
//implementation("org.danilopianini:gson-extras:0.2.1")
implementation 'com.squareup.okhttp3:okhttp:4.7.2'


implementation ('edu.stanford.nlp:stanford-corenlp:4.0.0') {
exclude group: 'com.google.protobuf', module: 'protobuf-java'
exclude group: 'javax.xml.bind', module: 'jaxb-api'
exclude group: 'com.sun.xml.bind', module: 'jaxb-impl'
}
implementation files('libs/RootTools.jar')
deployerJars "org.apache.maven.wagon:wagon-ssh:2.9"
implementation 'com.daasuu:BubbleLayout:1.2.0'

// gRPC
compile "io.grpc:grpc-okhttp:$grpcVersion"
compile "io.grpc:grpc-protobuf-lite:$grpcVersion"
compile "io.grpc:grpc-stub:$grpcVersion"
compile 'javax.annotation:javax.annotation-api:1.2'
implementation "io.grpc:grpc-okhttp:$grpcVersion"
implementation "io.grpc:grpc-protobuf-lite:$grpcVersion"
implementation "io.grpc:grpc-stub:$grpcVersion"
implementation 'javax.annotation:javax.annotation-api:1.2'
protobuf 'com.google.protobuf:protobuf-java:3.3.1'
// OAuth2 for Google API
compile('com.google.auth:google-auth-library-oauth2-http:0.7.0') {
implementation('com.google.auth:google-auth-library-oauth2-http:0.7.0') {
exclude module: 'httpclient'
}
compile 'com.squareup.okhttp3:okhttp:4.0.1'

}

protobuf {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import edu.cmu.hcii.sugilite.ontology.helper.annotator.SugiliteTextParentAnnotator;
import edu.cmu.hcii.sugilite.pumice.kb.default_query.BuiltInValueQuery;
import edu.cmu.hcii.sugilite.source_parsing.SugiliteScriptExpression;
import edu.stanford.nlp.time.SUTime;

import java.io.Serializable;
import java.util.Date;
Expand Down Expand Up @@ -91,14 +92,14 @@ public static Boolean evaluate(SugiliteData sugiliteData, SugiliteValue arg0, Su

//normalize arg0Value and arg1Value using SugiliteTextAnnotator
SugiliteTextParentAnnotator.AnnotatingResult annotatingResult0 = null;
if (arg0 instanceof SugiliteSimpleConstant) {
if (arg0 instanceof SugiliteSimpleConstant && arg0Value instanceof Number) {
annotatingResult0 = ((SugiliteSimpleConstant) arg0).toAnnotatingResult();
} else if (arg0Value instanceof String) {
annotatingResult0 = SugiliteTextParentAnnotator.AnnotatingResult.fromString((String) arg0Value);
}

SugiliteTextParentAnnotator.AnnotatingResult annotatingResult1 = null;
if (arg1 instanceof SugiliteSimpleConstant) {
if (arg1 instanceof SugiliteSimpleConstant && arg1Value instanceof Number) {
annotatingResult1 = ((SugiliteSimpleConstant) arg1).toAnnotatingResult();
} else if (arg1Value instanceof String) {
annotatingResult1 = SugiliteTextParentAnnotator.AnnotatingResult.fromString((String) arg1Value);
Expand All @@ -109,15 +110,6 @@ public static Boolean evaluate(SugiliteData sugiliteData, SugiliteValue arg0, Su
arg1Value = annotatingResult1;
}

//turn strings into numbers if needed
if (arg0Value instanceof String && NumberUtils.isParsable((String)arg0Value)) {
arg0Value = NumberUtils.createNumber((String)arg0Value);
}

if (arg1Value instanceof String && NumberUtils.isParsable((String)arg1Value)) {
arg1Value = NumberUtils.createNumber((String)arg1Value);
}

//TODO: need to implement better comparison method
switch (boolOperator) {
case GREATER_THAN:
Expand All @@ -142,6 +134,7 @@ public static Boolean evaluate(SugiliteData sugiliteData, SugiliteValue arg0, Su
throw new RuntimeException("failed to evaluate!");
}

//normalize the values for comparison
private static Object normalizeValue (Object argValue) {
if (argValue instanceof BuiltInValueQuery.WeatherResult) {
return ((BuiltInValueQuery.WeatherResult) argValue).temperature;
Expand All @@ -151,6 +144,10 @@ private static Object normalizeValue (Object argValue) {
return ((Date) argValue).getTime();
}

if (argValue instanceof String && NumberUtils.isParsable((String)argValue)) {
return NumberUtils.createNumber((String)argValue);
}

return argValue;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import edu.cmu.hcii.sugilite.SugiliteData;
import edu.cmu.hcii.sugilite.model.block.booleanexp.SugiliteBooleanExpressionNew;
import edu.cmu.hcii.sugilite.ontology.helper.annotator.SugiliteTextParentAnnotator;
import edu.stanford.nlp.time.SUTime;

import static edu.cmu.hcii.sugilite.source_parsing.SugiliteScriptExpression.addQuoteToTokenIfNeeded;

Expand Down Expand Up @@ -59,6 +60,9 @@ public T evaluate(@Nullable SugiliteData sugiliteData) {
@Override
public String toString() {
if (value != null) {
if (value instanceof SUTime.Time) {
return "(time " + ((SUTime.Time) value).toISOString() + ")";
}
if (isNumeric(value.toString())) {
//when it's a number
try {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ public class PumiceValueQueryKnowledge<T> implements Serializable {
public enum ValueType {NUMERICAL, STRING}
private String valueName;
private ValueType valueType;
private String userUtterance = "";
private String utterance;

//holds the value -- can be a get query, a constant or a resolve query.
@SkipPumiceJSONSerialization
Expand All @@ -62,18 +62,19 @@ public PumiceValueQueryKnowledge(String valueName, ValueType valueType){
this();
this.valueName = valueName;
this.valueType = valueType;
this.utterance = valueName;
}

public PumiceValueQueryKnowledge(String valueName, String userUtterance, ValueType valueType, SugiliteValue sugiliteValue){
this(valueName, valueType);
this.sugiliteValue = sugiliteValue;
this.userUtterance = userUtterance;
this.utterance = userUtterance;
}

public PumiceValueQueryKnowledge(Context context, String valueName, ValueType valueType, SugiliteStartingBlock sugiliteStartingBlock){
this(valueName, valueType);
this.sugiliteStartingBlock = sugiliteStartingBlock;
this.userUtterance = "demonstrate";
this.utterance = "demonstrate";
//populate involvedAppNames
Set<String> involvedAppPackageNames = new HashSet<>();
for(String packageName : sugiliteStartingBlock.relevantPackages){
Expand All @@ -93,7 +94,7 @@ public void copyFrom(PumiceValueQueryKnowledge pumiceValueQueryKnowledge){
this.valueType = pumiceValueQueryKnowledge.valueType;
this.sugiliteStartingBlock = pumiceValueQueryKnowledge.sugiliteStartingBlock;
this.sugiliteValue = pumiceValueQueryKnowledge.sugiliteValue;
this.userUtterance = pumiceValueQueryKnowledge.userUtterance;
this.utterance = pumiceValueQueryKnowledge.utterance;
this.involvedAppNames = pumiceValueQueryKnowledge.involvedAppNames;
}

Expand All @@ -105,6 +106,10 @@ public ValueType getValueType() {
return valueType;
}

public String getUtterance() {
return utterance;
}

public void setValueName(String valueName) {
this.valueName = valueName;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,13 @@
import edu.cmu.hcii.sugilite.model.variable.VariableValue;
import edu.cmu.hcii.sugilite.ontology.*;
import org.apache.commons.lang3.StringUtils;
import org.joda.time.DateTimeZone;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.TimeZone;

import edu.cmu.hcii.sugilite.model.block.SugiliteBlock;
import edu.cmu.hcii.sugilite.model.block.booleanexp.SugiliteBooleanExpression;
Expand Down Expand Up @@ -39,6 +43,7 @@
import edu.cmu.hcii.sugilite.model.value.SugiliteSimpleConstant;
import edu.cmu.hcii.sugilite.model.variable.Variable;
import edu.cmu.hcii.sugilite.ontology.description.OntologyDescriptionGenerator;
import edu.stanford.nlp.time.SUTime;

/**
* @author toby
Expand Down Expand Up @@ -108,7 +113,17 @@ static public List<SugiliteScriptExpression> parse(SugiliteScriptNode node) {
//string constant
result = new SugiliteScriptExpression<SugiliteSimpleConstant<String>>();
result.setConstantValue(new SugiliteSimpleConstant<>(node.getChildren().get(1).getValue()));
} else if (node.getChildren().size() == 2 && node.getChildren().get(0).getValue() != null && node.getChildren().get(1).getValue() != null && node.getChildren().get(0).getValue().equals("number")) {
} else if (node.getChildren().size() == 2 && node.getChildren().get(0).getValue() != null && node.getChildren().get(1).getValue() != null && node.getChildren().get(0).getValue().equals("time")) {
//time constant
result = new SugiliteScriptExpression<SugiliteSimpleConstant<String>>();
String isoTimeString = node.getChildren().get(1).getValue();
SUTime.Time timeSUTime = SUTime.parseDateTime(isoTimeString, true);
Calendar cal = Calendar.getInstance();
TimeZone tz = cal.getTimeZone();
Date time = new Date();
time.setTime(timeSUTime.getJodaTimeInstant().getMillis() - tz.getOffset(timeSUTime.getJodaTimeInstant().getMillis()));
result.setConstantValue(new SugiliteSimpleConstant<Date>(time));
}else if (node.getChildren().size() == 2 && node.getChildren().get(0).getValue() != null && node.getChildren().get(1).getValue() != null && node.getChildren().get(0).getValue().equals("number")) {
//number constant without unit
result = new SugiliteScriptExpression<SugiliteSimpleConstant<Number>>();
result.setConstantValue(new SugiliteSimpleConstant<>(node.getChildren().get(1).getValue()));
Expand Down
Loading

0 comments on commit b8fc532

Please sign in to comment.