N-грамм Языковые модели
Вы можете попробовать обучить одну модель языка n-грамм на автоматически сгенерированных страницах спама и одну на коллекции других не спамовых веб-страниц.
Затем можно просто оценить новые страницы для обеих языковых моделей, чтобы увидеть, выглядит ли текст более похожим на веб-страницы со спамом или обычный веб-контент.
Лучший результат по закону Байеса
Когда вы оцениваете текст с помощью модели языка спама, вы получаете оценку вероятности обнаружения этого текста на веб-странице спама P(Text|Spam)
. Обозначение читается как вероятность Text
, заданная Spam (page)
. Оценка по модели без спама является оценкой вероятности нахождения текста на веб-странице без спама, P(Text|Non-Spam)
.
Однако термин, который вы, вероятно, действительно хотите, это P(Spam|Text)
или, что эквивалентно P(Non-Spam|Text)
. То есть вы хотите знать вероятность того, что страница равна Spam
или Non-Spam
, учитывая текст, который на ней появляется .
Чтобы получить любой из них, вам нужно использовать Закон Байеса , который гласит
P(B|A)P(A)
P(A|B) = ------------
P(B)
Используя закон Байеса, мы имеем
P(Spam|Text)=P(Text|Spam)P(Spam)/P(Text)
и
P(Non-Spam|Text)=P(Text|Non-Spam)P(Non-Spam)/P(Text)
P(Spam)
- ваше предварительное убеждение , что страница, выбранная случайным образом из Интернета, является страницей спама. Вы можете оценить это количество, посчитав, сколько спам-страниц имеется в некотором образце, или вы даже можете использовать его в качестве параметра, который вы вручную настраиваете на компромисс точности и отзываете , Например, присвоение этому параметру высокого значения приведет к тому, что меньшее количество спам-страниц будет ошибочно классифицировано как не спам, в то время как низкое значение приведет к тому, что меньшее количество не спам-страниц будет случайно классифицировано как спам.
Термин P(Text)
- это общая вероятность найти Text
на любой веб-странице. Если мы игнорируем, что P(Text|Spam)
и P(Text|Non-Spam)
были определены с использованием разных моделей, это можно рассчитать как P(Text)=P(Text|Spam)P(Spam) + P(Text|Non-Spam)P(Non-Spam)
. Это суммирует двоичную переменную Spam
/ Non-Spam
.
Только классификация
Однако, если вы не собираетесь использовать вероятности для чего-либо еще, вам не нужно вычислять P(Text)
. Скорее, вы можете просто сравнить числители P(Text|Spam)P(Spam)
и P(Text|Non-Spam)P(Non-Spam)
. Если первый размер больше, страница, скорее всего, является страницей спама, а если второй размер больше, то страница, скорее всего, не является спамом. Это работает, поскольку приведенные выше уравнения для P(Spam|Text)
и P(Non-Spam|Text)
нормализованы на одно и то же значение P(Text)
.
Инструменты
С точки зрения программных инструментов, которые вы могли бы использовать для чего-то подобного, SRILM было бы хорошим местом для начала, и это бесплатно для некоммерческого использования. Если вы хотите использовать что-либо в коммерческих целях и не хотите платить за лицензию, вы можете использовать IRST LM , который распространяется в рамках LGPL.