gpt4 book ai didi

Java:将数组列表相互链接以执行 "top categorization"任务

转载 作者:行者123 更新时间:2023-12-01 05:27:14 25 4
gpt4 key购买 nike

注意:源代码包含多个类,因此为了节省您的时间,我不会发布它,但会为您提供上下文。如果我不能很好地解释,请原谅。我已经在这方面做了很多工作,我的解释对我来说有意义,但对其他人来说可能没有意义。

我的任务是确定用户输入属于哪个类别。例如,如果用户输入:我喜欢狗和猫。该程序将输出前 2 个类别:小狗,猫

如果用户只输入:“我爱狗”,程序将输出前 2 个类别为“狗,没有找到其他类别”

如果仅找到一个类别或根本没有找到类别,则默认响应为“无类别”。

我为以下类别创建了数组列表:狗、猫、鸟。这些数组列表包含关键字,这些关键字将触发程序识别用户输入所属的类别。

我基本上需要获得最高可能性和第二高可能性(如果适用)并将它们“链接”到一个字符串,该字符串将输出类别。

这是我的代码,它尝试获取前 2 个最高可能性并将它们输出到控制台上。 我的问题是让类别链接到各自的字符串,以确保输出可能性最高的类别。

    //Create prioritization
int topDouble = 0;
String topString = "no category"; //default response
int secondDouble = 0;
String secondString = "no category"; // default response

ArrayList<Double> likelyDouble = new ArrayList<Double>();
likelyDouble.add(cats);
likelyDouble.add(dogs);
likelyDouble.add(birds);

ArrayList<String> likelyString = new ArrayList<String>();
likelyString.add("you talked about cats");
//to parallel likelyDouble cats category
likelyString.add("you talked about dogs");
//to parallel likelyDouble dogs category
likelyString.add("you talked about birds");
//to parallel likelyDouble cats category

int count = 0;
for (double d : likelyDouble){
if((d>0) && (d > topDouble)){
topDouble = (int) d;
topString = likelyString.get(count);
}
else if((d>0) && (d > secondDouble)){
secondDouble = (int) d;
secondString = likelyString.get(count);
}
}

System.out.print(topString + "\n");
System.out.print(secondString);

我得到的输出默认为:

用户输入:我喜欢狗和猫。

没有类别

仅供引用,该程序根据句子中的位置和引用该类别的次数来确定用户正在谈论某个类别的可能性。可能性是计算出来的值。因此,如果根本没有提及该类别,则可能性为 0。

感谢您的帮助!

最佳答案

我不太明白你在追求什么,但我怀疑这与你的 Actor 阵容有关:

topDouble = (int) d;

您始终将 topDouble 设置为 0 - 假设可能性在 [0,1] 范围内。
secondDouble也是如此。

可能您想将 topDoublesecondDouble 声明为 double,并删除对 int 的强制转换 - 以获得最大值的 double /第二个值。

此外 - 我看不到您增加count,因此您总是get() ArrayList中的第一个元素。

只是一个设计思想,以获得更好的方法[在我看来]:
创建一个新类:LikelyhoodStringDouble,有 2 个字段,一个是 String,另一个是 double。使其实现Comparable [基于double的值。

您现在所要做的就是使用 Collections.sort()对列表进行排序,并获取您想要的前 k 个元素 [在您的情况下 k=2]

关于Java:将数组列表相互链接以执行 "top categorization"任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9540330/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com