gpt4 book ai didi

ruby-on-rails - 从字符串或字符串数​​组中删除多余的垃圾词

转载 作者:数据小太阳 更新时间:2023-10-29 08:26:56 25 4
gpt4 key购买 nike

我有数百万个数组,每个数组包含大约五个字符串。我试图从数组中删除所有“垃圾词”(因为缺乏更好的描述),例如所有演讲文章,“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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com