【发布时间】:2014-06-06 01:54:34
【问题描述】:
我有一个字符串,里面有很多单词需要数数。
但我想避免一些对上下文没有意义的词。
所以,我有一个文件,其中包含我将忽略的所有单词。我打开这个文件并创建一个我称之为的列表
ArrayList<String> stopWordsList;
现在我有了字符串,需要清理它,从列表中删除 stopWords。
我试过这样:
String example = "Job in a software factory. Work with Agile, Spring, Hibernate, GWT, etc.";
for(String stopWord : stopWordsList){
example = example.replaceAll(" "+ stopWord + " ", " ");
}
在此之后,字符串示例应该是:
“Job 软件工厂。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, " ");
因为这会破坏一些像“初始”这样的词。它将删除“in”并让我保持“initial”。
【问题讨论】:
-
您可以将正则表达式与前瞻和后视一起使用。或者标记您的文本,删除停用词并将标记重新组合成一个连续的字符串。
-
需要保留标点符号吗?
-
我尝试使用 StringTokenizer,但它会将单词与标点符号分开,然后我又回到了同样的问题。什么是“单词”或“单词”的正则表达式,后跟标点符号,例如“单词”。或“单词”或“单词:”?
-
是的@ArunAllamsetty。我需要保留标点符号。我无法删除它。
标签: java regex stop-words