use of ai.saiy.android.nlu.microsoft.Intent in project Saiy-PS by brandall76.
the class NLUCoerce method coerce.
/**
* Coerce the NLP results into a generic {@link CommandRequest} object, validating the minimal
* requirements for each implementation.
*/
public void coerce() {
if (nluProvider instanceof NLUMicrosoft) {
if (DEBUG) {
MyLog.i(CLS_NAME, "coerce: instanceof NLUMicrosoft");
}
if (validateNLUNLUMicrosoft((NLUMicrosoft) nluProvider)) {
for (final Intent i : ((NLUMicrosoft) nluProvider).getIntents()) {
if (i.getScore() > NLUMicrosoft.MIN_THRESHOLD) {
commandRequest.setCC(NLUConstants.intentToCC(i.getIntent()));
if (!commandRequest.getCC().equals(CC.COMMAND_UNKNOWN)) {
final NLUMicrosoftHelper microsoftHelper = new NLUMicrosoftHelper();
commandRequest = microsoftHelper.prepareCommand(mContext, commandRequest, getSupportedLanguage(), ((NLUMicrosoft) nluProvider).getEntities());
if (commandRequest.isResolved()) {
break;
}
break;
} else {
if (DEBUG) {
MyLog.i(CLS_NAME, "coerce: COMMAND_UNKNOWN");
}
commandRequest.setCC(CC.COMMAND_UNKNOWN);
commandRequest.setResolved(false);
}
} else {
if (DEBUG) {
MyLog.i(CLS_NAME, "coerce: below threshold: " + i.getScore());
}
commandRequest.setCC(CC.COMMAND_UNKNOWN);
commandRequest.setResolved(false);
}
}
if (!commandRequest.isResolved()) {
commandRequest.setCC(CC.COMMAND_UNKNOWN);
commandRequest.setResolved(false);
}
} else {
if (DEBUG) {
MyLog.w(CLS_NAME, "coerce: NLUMicrosoft validation failed");
}
commandRequest.setCC(CC.COMMAND_UNKNOWN);
commandRequest.setResolved(false);
}
} else if (nluProvider instanceof NLUNuance) {
if (DEBUG) {
MyLog.i(CLS_NAME, "coerce: instanceof NLUNuance");
}
if (validateNLUNuance((NLUNuance) nluProvider)) {
for (final Interpretation interpretation : ((NLUNuance) nluProvider).getInterpretations()) {
if (interpretation.getAction().getIntent().getConfidence() > NLUNuance.MIN_THRESHOLD) {
commandRequest.setCC(NLUConstants.intentToCC(interpretation.getAction().getIntent().getValue()));
if (!commandRequest.getCC().equals(CC.COMMAND_UNKNOWN)) {
final NLUNuanceHelper nuanceHelper = new NLUNuanceHelper();
commandRequest = nuanceHelper.prepareCommand(mContext, commandRequest, getSupportedLanguage(), interpretation.getConcept());
if (commandRequest.isResolved()) {
break;
}
} else {
if (DEBUG) {
MyLog.i(CLS_NAME, "coerce: COMMAND_UNKNOWN");
}
commandRequest.setCC(CC.COMMAND_UNKNOWN);
commandRequest.setResolved(false);
}
} else {
if (DEBUG) {
MyLog.i(CLS_NAME, "coerce: below threshold: " + interpretation.getAction().getIntent().getConfidence());
}
commandRequest.setCC(CC.COMMAND_UNKNOWN);
commandRequest.setResolved(false);
}
}
if (!commandRequest.isResolved()) {
commandRequest.setCC(CC.COMMAND_UNKNOWN);
commandRequest.setResolved(false);
}
} else {
if (DEBUG) {
MyLog.w(CLS_NAME, "coerce: NLUNuance validation failed");
}
commandRequest.setCC(CC.COMMAND_UNKNOWN);
commandRequest.setResolved(false);
}
} else if (nluProvider instanceof NLUAPIAI) {
if (DEBUG) {
MyLog.i(CLS_NAME, "coerce: instanceof NLUAPIAI");
}
if (validateNLUAPIAI((NLUAPIAI) nluProvider)) {
commandRequest.setCC(NLUConstants.intentToCC(((NLUAPIAI) nluProvider).getIntent()));
if (!commandRequest.getCC().equals(CC.COMMAND_UNKNOWN)) {
final NLUAPIAIHelper apiaiHelper = new NLUAPIAIHelper();
commandRequest = apiaiHelper.prepareCommand(mContext, commandRequest, getSupportedLanguage(), ((NLUAPIAI) nluProvider).getParameters());
if (!commandRequest.isResolved()) {
commandRequest.setCC(CC.COMMAND_UNKNOWN);
commandRequest.setResolved(false);
}
} else {
if (DEBUG) {
MyLog.i(CLS_NAME, "coerce: COMMAND_UNKNOWN");
}
commandRequest.setCC(CC.COMMAND_UNKNOWN);
commandRequest.setResolved(false);
}
} else {
if (DEBUG) {
MyLog.w(CLS_NAME, "coerce: NLUAPIAI validation failed");
}
commandRequest.setCC(CC.COMMAND_UNKNOWN);
commandRequest.setResolved(false);
}
} else if (nluProvider instanceof NLUWit) {
if (DEBUG) {
MyLog.i(CLS_NAME, "coerce: instanceof NLUWit");
}
// TODO
} else if (nluProvider instanceof NLUBluemix) {
if (DEBUG) {
MyLog.i(CLS_NAME, "coerce: instanceof NLUBluemix");
}
// TODO
} else {
if (DEBUG) {
MyLog.i(CLS_NAME, "coerce: instanceof NLUSaiy");
}
if (validateNLUSaiy((NLUSaiy) nluProvider)) {
for (final ai.saiy.android.nlu.saiy.Intent intent : ((NLUSaiy) nluProvider).getIntents()) {
commandRequest.setCC(NLUConstants.intentToCC(intent.getIntent()));
if (!commandRequest.getCC().equals(CC.COMMAND_UNKNOWN)) {
final NLUSaiyHelper saiyHelper = new NLUSaiyHelper();
commandRequest = saiyHelper.prepareCommand(mContext, commandRequest, getSupportedLanguage(), intent.getEntities());
if (commandRequest.isResolved()) {
break;
}
break;
} else {
if (DEBUG) {
MyLog.i(CLS_NAME, "coerce: COMMAND_UNKNOWN");
}
commandRequest.setCC(CC.COMMAND_UNKNOWN);
commandRequest.setResolved(false);
}
}
if (!commandRequest.isResolved()) {
commandRequest.setCC(CC.COMMAND_UNKNOWN);
commandRequest.setResolved(false);
}
} else {
if (DEBUG) {
MyLog.w(CLS_NAME, "coerce: NLUSaiy validation failed");
}
commandRequest.setCC(CC.COMMAND_UNKNOWN);
commandRequest.setResolved(false);
}
}
commandRequest.setResultsArray(getResultsArray());
new Quantum(mContext).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, commandRequest);
}
use of ai.saiy.android.nlu.microsoft.Intent in project Saiy-PS by brandall76.
the class NLUCoerce method validateNLUNLUMicrosoft.
/**
* Validate the parameters prior to use.
*
* @param nluMicrosoft the {@link NLUMicrosoft} response object
* @return true if the minimum parameters are present, false otherwise.
*/
private boolean validateNLUNLUMicrosoft(@NonNull final NLUMicrosoft nluMicrosoft) {
if (DEBUG) {
MyLog.i(CLS_NAME, "validateNLUNLUMicrosoft");
}
if (UtilsString.notNaked(nluMicrosoft.getQuery())) {
if (DEBUG) {
MyLog.i(CLS_NAME, "query: " + nluMicrosoft.getQuery());
}
final List<Intent> intents = nluMicrosoft.getIntents();
if (UtilsList.notNaked(intents)) {
for (final Intent i : intents) {
if (UtilsString.notNaked(i.getIntent())) {
if (DEBUG) {
MyLog.i(CLS_NAME, "getIntent: " + i.getIntent());
MyLog.i(CLS_NAME, "getScore: " + i.getScore());
}
} else {
if (DEBUG) {
MyLog.w(CLS_NAME, "validateNLUNLUMicrosoft: intent naked");
}
return false;
}
}
final List<Entity> entities = nluMicrosoft.getEntities();
if (entities != null) {
final int entitiesSize = entities.size();
if (entitiesSize > 0) {
for (int i = 0; i < entitiesSize; i++) {
if (UtilsString.notNaked(entities.get(i).getEntity()) && UtilsString.notNaked(entities.get(i).getType())) {
if (DEBUG) {
MyLog.i(CLS_NAME, "getEntity: " + entities.get(i).getEntity());
MyLog.i(CLS_NAME, "getType: " + entities.get(i).getType());
MyLog.i(CLS_NAME, "getStartIndex: " + entities.get(i).getStartIndex());
MyLog.i(CLS_NAME, "getEndIndex: " + entities.get(i).getEndIndex());
MyLog.i(CLS_NAME, "getScore: " + entities.get(i).getScore());
}
if (i == (entitiesSize - 1)) {
return true;
}
} else {
if (DEBUG) {
MyLog.w(CLS_NAME, "validateNLUNLUMicrosoft: entity/type naked");
}
break;
}
}
} else {
if (DEBUG) {
MyLog.i(CLS_NAME, "validateNLUNLUMicrosoft: no entities to examine");
}
return true;
}
} else {
if (DEBUG) {
MyLog.w(CLS_NAME, "validateNLUNLUMicrosoft: entities null");
}
}
} else {
if (DEBUG) {
MyLog.w(CLS_NAME, "validateNLUNLUMicrosoft: intents naked");
}
}
} else {
if (DEBUG) {
MyLog.w(CLS_NAME, "validateNLUNLUMicrosoft: query naked");
}
}
return false;
}
use of ai.saiy.android.nlu.microsoft.Intent in project Saiy-PS by brandall76.
the class NLUCoerce method validateNLUSaiy.
/**
* Validate the parameters prior to use.
*
* @param nluSaiy the {@link NLUSaiy} response object
* @return true if the minimum parameters are present, false otherwise.
*/
private boolean validateNLUSaiy(@NonNull final NLUSaiy nluSaiy) {
if (DEBUG) {
MyLog.i(CLS_NAME, "validateNLUSaiy");
}
final List<String> results = nluSaiy.getResults();
if (UtilsList.notNaked(results)) {
final float[] confidence = nluSaiy.getConfidence();
if (UtilsList.notNaked(confidence)) {
final List<ai.saiy.android.nlu.saiy.Intent> intents = nluSaiy.getIntents();
if (UtilsList.notNaked(intents)) {
for (final ai.saiy.android.nlu.saiy.Intent intent : intents) {
if (DEBUG) {
MyLog.i(CLS_NAME, "getIntent: " + intent.getIntent());
MyLog.i(CLS_NAME, "getType: " + intent.getConfidence());
}
final List<ai.saiy.android.nlu.saiy.Entity> entities = intent.getEntities();
if (UtilsList.notNaked(entities)) {
final int entitiesSize = entities.size();
for (int i = 0; i < entitiesSize; i++) {
if (DEBUG) {
MyLog.i(CLS_NAME, "getVoiceName: " + entities.get(i).getName());
MyLog.i(CLS_NAME, "getVoiceName: " + entities.get(i).getValue());
MyLog.i(CLS_NAME, "getVoiceName: " + entities.get(i).getConfidence());
MyLog.i(CLS_NAME, "getContextual: " + entities.get(i).getContextual());
MyLog.i(CLS_NAME, "getVoiceName: " + Arrays.toString(entities.get(i).getIndex()));
}
final List<ai.saiy.android.nlu.saiy.Context> contexts = entities.get(i).getContextual();
for (final ai.saiy.android.nlu.saiy.Context context : contexts) {
if (DEBUG) {
MyLog.i(CLS_NAME, "getContext: " + context.getContext());
MyLog.i(CLS_NAME, "getConfidence: " + context.getConfidence());
}
final List<ContextValue> contextValues = context.getContextValues();
for (final ContextValue contextValue : contextValues) {
if (DEBUG) {
MyLog.i(CLS_NAME, "getIdentifier: " + contextValue.getIdentifier());
}
}
}
if (i == (entitiesSize - 1)) {
return true;
}
}
} else {
if (DEBUG) {
MyLog.w(CLS_NAME, "validateNLUSaiy: entities naked");
}
}
}
} else {
if (DEBUG) {
MyLog.w(CLS_NAME, "validateNLUSaiy: intents naked");
}
}
} else {
if (DEBUG) {
MyLog.w(CLS_NAME, "validateNLUSaiy: confidence naked");
}
}
} else {
if (DEBUG) {
MyLog.w(CLS_NAME, "validateNLUSaiy: results naked");
}
}
return false;
}
Aggregations