我正在开发一个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;
}
}
}
}
答案 0 :(得分:0)
这似乎不是一种正确的做法。尝试下面这是一种用阿拉伯语找到茎的简单方法。
首先你需要一个茎列表,显然你有这个。 那么你应该写阿拉伯文学规则和形式,可以解析一个词干。 现在您只需将规则转换为java正则表达式。 例如,如果你想从لاعبون找到لعب你应该删除ون,因为它显示人和计数,那么你应该检查لاعب是否来自其中一个词干。如你所知,表格لاعب是لعب的فاعل形式所以你应该选择لعب。