我正在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,然后您应该检查لاعب是否源自其中一个词干。如您所知,形式لاعب是لعب的فاعل形式,因此您应该选择لعب。

10-08 13:40