拆分和词干化后更正字符串格式

Correct string format after splitting and stemming

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

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

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())
}

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

这样的输出

假设您正在查看的输出是您使用 System.out.print 打印的内容,您只需添加一个结尾的白色 space,如 System.out.print(english.getCurrent() + " "); 如果你想在最后一次迭代中避免白色 space 用 if 语句包装它,如:

if( i < text.length -1 )
{
    System.out.print(english.getCurrent() + " ");
} else {
    System.out.print(english.getCurrent());
}

如何将所有词干词保存到一个 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