我有一组短信。让我们打电话给他们吧m1, m2, ....。消息的最大数量如下1,000,000。每条消息1024的长度都低于字符,并且全部为小写。我们还可以选择一个 n-gram s1。
我需要从所有这些消息中找到所有可能的子字符串的频率。例如,假设我们只有两条消息:
m1 = a cat in a cage
m2 = a bird in a cage
Run Code Online (Sandbox Code Playgroud)
这两条消息中某些 n 元语法的频率:
'a' = 4
'in a cage' = 2
'a bird' = 1
'a cat' = 1
...
Run Code Online (Sandbox Code Playgroud)
请注意,由于in = 2、 、in a = 2和a cage = 2是 和 的子集in a cage = 2,并且具有相同的频率,因此不应列出它们。只取最长的、频率最高的;遵循以下条件:最长的 sn-gram 最多由 8 个单词组成,总字符数低于 30。如果 n-gram 超过此限制,则可以将其分解为两个或多个 n-gram 并单独列出。 …