【发布时间】:2015-08-24 17:47:28
【问题描述】:
如果我有一个字符串,我如何将它拆分成一个单词数组并过滤掉一些停用词?我只想要长度为 2 或更大的单词。
如果我的字符串是
var text = "This is a short text about StackOverflow.";
我可以分开
var words = text.split(/\W+/);
但是使用split(/\W+/),我得到了所有的单词。我可以检查单词的长度是否至少为 2
function validate(token) {
return /\w{2,}/.test(token);
}
但我想我可以使用正则表达式更智能/更快地做到这一点。
我还有一个数组 var stopwords = ['has', 'have', ...] 不应该出现在数组中。
实际上,如果我能找到过滤掉停用词的方法,我可以将所有字母 a、b、c、...、z 添加到停用词数组中,以仅接受至少包含 2 个字符的单词。
【问题讨论】:
-
这可以使用数组和过滤器方法轻松完成,您是否希望使用正则表达式来完成所有这些操作?
-
我不认为
text.split(/\W+/).filter(validate)有什么问题。无需编写过于复杂的正则表达式。 -
你可以用
text.split(/\W+|\b\w\b/)去掉非单词符号和长度小于1的所有单词。
标签: javascript arrays regex split tokenize