9

考虑到计算它们的计算开销,我只是想知道 n-gram (n>3) (及其出现频率)的用途是什么。是否有任何应用程序中二元组或三元组根本不够用?

如果是这样,n-gram 提取的最新技术是什么?有什么建议么?我知道以下几点:

4

5 回答 5

3

我不熟悉这里列出的大量标签,但是 n-gram(抽象概念)通常与统计模型相关。因此,这里有一些不仅限于二元组和三元组的应用程序:

  • 压缩算法(尤其是 PPM 变种),其中克的长度取决于可用于提供特定上下文的数据量。
  • 近似字符串匹配(例如 BLAST 用于基因序列匹配)
  • 预测模型(例如名称生成器)
  • 语音识别(音素图用于帮助评估当前音素被识别的可能性的可能性)

这些是我想不到的,但维基百科上列出的还有更多。

至于“最先进的”n-gram 提取,不知道。N-gram“提取”是一种临时尝试,旨在加速某些过程,同时仍保持 n-gram 样式建模的好处。简而言之,“最先进的”取决于您要做什么。如果您正在查看模糊匹配或模糊分组,这取决于您匹配/分组的数据类型。(例如街道地址将与模糊匹配与名字非常不同。)

于 2012-04-23T18:43:40.690 回答
3

一种考虑高阶 n-gram 的(非常规)方法可以通过连接到非归一化自相关函数来完成,即信号与其自身的相关性。2-gram 语料库将测量单词与单个单词的“时间”滞后的相关性,而 3-gram 可以为我们提供两步“时间”滞后的信息。高阶 n-gram 给出了特定语料库(无论是Moby Dick还是人类 DNA)的概率分布的度量。这样,如果一个 n-gram 与空期望值不同,那么对于 n 的值就有有用的统计信息。

于 2012-04-23T19:02:54.653 回答
3

我认为您的问题提出的不太正确:Ngrams 是一种工具,而不是要解决的问题,因此 ngrams 中没有“最先进的技术”。正如@Hooked 指出的那样,ngram 是一种自相关函数(或“自回归函数”)。所以你真正想知道的是,如果有任何问题,最先进的解决方案涉及长 ngram。

对于拟合金融或天气模型或语音识别等数值应用,您肯定会使用维度> 3的向量。例如,自回归隐马尔可夫模型拟合最后n次测量的分段函数,如果过去的状态与预测未来相关,则n可以适度大。

但是您所有的示例都涉及单词 ngram,我想不出任何发现n > 3在该领域有用的工作。我不认为这是计算成本或找到足够训练数据的问题:语言中的表面自相关似乎在 3 个单词左右后逐渐消失。随机示例:本文试图从基于 ngram 的信息内容方面重新解释 Zipf 定律。他们认为n最多为 4,但三元组计数的总体相关性最高。

我并不是说n > 3没有;但是你观察到它似乎没有出现太多是有根据的。

但请注意,在文本中计算 ngram 的复杂性不是问题:如果您有一个长度为 L 的标记化语料库,您可以像这样收集语料库的所有 ngram:

    for i in range(0, L-n):
        tuple = corpus[i:i+n]
        ngrams[tuple] += 1

如您所见,这只需要O(L)步,即它与语料库的大小呈线性关系,并且不会随n增长。因此,收集任何维度的 ngram 都不是问题。但是可能的 ngram 数量迅速增加。举例来说,如果你区分 32 个字母标记(字母和一些标点符号类),则有 1024 个字母二元组,但有 1048576 个四元组。要找到足够多的文本来填充频率表,您需要成倍增加的文本。

对于单词 ngram,稀疏性问题更加严重,因为您不仅有超过32 个不同的单词标记,而且词汇量随着语料库的大小(缓慢)增加:著名的“长尾”属性。因此,无论您收集多大的语料库,您的数据都将是稀疏的(即使是小的n也是如此)。然后,您需要拟合复杂的统计模型,其计算成本取决于不同 ngram 的数量。

因此,稀疏性始终是 word ngram 应用程序中的一个问题(因此“平滑”通常是必要的)。如果你用谷歌搜索“ngram sparsity”,你会发现大量的参考资料。

于 2012-04-30T10:33:54.603 回答
2

除了Kaganar的回答:

任何类型的文体分析(例如,基于写作风格的作者分析,或者试图检测文本的时代)都需要更长的 n-gram 来进行浅层句法分析。通常这些方法由基于PCFGTAG等的深度句法解析来补充。

于 2012-04-23T20:34:45.490 回答
0

如果您的数据集非常大,您也可以使用 n>3 语言模型。

于 2017-05-30T10:41:37.270 回答