我有下面的代码,通过键盘输入,给我开始和到达。。开始是根据“da”命题来决定的,而到达是根据介词“a”来决定的,所以我现在要做的是:我想得到开始和到达,即使我改变了命题的顺序。。你知道我该怎么做。。这是我得到的结果:
I want to go from ostuni to trapani
Partenza :ostuni
Arrivo :trapani
but if I wrote like this:
I want to go to ostuni by trapani
I would like to print the same start and finish correctly ..that is
Patenza :trapani
Arrivo :ostuni
Is this processing possible?
thanks a lot for the attention! Good day
包eubot.controller;
import eubot.intent.Intent;
public class EubotEngine {
public Intent getIntent(String stringInput) {
String str1 = "";
String str2 = "";
Intent dictionary = null;
for (String str3 : Intent.keyWord) {
if (stringInput.contains(str3)) {
//System.out.println("La stringa contiene : " + str3);
int indice1 = stringInput.indexOf(str3) + str3.length();
String splittable =
stringInput.substring(indice1,stringInput.length()).trim();
String splittable2[] = splittable.split(" ");
int index = 0;
for (String str : splittable2) {
str = splittable2[index +1];
str1 = str;
System.out.println("Partenza :" + str1);
break;
}
String splittable3[] = splittable.split(" ");
for(String str : splittable3) {
str = splittable3[index + 3];
str2 = str;
System.out.println("Arrivo :" + str2);
break;
}
index++;
dictionary = new Intent();
dictionary.setTesto(stringInput);
}
}
return dictionary;
}
}
package eustema.eubot.intent;
public class Intent {
public String testo;
public String getTesto() {
return testo;
}
public void setTesto(String testo) {
this.testo = testo;
}
public static String[] keyWord = { "devo andare", "voglio andare", "vorrei andare", "devo recarmi"};
public static String[] parameter = { "bari", "roma", "milano","pisa","firenze","napoli","como","torino" };
}
package eustema.eubot.main;
import java.util.Scanner;
import eustema.eubot.controller.*;
import eustema.eubot.intent.*;
public class Test {
public static void main(String[] args) {
System.out.println("<<-|-|-|-|-|-|-|-|-|<<<BENVENUTO IN EuBoT>>>|-|-|-|-|-|-|-|-|->>");
EubotEngine controller = new EubotEngine();
Scanner input = new Scanner(System.in);
String string;
while (true) {
string = input.nextLine();
Intent intent = controller.getIntent(string);
}
}
}
1条答案
按热度按时间mqxuamgl1#
我知道这不是一个好答案:)
用命令式编程的方法来解决这一问题是非常重要的。原因是有许多形式可以表达相同的意图。诸如填充词、同义词、倒装词以及通常你没有想到的事情可能会破坏你的算法。
当然,这取决于你想要达到的准确度。如果您很高兴这种方法不适用于所有情况,您可以设置如下条件:
谷歌、亚马逊和苹果都在努力改善这种人机交互方式,但他们通过机器学习使用了更为数学/统计的方法。
所以,如果你在寻找最先进的技术:
主要搜索词:上下文无关语法。
其他关键词:马尔可夫模型,信息抽取,向量空间模型,tf-idf