Проблемы реализации сглаживания Гуда-ТьюрингаPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Проблемы реализации сглаживания Гуда-Тьюринга

Сообщение Anonymous »

Я хочу реализовать метод сглаживания Гуда-Тьюринга, который улучшит мою языковую модель.

Давайте начнем с теории (для простоты рассмотрим модель униграммы).

Есть корпус (например, литературное произведение или любой большой текст). С его помощью мы строим языковую модель. После того, как мы его построили, мы можем найти вероятность появления слова. Эту модель я создал с помощью MLE (оценка максимального правдоподобия) с высоким значением недоумения (значение качества построенной модели, высокое значение — плохо).

Я нашел способ улучшить его с помощью сглаживания Гуда-Тьюринга:

[img]https://i.sstatic .net/8X20F.gif[/img]


Изображение


Здесь:

Код: Выделить всё

P - the probability of use of the word
c - the number of use of the word
N_c - the count words with a frequency - c
N - the count words in the corpus
Мой код на Python 3:

Код: Выделить всё

def good_turing(tokens):
N = len(tokens) + 1
C = Counter(tokens)
N_c = Counter(list(C.values()))
assert(N == sum([k * v for k, v in N_c.items()]))
default_value = N_c[1] / N
model = defaultdict(lambda: default_value)
types = C.keys()
B = len(types)
for _type in types:
c = C[_type]
model[_type] = (c + 1) * N_c[c + 1] / (N_c[c] * N) # Exception - "math domain error"
return model
Здесь проблемы:
  • слово с частота c + 1 не может быть в корпусе, поэтому мы пытаемся
    взять log(0) и получить Math Domain Error
  • как рассчитать вероятность наиболее часто используемого слова после сглаживания?
После прочитав несколько статей, мое изучение этой темы пришло к построению следующих формул:

[img]https://i.sstatic .net/LuTFg.gif[/img]


Итак, главный вопрос: как получить эту функцию E ?
Я нашел это:

Изображение


но я не знаю, как искать коэффициенты a и b в scipy или т. д.

Подробнее здесь: https://stackoverflow.com/questions/396 ... n-problems
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Таблица переходов машины Тьюринга для проверки палиндрома
    Anonymous » » в форуме Python
    0 Ответы
    38 Просмотры
    Последнее сообщение Anonymous
  • Алгоритм создания машины Тьюринга из регулярного выражения
    Anonymous » » в форуме JAVA
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • Алгоритм Тьюринга [закрыто]
    Anonymous » » в форуме C#
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Сложность сглаживания двоичного сигнала в Python
    Anonymous » » в форуме Python
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Как реализовать матрицу, представляющую разности второго порядка, для решения сглаживания Уиттекера?
    Anonymous » » в форуме JAVA
    0 Ответы
    33 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»