我一直在 Flutter 中从事一个类似 LLM 的非常简单的项目。我需要在列表数据中找到一个字符串列表,例如“我的讲座分数是多少”。但顺序并不重要。 如果我的搜索在其中一个句子列表中以任意顺序找到“what”、“is”、“my”、“lecture”、“score”,则结果将为 true,否则为 false。
这是我的句子列表:
class vaModel {
final int id;
final List<String> stringData;
final String response;
vaModel({
required this.id,
required this.stringData,
required this.response,
});
}
这是该模型的数据:
import "package:flut2deneme/pages/vaModel.dart";
List<vaModel> vaData = [
vaModel(id: 1, stringData: ["what", "my", "score", "lecture"], response: "load1"),
vaModel(id: 2, stringData: ["total", "lectures", "hours", "week"], response: "load2"),
vaModel(id: 3, stringData: ["how", "much", "cost"], response: "load3"),
//other
];
例如,如果用户输入“本次讲座我的分数是多少”,则会在 vaData 列表中的 id:1 中返回“load1”。然而,由于顺序不同并且有更多其他单词,因此可以在数据列表中找到所需的单词(what、my、score、lecture)。如图所示,接收到的句子中还有其他单词,并且单词不按给定顺序排列,结果为 true,因为所有必需的单词都存在于第 1 项(id:1)中
也可以用在List<>的列表中搜索list<>来解释。
感谢您的支持。
你可以做这样的事情
String? getResponse(String input){
for (final model in vaData) {
if (model.stringData.every((element) => input.toLowerCase().contains(element))) {
return model.response;
}
}
return null;
}
示例:
void main() {
print(getResponse("What is my score in the lecture")); //load1
print(getResponse("Score in the lecture what my")); // load1
print(getResponse("Score in the what my")); // null
print(getResponse("How much does it cost?")); // load3
}