gpt4 book ai didi

ruby - 使用 ruby​​ 将大量关键字与字符串匹配

转载 作者:太空宇宙 更新时间:2023-11-03 16:19:43 26 4
gpt4 key购买 nike

我一方面有很多文本文档,另一方面有大量关键字(字符串)列表。现在我很感兴趣,文档中包含这些关键字中的哪些。

目前我正在使用一个巨大的自动生成的正则表达式:

keywords = %w(Key1, Key2, Key3)
regx = Regexp.new('\b(' + keywords.join('|') + ')\b','i')
documents.each |d|
d.scan(regx)
end

这对于包含几百个关键字的列表非常有效,但现在我使用了大约 50000 个关键字,而且速度变慢了太多。

是否有使用 ruby​​ 执行此类操作的更好方法?

编辑:

  • 文档是典型的新闻文章,例如您可以通过 google 新闻找到的关于最近体育赛事的新闻。在我的测试集中,每篇文章包含大约 1000 个单词
  • 关键字可以是单个词,也可以是包含多个词的短语,例如“Franz Beckenbauer”或“Russel Wilson”。
  • 我只对完整匹配感兴趣 - 所以搜索“diction”应该只匹配“diction”,而不是“dictionary”

最佳答案

将关键字列表转换为散列:

h = {
"foo" => true,
"bar" => true,
...
"baz" => true,
}

然后,逐 block 读取文档(以空格分隔):

File.new("/path/to/file").each(" ") do
|ws| ws.scan(/[\w']+/) do
|w| if h.key?(w)
# Found.
end
end
end

关于ruby - 使用 ruby​​ 将大量关键字与字符串匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36205271/

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