所以,除了修剪功能,一切都很好。我不知道它是否有效。实际上我正在使用 ArrayList 制作倒排索引。从文件中获取行,拆分成单词(标记化)并删除标点符号。当我谈到删除停用词的部分时,它与文件中提供的停用词不匹配。我认为这是因为 ArrayList 的每个索引的前导空间。停用词列表:a, is, the, of, all, and, to, can, be, as, once, for, at, am, are, has, have, had, up, his, her, in, on, no, we, do我的策略:String [] TempArray = new String[word.size()];for (int i = 0; i < word.size(); i++) { word.set(i, word.get(i).toLowerCase()); word.set(i, word.get(i).replaceAll("[^a-zA-Z]", ""));} for (int i = 0; i < word.size(); i++) { TempArray[i] = word.get(i); TempArray[i] = TempArray[i].trim(); word.set(i, TempArray[i]); System.out.println(word.get(i));}输出:[a, blunder, by, anton, chekhov, , an, illustration, for, the, story, a, blunder, by, the, author, anton, chekhov, portrait, of, ivan, lazhechnikov...]任何形式的建议将不胜感激!
2 回答
繁华开满天机
TA贡献1816条经验 获得超4个赞
怎么样:
Arrays.stream(TempArray) .filter(s -> s != null) .map(String::trim) .toArray(String[]::new);
这将创建没有前导或尾随空格的新数组。
拉风的咖菲猫
TA贡献1995条经验 获得超2个赞
只是为了扩展一点@Andronicus 的答案,这也会从结果数组中删除空字符串。
Arrays.stream(TempArray) .filter(Objects::nonNull) .map(String::trim) .filter(!String::isEmpty) .toArray(String[]::new);
添加回答
举报
0/150
提交
取消