我正在NLP项目上,尝试将特定输入与ArrayList
中的根进行匹配。
例如,用户将输入لاعبون,并尝试在ArrayList
中找到单词لعب,但是当我运行代码时,它给了我多个根。
for(String dbData : rootList) {
//System.out.println(dbData);
// if(dbData.contains(x)) {
// System.out.println(dbData);
// }
for (int i = 0; i < dbData.length(); i++) {
c = dbData.charAt(i);
for (int j = 0; i < x.length(); i++) {
d = x.charAt(i);
if (c == d && m != rootList.size()) {
match = true;
//System.out.println(dbData);
} else {
++m;
match = false;
//System.out.println("لا يوجد تطابق");
}
if(match) {
System.out.println(dbData);
container = dbData;
}
}
}
}
最佳答案
这似乎不是进行阻止的正确方法。尝试以下操作,这是查找阿拉伯语词干的简单方法。
首先,您需要一个词干列表,显然您已经有了。
然后,您需要编写阿拉伯文学规则和形式,可以将单词解析为词干。
现在,您只需将规则转换为Java regex。
例如,如果您想从لاعبون中找到لعب,则应删除ون,因为它显示了person和count,然后您应该检查لاعب是否源自其中一个词干。如您所知,形式لاعب是لعب的فاعل形式,因此您应该选择لعب。