2013-05-26 75 views
0

我正在做一個約會書的計劃,我的主要想法是用「ngram」來完成。 我在這裏輸入了http://books.google.com/ngrams,我發現了具有最明確圖表的ngrams(多年來未知值)。然後我在python中編寫了一個代碼,用於「讀取」書本 - 它將本書,一些ngrams,然後計算文本中ngram的frequanty。例如,文中「用爆炸性宏偉擊殺所有人」中的ngram「ex」將爲0.05263157894736842,因爲本文中有2個「ex」,並且有38個可能的2字母組合,所以我認爲ngram會是2/38。Ngram的計算是什麼?

因此,我在1gram(ABC)的很多書上做了這個計算,並且我對所有的書都得到了或多或少的相同數字。然後我回到谷歌的ngram,顯然我得到的數字和他們得到的數字完全不同。例如,1克的「a」大約是0.078,b是0.0135,所以一個,但Google的ngram是[a = 1.54]和[b = 0.0066] ...

我得出了我得到的結論這個計算全錯了。現在,我在問你怎樣計算ngram的REAL。我真的需要了解這一點,所以請,如果你知道這件事情如何工作,請讓我知道。

非常感謝:)

編輯回答後:我真的得到了比谷歌更高的價值,因爲我valuse的概率(0比1),所以如果我想轉換此值%的我不得不乘以100,這是有道理的,因爲在英語中有更多的「a」(8%)作爲一個字母而不是「a」作爲一個單詞。

+0

您正在計算字符正例數統計。 Google使用單詞n-gram。 –

回答

1

您確定要從Google報告的價值?頻率範圍從0到1,你引用1.54作爲結果。我會檢查,如果我是你。

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

這是說信a具有0.08167的頻率。

你也應該認識到這個頻率是基於一個特定的樣本。假設樣本量變得足夠大,字母出現的頻率接近真實值。

我通常在聽到n-gram時會想到單詞。 1克是一個單詞(例如「蘋果」);三克是三個詞(例如「我們的人」)。

+0

- 你確定1克是一個單詞嗎? -謝謝,我會閱讀有關信frequncy,但我仍然認爲n-gram是最好的選擇,因爲我有谷歌的頻率與年份的圖表,它會真正幫助我約會這些書。問題是我不明白他們的計算,所以我沒有得到相同的數字... - 我也想使用2克,3克或4克(我的意思是2,3和4個字母的組合),但是我也看到我的數值和谷歌數值之間的差異,2克。 – Doron

+0

我不想使用恆定值,因爲我想約會書籍,所以我想知道N-gram的頻率差異。 – Doron

+0

是的,我確定n-grams指的是單詞以及信件。 – duffymo

0

好吧,所以我做了一些研究,@duffymo其實是對的。 無論它是一個字還是一個字母都沒關係,Google的Ngram Engine會以一個標語短語的形式搜索它。例如,如果我寫「a」,它會搜索「a」(帶空格)作爲單個單詞。

我對代碼進行了一些更改,現在我得到的結果與Google相同。

謝謝!