我正在尝试处理文本,首先删除停用词并对它们应用词干算法,最后将它们分成单词并将它们保存到文件中。 我做了所有这些,我遇到的问题是文件中包含以下单词的空格:
Hi
teacher
mother
sister
father .... and so on
问题在于老师和母亲之间的空间。 我想删除它。我无法弄清楚它的原因。
以下是相关代码的药水。
public void parseFiles(String filePath) throws FileNotFoundException, IOException {
File[] allfiles = new File(filePath).listFiles();
BufferedReader in = null;
for (File f : allfiles) {
if (f.getName().endsWith(".txt")) {
fileNameList.add(f.getName());
Reader fstream = new InputStreamReader(new FileInputStream(f),"UTF-8");
in = new BufferedReader(fstream);
StringBuilder sb = new StringBuilder();
String s=null;
String word = null;
while ((s = in.readLine()) != null) {
s=s.trim().replaceAll("[^A-Za-z0-9]", " "); //remove all punctuation for English text
Scanner input = new Scanner(s);
while(input.hasNext()) {
word= input.next();
word=word.trim().toLowerCase();
if(stopword.isStopword(word)==true)
{
word= word.replace(word, "");
}
String stemmed=stem.stem (word);
sb.append(stemmed+"\t");
}
//System.out.print(sb);
}
String[] tokenizedTerms = sb.toString().replaceAll("[\\W&&[^\\s]]", "").split("\\W+"); //to get individual terms (English)
for (String term : tokenizedTerms) {
if (!allTerms.contains(term)) { //avoid duplicate entry
allTerms.add(term);
System.out.print(term+"\t");
}
}
termsDocsArray.add(tokenizedTerms);
}
}
//System.out.print("file names="+fileNameList);
}
请帮忙。 感谢
答案 0 :(得分:5)
为什么不使用if来检查该行是否为空?
while ((s = in.readLine()) != null) {
if (!s.trim().isEmpty()) {
...
}
}
答案 1 :(得分:1)
尝试这样的方法来消除所有空行:
String yourText = "teacher\nmother etc..";
String adjustedText = yourText.replaceAll("(?m)^[ \t]*\r?\n", "");
答案 2 :(得分:1)
在你的while循环中也添加这个条件,
while((s = in.readLine())!= null&&(!(StringUtils.isBlank(s)))){
//你的逻辑在这里。 }