- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我有数百万个数组,每个数组包含大约五个字符串。我试图从数组中删除所有“垃圾词”(因为缺乏更好的描述),例如所有演讲文章,“to”、“and”、“or”、“the”、“a”等等。
例如,我的一个数组有这六个字符串:
"14000"
"Things"
"to"
"Be"
"Happy"
"About"
我想从数组中删除 "to"
。
一个解决方案是:
excess_words = ["to","and","or","the","a"]
cleaned_array = dirty_array.reject {|term| excess_words.include? term}
但我希望避免手动输入每个多余的单词。有谁知道可以在此过程中提供帮助的 Rails 函数或助手?或者可能是一系列已经写好的“垃圾词”?
最佳答案
处理停用词很容易,但我建议您在将字符串拆分为组成词之前进行处理。
构建一个相当简单的正则表达式可以简化单词的工作:
STOPWORDS = /\b(?:#{ %w[to and or the a].join('|') })\b/i
# => /\b(?:to|and|or|the|a)\b/i
clean_string = 'to into and sandbar or forest the thesis a algebra'.gsub(STOPWORDS, '')
# => " into sandbar forest thesis algebra"
clean_string.split
# => ["into", "sandbar", "forest", "thesis", "algebra"]
如果你已经拆分了它们,你如何处理它们?我将 join(' ')
数组以将其变回字符串,然后运行上面的代码,它再次返回数组。
incoming_array = [
"14000",
"Things",
"to",
"Be",
"Happy",
"About",
]
STOPWORDS = /\b(?:#{ %w[to and or the a].join('|') })\b/i
# => /\b(?:to|and|or|the|a)\b/i
incoming_array = incoming_array.join(' ').gsub(STOPWORDS, '').split
# => ["14000", "Things", "Be", "Happy", "About"]
您可以尝试使用 Array 的集合操作,但您会与单词的大小写敏感性发生冲突,迫使您遍历停用词和数组,这将导致运行速度变慢。
查看这两个答案,了解一些关于如何构建非常强大的模式以轻松匹配数千个字符串的额外提示:
关于ruby-on-rails - 从字符串或字符串数组中删除多余的垃圾词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27825026/
我的服务层有如下方法 public ModuleResponse GetModules(ModuleRequest request) { var response = new ModuleRe
我构建的工具栏与大多数工具栏一样,minHeight 设置为 actionBarSize: 但是,如果我删除这个属性,就完全没有区别了。工具栏保持其 actionBarSize,即使我删除菜单并将
我已经为 SVG 和剪辑路径苦苦挣扎了一段时间。 我正在尝试创建一个三 Angular 形剪辑路径,它将覆盖照片以给顶部一个“三 Angular 形”边缘。 我试图实现与照片完全相同的效果,但三 An
我有一个带有 2 个索引的 PostgreSQL 表。其中一个索引涵盖了 website_id 和 tweet_id 列,是一个唯一的 B 树索引。第二个索引只覆盖 website_id 列,是一个非
我是一名优秀的程序员,十分优秀!