0

我有一个文本文件,我正在尝试使用词干分析器。

词干分析器会去除词的后缀。例如,在词干处理之后,“have had have”将是“have have have”。为了做到这一点,必须拆分字符串,因为词干分析器一次只能处理一个单词。拆分和词干提取后,输出如下所示:“havehavehave”。如何将其恢复为正确的格式?

englishStemmer english = new englishStemmer();

Scanner inputFile = new Scanner(file); //The text of file is "having have had" or something similar
String[] text = inputFile.nextLine(split("\\s"));


for (int i =0; i < text.length; i++){
    english.setCurrent.text([i]);
    english.stem();
    System.out.print(english.getCurrent())
}
4

3 回答 3

1

假设您正在查看的输出是您打印的内容,System.out.print您只需添加一个结束空格,如System.out.print(english.getCurrent() + " "); 如果您想在最后一次迭代中避免空格,请使用 if 语句将其包装,如下所示:

if( i < text.length -1 )
{
    System.out.print(english.getCurrent() + " ");
} else {
    System.out.print(english.getCurrent());
}
于 2015-08-10T19:56:49.047 回答
0

您可以将stem()函数的输出传递给可以在每个单词后output()添加一个字符的函数。" "您必须决定将词干保存在什么数据结构中。然后您将获得类似have have have而不是havehavehave.

于 2015-08-10T19:48:15.320 回答
0

将所有词干保存到 ArrayList 中怎么样?然后您可以遍历 ArrayList 并根据需要进行输出。通过一些简单的修改从您的代码中借用:

englishStemmer english = new englishStemmer();
Scanner inputFile = new Scanner(file); //The text of file is "having have had" or something similar
String[] text = inputFile.nextLine(split("\\s"));
ArrayList<String> stemmedWords = new ArrayList<String>();

for (int i =0; i < text.length; i++){
    english.setCurrent.text([i]);
    english.stem();
    String stem = english.getCurrent();
    stemmedWords.add(stem);
}

for(String stem : stemmedWords){
 System.out.println(stem);
}

或者,

for (int i =0; i < text.length; i++){
        english.setCurrent.text([i]);
        english.stem();
        System.out.print(english.getCurrent())
        System.out.print(" ");
    }
   System.out.println(); //Optionally adds a new line after one complete iteration 
于 2015-08-10T20:01:12.727 回答