Машинное обучение с наивным байесовским методом на неанглийских словах

Я использую библиотеку текстовых BLOB-объектов Python и классификатор Naive Bayes для текстовых BLOB-объектов. Я узнал, что он использует наивный байесовский классификатор nltk. Вот вопрос: мои вводные предложения не на английском (турецком). Будет ли это возможно? Я не знаю, как это работает. Но я попробовал 10 обучающих данных, и, похоже, это сработало. Интересно, как это работает, этот наивный классификатор младенцев nltk, на неанглийских данных. Какие недостатки?


person user2231498    schedule 05.12.2015    source источник
comment
Классификатор должен работать одинаково для большинства неанглийских данных. Конечно, то, насколько хорошо работает этот алгоритм классификации, частично зависит от языка (среди прочего). Например, сильно ли изменен язык? Можете ли вы точно токенизировать язык? (Некоторые языки, например те, в которых отсутствуют пробелы, как известно, трудно токенизировать.)   -  person Justin O Barber    schedule 05.12.2015
comment
Турецкий язык имеет богатую морфологию, но использует латинский алфавит и разделяет слова пробелами.   -  person alexis    schedule 06.12.2015


Ответы (1)


Хотя классификатор, обученный английскому, вряд ли будет работать на других языках, похоже, что вы используете textblob для обучения классификатора для своей текстовой области. Ничто не исключает использования данных с другого языка, поэтому реальный вопрос заключается в том, получаете ли вы приемлемую производительность. Первое, что вам нужно сделать, это протестировать свой классификатор на нескольких сотнях новых предложений (а не на тех, на которых вы его обучили!). Если вы счастливы, это конец истории. Если нет, читайте дальше.

Что делает или мешает любому классификатору, так это выбор функций для его обучения. Классификаторам NLTK требуется функция «извлечения признаков», которая преобразует предложение в словарь признаков. Согласно его учебнику, textblob предоставляет своего рода функциональную функцию "мешка слов" по умолчанию. Предположительно это тот, который вы используете, но вы можете легко подключить свою собственную функцию.

Именно здесь на помощь приходят ресурсы, относящиеся к конкретному языку: многие классификаторы используют "список запрещенных слов", чтобы отбросить общие слова, такие как и и the. Очевидно, этот список должен быть зависящим от языка . И, как написал @JustinBarber в комментарии, языки с большим количеством морфологии (например, турецкий) имеют больше словоформ, что может ограничивать эффективность классификации на основе слов. Вы можете увидеть улучшения, если «обуздаете» или лемматизируете свои слова; обе процедуры преобразуют разные словоформы словоформы в общую форму.

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

Для получения дополнительной информации прочитайте несколько глав книги NLTK, особенно главу о классификация.

person alexis    schedule 05.12.2015