performance - 提高文本匹配性能的数据结构

标签 performance algorithm nlp time-complexity categorization

我正在努力将一些文本归类到最适合该文本的类别中。作为第一步,我正在编写一个简单的文本匹配代码。 我正在将文本集中的一段文本中的单词与指示某些类别的单词进行比较。

这个简单搜索的复杂度变得太大了 O(n^4)!

文本:许多好莱坞电影都很棒。电影爱好者沉迷于他们。 (n个词在1个句子和m个这样的句子中)

类别可以是:电影、歌曲、体育等(p 个类别,每个类别有 x 个单词)

电影的指示词-[电影、电影院、电影...](一个类别的 x 个词)

因此,搜索时间变为 O(m *n * p * x),这可能太大了。

你能建议我一些数据结构/方法来解决简化复杂性的问题吗?

最佳答案

有一种算法叫做Aho–Corasick字符串匹配算法,它是基于trie的,对于一个类别,它可以检查类别中的词是否出现在文本中。

你可以建立 p 次尝试,它会比 O(m * n * p * x) 表现得更好。 (我认为将是 O(p * m * (n + x) ) )

这里是 Aho–Corasick_string_matching_algorithm

关于performance - 提高文本匹配性能的数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27421014/

相关文章:

python - 多次使用 min() 还是将其存储在变量中对性能更好?

java - 我应该如何改进DFS Java实现来解决这个问题?

python - 如何在 Python 3 中将迭代过程扩展到大尺寸

python - Spacy:保存解析后的模型

haskell - Facebook 的小鸭子无法正确识别时间维度

python - 使用 PIL 或 cv2 等模块在 python 中捕获屏幕的最有效方法是什么?因为它占用了很多内存

java - 如何测量 jit 编译开销

location - 使用 NLP 框架识别部分/完整地址

javascript - 向下滑动时反转 slider

c - 排序算法部分起作用