n-gram(n> 3)何时重要,而不仅仅是bigrams或trigrams?

时间:2012-04-23 18:20:55

标签: nlp data-mining nltk n-gram

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

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

5 个答案:

答案 0 :(得分:3)

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

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

这些是我的头脑,但还有更多列出on Wikipedia

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

答案 1 :(得分:3)

考虑更高阶n-gram的(非常规)方法可以通过连接到非标准化autocorrelation function来完成,即信号与其自身的相关性。 2克语料库将测量单词与单个单词的“时间”-lag的相关性,而3-gram可以为我们提供两个步骤的“时间”-lag的信息。高阶n-gram给出了特定语料库(即em emy Dick 或人类DNA)的概率分布的度量。这样,如果n-gram与null期望值不同,那么该值的n值就会有有用的统计信息。

答案 2 :(得分:3)

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

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

但是你所有的例子都涉及到namsms这个词,我想不出任何找到 n>的作品。 3 在该域中有用。我不认为这是计算成本或找到足够的训练数据的问题:语言中的表面自相关似乎在3个字左右后逐渐消失。随机示例:this article尝试根据基于ngram的信息内容重新解释Zipf定律。他们认为 n 最多为4,但获得了三元组计数的最高整体相关性。

我不是说 n> 3 有用;但是你的观察结果似乎并不多见。

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

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

正如您所看到的,这只需要 O(L)步骤,即它与语料库的大小呈线性关系,并且不会随着 n 而增长。所以收集任何维度的ngrams都不是问题。但可能的ngrams数量迅速增加。为了说明,如果你区分32个字母标记(字母和一些标点符号类),则有1024个字母的bigrams但是1048576四个字符。要找到足够的数据来填充频率表,您需要指数级更多的文本。

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

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

答案 3 :(得分:2)

除了Kaganar的回答:

任何类型的stylometric analysis(例如,基于书写风格的作者简介,或试图检测文本的时代)将需要更长的n-gram来进行浅层语法分析。通常,这些方法可以通过基于PCFGTAG等的深层语法分析来补充。

答案 4 :(得分:0)

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