gpt4 book ai didi

java - 如何找到文本中复合词的出现

转载 作者:行者123 更新时间:2023-11-29 03:35:20 24 4
gpt4 key购买 nike

我正在尝试查找特定单词或复合词在文本中的出现情况。

例如,文字是“祝你生日快乐”我必须匹配的短语是“生日快乐”。

我有一个需要与输入文本匹配的单词/短语字典。这本词典由大约 3000 个单词/复合词组成。需要分析的文本数量可能会有所不同。现在我正在使用正则表达式。\b+phrase+\b.。这给了我正确的答案,但速度很慢。

此外,在文本中找到的单词可能会在前面或后面加上特殊字符,如 !、:、。等

虽然 text.contains() 速度很快,但我不能使用它,因为即使是单词的一个子集,它也会返回 true。有什么方法可以更快地做到这一点?

最佳答案

您可以将字符串拆分为单词数组并使用 Knuth-Morris-Pratt algorithm , 但不是比较字符串中的字符,而是比较数组中的单词。

例如字符串:

i bought a hat in manhattan

拆分成数组:

S = {"i","bought","a","hat","in","manhattan"}

如果您要查找单个单词,只需将您要查找的单词与此数组中的每个单词进行比较即可。

如果您要查找一系列单词,例如:

W = {"a","hat","in"}

使用 KMP。明确地,引用维基百科定义的算法,如上设置 S 和 W,当算法声明 if W[i] = S[m + i] 时,您可以通过以下方式在 java 中实现它:

if(W[i].equals(S[m+i]))

关于java - 如何找到文本中复合词的出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15875773/

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