我正在试图使这种效率更高,因此与我一起裸露。如果包含在结尾的特定列表中,则删除单词结尾
我正在处理的问题是,如果结尾在特定列表中,我需要删除结尾的单词。
即假设该列表是:
{ical, ic,ion,ogy} //the actual list is a handful of elements (almost ~20)
我需要做的是,当我遇到一个句子像这样:
Hello world, this sentence is magic. Because we will talk about Biology.
将减少到:
Hello world, this sentence is **mag** . Because we will talk about **Biol** .
做到这一点的最简单方法是遍历句子中的单词,并检查每个结尾是否与元素i匹配列表中...但这是非常昂贵的。
有没有更简单的方法来达到上述目的?
*另*
你可以用一个大的正则表达式做到这一点:
(?<=([a-zA-Z]))(ic|ical|ics|raphy|raphic|raphical|ion|ions|ional|ive|ivity|ity|ities|ische|ischen|ischer|isches|ogy|ogic|ogical|omy|omic|omics|omical)(?=(\b))
你的句子会有多大?如果您的结尾列表仅包含〜20个元素,性能不应该太差。 – arshajii
网络I/O操作,数据库查询非常昂贵。你所描述的操作可能会比较贵一些。如果需要多次,这可能是您希望缓存的结果......但无论如何,我认为解决问题的方法并不比您提议的方法更有效。 – scottb
在任何情况下,它似乎至少比正则表达式匹配近20个结局... – Guillaume