Я ищу простой алгоритм или библиотеку с открытым исходным кодом (PHP), позволяющую оценить, использует ли текст в основном конкретный язык. Я нашел following answer, относящийся к Python, который, вероятно, ведет в правильном направлении. Но что-то готовое для PHP для PHP было бы очарованием.Алгоритм определения вероятного языка текста
Конечно, что-то вроде оценки n-грамм не будет слишком сложно реализовать, но для этого требуется также база данных ссылок.
Реальная проблема заключается в следующем. Я запустил блог WordPress, который в настоящее время затоплен SPAM. Блог находится на немецком языке, и практически весь трекбэк-спам - английский. Моя идея состоит в том, чтобы немедленно спамить все трекбэки, которые кажутся английскими. Однако я не могу использовать слова маркера, потому что я не хочу спамить опечатки или цитаты.
Мое решение:
Используя ответы на этот вопрос я реализовал решение, которое детектирует немецкого простого соотношения стоп-слов. Любой комментарий должен содержать не менее 25% немецких задержек, если у него есть ссылка. Таким образом, вы все еще можете комментировать что-то вроде «классной статьи», которая вообще не имеет паролей, но если вы поместите ссылку, вы должны потрудиться, чтобы написать правильный язык.
К сожалению, временные слова из NLTK неверны. Список содержит слова, которые не существуют на немецком языке. Поэтому я использовал список snowball. Используя Perl regexp optimizer, я сконфигурировал весь список в одно регулярное выражение и подсчитал стоп-слова с помощью preg_match_all(). Весь фильтр имеет 25 строк, треть кода Perl для создания регулярного выражения из списка. Посмотрим, как это происходит в дикой природе.
Благодарим за помощь.
Почему вы не используете akismet? – jraede
Вы можете получить много данных, загрузив материал из проекта-gutenberg для разных языков. Однако то, что вы ищете, - это спам-классификатор - в зависимости от того, сколько спама вы собрали в своем блоге, это может быть довольно простой задачей. Возможно, вы хотите обновить свой вопрос с большей информацией. –
@jraede Akismet имеет юридические вопросы. Я не хочу передавать законные комментарии через любой внешний сервер.В противном случае мне пришлось бы включить заявление о конфиденциальности в форму комментариев, что может отпугнуть реальных комментаторов. –