Rez*_*M.A 8 c# regex lookup named-entity-recognition string-matching
想象一下,你有数百万条包含平均2000个单词(每个)的文本的记录,而且你还有另一个包含大约100000个项目的列表.
例如:在关键词列表中你有一个像"奥巴马总统"这样的项目,在其中一个文本记录中你有这样的事情:".....总统奥巴马......",所以我想找到这个关键词在文中用一些像这样的东西替换它:"..... {奥巴马总统} ...."为了突出显示文本中的关键字,关键字列表包含多名词的例子.
在拥有数百万条文本记录的庞大列表中,最快的方法是什么?
笔记:
现在我以贪婪的方式完成这项工作,逐字检查并匹配它们,但每个文本记录大约需要2秒钟,我想要零时间附近的东西.
我也知道这就像命名实体识别一样,我使用了很多NER框架,比如Gate和...,但是因为我想要这个框架不支持的语言,我想手动这个.
假设:大多数关键词是单词,但也有一些多词关键词。
我的建议。
根据第一个单词对关键字进行哈希处理。因此“President”、“President Obama”和“President Clinton”都将哈希为相同的值。
然后通过计算哈希值逐字搜索。在哈希匹配上实现逻辑来检查多字关键字是否匹配。
计算哈希值将是该解决方案中最昂贵的操作,并且应该与输入字符串的长度呈线性关系。