我有一个文本文件,我正在尝试使用词干分析器。
一个词干分析器删除后缀的单词。例如,"已经拥有"将会"已经拥有"在堵塞过程之后。为了做到这一点,必须拆分字符串,因为词干分析器一次只能处理一个单词。在分裂和阻塞之后,输出看起来像这样:"已经有了。"如何将其恢复为正确的格式?
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())
}
答案 0 :(得分: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());
}
答案 1 :(得分:0)
您可以将stem()
函数的输出传递给output()
函数,在该函数中可以在每个单词后添加" "
个字符。你必须决定用什么数据结构来保存词干。然后你会得到have have have
而不是havehavehave
的输出。
答案 2 :(得分: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