0

我正在做一个约会书项目,我的主要想法是用“ngram”来做。我在这里输入http://books.google.com/ngrams,我发现 ngrams 具有最明确的图表(多年来的值不稳定)。然后我在 python 中编写了一个“阅读”书籍的代码——它获取书籍、一些 ngram,然后计算 ngram 在文本上的频率。例如,文本“用爆炸性的大爆炸灭绝所有人类”中的 ngram “ex”将是 0.05263157894736842,因为该文本中有 2 个“ex”,并且有 38 种可能的 2 字母组合,所以我认为 ngram 将是2/38。

所以我对很多 1 克(ABC)的书进行了这个计算,我得到的所有书的数字或多或少都相同。然后我回到谷歌的 ngram,显然我得到的数字和他们得到的数字完全不同。例如,1gram "a" 大约是 0.078,b 是 0.0135 等等,但是 Google 的 ngram 是 [a=1.54] 和 [b=0.0066]...

我得出的结论是我的计算完全错误。现在,我问你ngram 的真实计算是什么。我真的需要理解这一点,所以请,如果你知道这件事是如何工作的,请告诉我。

非常感谢 :)

回答后编辑:我确实得到了比 Google 更高的值,因为我的值是概率(0 到 1),所以如果我想将此值转换为 %,我必须乘以 100,这是有道理的,因为还有更多在英语中,“a”(8%)作为字母比“a”作为单词。

4

2 回答 2

1

您确定您从 Google 报告的价值吗?频率范围从 0 到 1,您引用 1.54 作为其结果。如果我是你,我会检查的。

http://en.wikipedia.org/wiki/Letter_frequency

这表示该字母a的频率为 0.08167。

您还应该意识到这个频率是基于特定样本的。您假设随着样本量变得足够大,字母出现的频率接近真实值。

当我听到 n-gram 时,我通常会想到单词。1-gram 是一个单词(例如“apple”);三元组是三个词(例如“我们人民”)。

于 2013-05-26T14:57:48.983 回答
0

好的,所以我做了一些研究,@duffymo 实际上是对的。不管是单词还是字母,Google 的 Ngram Engine 都会以单句的形式进行搜索。例如,如果我写“a”,它会将“a”(带有空格)作为一个单词进行搜索。

我对代码进行了一些更改,现在我得到了与 Google 相同的结果。

谢谢!

于 2013-05-29T07:00:31.073 回答