如何在ArrayList中查找根词

时间:2016-12-07 22:57:58

标签: java nlp

我正在开发一个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;
            }
        }           
    }
}

1 个答案:

答案 0 :(得分:0)

这似乎不是一种正确的做法。尝试下面这是一种用阿拉伯语找到茎的简单方法。

首先你需要一个茎列表,显然你有这个。 那么你应该写阿拉伯文学规则和形式,可以解析一个词干。 现在您只需将规则转换为java正则表达式。 例如,如果你想从لاعبون找到لعب你应该删除ون,因为它显示人和计数,那么你应该检查لاعب是否来自其中一个词干。如你所知,表格لاعب是لعب的فاعل形式所以你应该选择لعب。