我有一个包含很多单词的字符串,我需要计算。
但我想避免一些对上下文没有意义的词。
所以,我有一个文件,其中包含我将忽略的所有单词。我打开这个文件并创建一个列表,我称之为
ArrayList<String> stopWordsList;
现在我有了字符串,需要清理它,从列表中删除停用词。
我试过这样的:
String example = "Job in a software factory. Work with Agile, Spring, Hibernate, GWT, etc.";
for(String stopWord : stopWordsList){
example = example.replaceAll(" "+ stopWord + " ", " ");
}
在此之后,字符串示例应该是:
"Job software factory. Work Agile, Spring, Hibernate, GWT, ."
问题是“等”。没有删除它,因为单词后面有一个点。
然后我尝试了:
for(String stopWord : stopWordsList){
example = example.replaceAll(" "+ stopWord + " ", " ");
example = example.replaceAll(" "+ stopWord + ",", ",");
example = example.replaceAll(" "+ stopWord + ".", ".");
}
但是,这是不对的,它不能满足我的需要。
谁能帮我找到一种方法来清理这个字符串,包括标点符号或空格之前的单词。
PS:我不能随便做
example = example.replaceAll(stopWord, " ");
因为这可以打破一些像“initial”这样的词。它会删除“in”并留下“initial”。
最佳答案
最简单的方法可能是沿单词边界拆分字符串并添加除停用词之外的所有内容。
StringBuilder result = new StringBuilder(example.length());
for (String s : result.split("\\b")) {
if (!stopWordsSet.contains(s)) result.append(s);
}
关于java - 从 Java 中的字符串中删除停用词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23206915/