Как рассчитывается Ngram?

Я делаю проект книг о свиданиях, и моя главная идея состоит в том, чтобы сделать это с помощью «ngram». Я ввел сюда http://books.google.com/ngrams и нашел ngrams с наибольшим однозначные графики (непостоянная величина по годам). Затем я написал код на питоне, который «читает» книги — он берет книгу, какие-то нграммы, а затем вычисляет частоту нграмм по тексту. Например, энграмма «экс» в тексте «уничтожить всех людей с помощью взрывчатых веществ» будет равна 0,05263157894736842, потому что в этом тексте 2 «экс» и 38 возможных комбинаций из двух букв, поэтому я подумал, что энграмма будет 2/38.

Итак, я сделал этот расчет для многих книг с 1 граммом (ABC) и получил более или менее одинаковые числа для всех книг. А потом я вернулся к ngram от Google, и оказалось, что цифры, которые я получил, и цифры, которые получили они, были совершенно разными. Например, 1 грамм «a» был около 0,078, b — 0,0135 и так далее, но ngram Google был [a = 1,54] и [b = 0,0066]...

Я пришел к выводу, что я ошибся в этом расчете. Теперь я спрашиваю вас, каков РЕАЛЬНЫЙ расчет ngram. Мне действительно нужно понять это, поэтому, пожалуйста, если вы знаете, как это работает, пожалуйста, дайте мне знать.

Большое спасибо :)

Изменить после ответа: я действительно получил более высокие значения, чем Google, потому что мое значение - это вероятность (от 0 до 1), поэтому, если я хочу преобразовать эти значения в%, мне нужно умножить на 100, и это имеет смысл, потому что есть больше «а» (8%) как буква в английском языке, чем «а» как слово.


person Doron    schedule 26.05.2013    source источник
comment
Вы вычисляете статистику n-грамм символов. Google использует словесные n-граммы.   -  person Fred Foo    schedule 27.05.2013


Ответы (2)


Вы уверены в ценности, о которой сообщаете из Google? Частоты варьируются от 0 до 1, и вы указываете 1,54 как их результат. Я бы проверил это на вашем месте.

http://en.wikipedia.org/wiki/Частота_букв

Это говорит о том, что буква a имеет частоту 0,08167.

Вы также должны понимать, что эта частота основана на конкретном образце. Вы предполагаете, что частота появления буквы приближается к истинному значению, когда размер выборки становится достаточно большим.

Я обычно думаю о словах, когда слышу n-gram. 1 грамм — это одно слово (например, «яблоко»); триграмма состоит из трех слов (например, «Мы, люди»).

person duffymo    schedule 26.05.2013
comment
-Вы уверены, что 1 грамм - это отдельное слово? -Спасибо, я почитаю о частоте письма, но я все еще думаю о n-грамме как о лучшем варианте, потому что у меня есть графики частоты в зависимости от лет от Google, и это действительно помогло бы мне датировать книги. Проблема в том, что я не понимаю их вычислений и поэтому не получаю одинаковых чисел... -Я хочу использовать также 2-граммы, 3-граммы или 4-граммы (под этим я подразумеваю комбинации 2, 3 и 4 буквы), но я также увидел разницу между моими значениями и значениями Google с 2-граммами. - person Doron; 27.05.2013
comment
Я не хочу использовать постоянное значение, потому что я хочу датировать книги, поэтому я хочу знать разницу в частоте N-грамм с годами. - person Doron; 27.05.2013
comment
Да, я уверен, что n-граммы относятся как к словам, так и к буквам. - person duffymo; 27.05.2013
comment
N-граммы можно вычислять как на уровне символов, так и на уровне слов; какой из них подходит, зависит от задачи. - person Fred Foo; 27.05.2013

Итак, я провел небольшое исследование, и @duffymo оказался прав. Неважно, слово это или буква, Google Ngram Engine будет искать его в виде знаковой фразы. Например, если я напишу «а», он будет искать «а» (с пробелами) как одно слово.

Я внес некоторые изменения в свой код, и теперь я получаю те же результаты, что и Google.

Спасибо!

person Doron    schedule 29.05.2013