分割和词干后纠正字符串格式

时间:2015-08-10 19:42:30

标签: java string split porter-stemmer

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

一个词干分析器删除后缀的单词。例如,"已经拥有"将会"已经拥有"在堵塞过程之后。为了做到这一点,必须拆分字符串,因为词干分析器一次只能处理一个单词。在分裂和阻塞之后,输出看起来像这样:"已经有了。"如何将其恢复为正确的格式?

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

3 个答案:

答案 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