假设您有数百万条记录,其中包含平均 2000 个单词(每条)的文本,并且您还有一个包含大约 100000 个项目的其他列表。
例如:在关键字列表中,你有一个像“奥巴马总统”这样的项目,在一个文本记录中,你有这样的东西:“......奥巴马总统......”,所以我想在文本中找到这个关键字并将其替换为这样的东西:“..... {president Obama} ....”以突出文本中的关键字,关键字列表包含多名词词,如示例。
在如此庞大的包含数百万文本记录的列表中,最快的方法是什么?
注意事项:
现在我用贪婪的方式做这个工作,逐字检查并匹配它们,但是每条文本记录大约需要 2 秒,我想要一些接近零时间的东西。
<此外,我知道这类似于命名实体识别,我使用过许多 NER 框架,例如 Gate 和...,但因为我想将其用于框架不支持的语言我想手动执行此操作。
最佳答案
假设:大多数关键词是单词,但也有一些多词关键词。
我的建议。
根据第一个词散列关键字。所以“President”、“President Obama”和“President Clinton”都将散列为相同的值。
然后通过计算哈希值逐字搜索。哈希匹配实现逻辑以检查您是否匹配多词关键字。
计算哈希将是该解决方案中成本最高的操作,并且应该与输入字符串的长度成线性关系。
关于c# - 将大字符串中的子字符串匹配到大量关键字列表的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20211380/