Как нормализовать вероятности слов в предложениях разной длины?

Допустим, у нас есть модель RNN, которая выводит вероятность слова с учетом контекста (или без контекста), обученного на корпусе. Мы можем связать вероятность каждого слова в последовательности, чтобы получить общую вероятность самого предложения. Но поскольку мы цепляемся, вероятность (или правдоподобие) предложения снижается по мере увеличения его длины. Это тот же случай, даже если мы используем логарифмические вероятности.

Можем ли мы как-то нормализовать эти вероятности? Это интересная подзадача, с которой я столкнулся при построении языковой модели. У меня есть корпус из 9 миллионов предложений, длина которых варьируется от 2 до 30. Но все предложения действительны, и я использую их в качестве корпуса для обучения LM.

Теперь я беру подмножество данных и вношу в него изменения, например перетасовываю или разрезаю предложение пополам, добавляю или добавляю случайное слово и так далее. Это делается для создания «фальшивого предложения», которое не обязательно должно быть действительным. Что я хотел бы сделать, так это получить какой-то порог для вероятности всех действительных предложений, а затем, когда я использую RNN для вычисления вероятности поддельного предложения, он должен быть значительно меньше или отличаться от вычисленного порога.

тлдр; такие предложения, как

"the cat sat on the red mat"
"the cat sat on a mat"
"a cat sat on the red mat with brown coffee stains"

все должны иметь сопоставимую вероятность/оценку/метрику, в то время как такие предложения, как

"cat cat mat on the brown red sat is"
"not mat in door on cat"

имеют более низкий балл.


person Sanjay Krishna    schedule 02.03.2018    source источник


Ответы (1)


Вы можете ввести специальное слово END-OF-SENTENCE и предсказать его вероятность вместе с остальными словами. В этом случае вы сможете правильно смоделировать распределение по длине предложений. В упражнении 4 есть хороший пример из книги по НЛП Джурафски. .

Действительно, предложение «Кошка сидела на красной циновке с коричневыми кофейными пятнами КОНЕЦ» более вероятно, чем «Кошка сидела на красной циновке с КОНЦОМ», просто потому, что предложения редко заканчиваются на «с». И если ваш RNN достаточно хорош, он это отразит.

Если вы все еще хотите нормализовать вероятности предложений, вы можете рассчитать затруднение (средняя логарифмическая вероятность на слово), как в этот вопрос, где концепция показана с помощью простой 1-граммовой модели.

person David Dale    schedule 02.03.2018
comment
Спасибо за отличные советы. Хотя я определенно думаю, что мне нужно нормализовать, потому что распределение слов в корпусе, над которым я работаю, сумасшедшее. В то время как самые популярные слова встречались несколько тысяч раз, наименее популярные слова встречались только один раз, и предложения, в которых есть эти менее часто встречающиеся слова, также действительны. При сочетании этого факта с различной длиной вероятности быстро падают до 0, что превосходит цель LM. Честно говоря, я не думаю, что простая нормализация по отношению к длине также поможет в достижении порога, но позвольте мне проверить это с использованием недоумения. - person Sanjay Krishna; 03.03.2018