Обработка естественного языка (NLP) — это то, как мы заставляем машины изучать человеческий язык общения.

Это примечание, когда я просматриваю знания НЛП и помогаю мне очистить голову.

Предыстория проекта и основное содержание

Этот проект представляет собой простой проект классификации текста с использованием Наивного Байеса.

Содержание:

  1. Предварительная обработка данных: удаление лишнего содержимого из текста для улучшения качества данных с помощью регулярных выражений.
  2. Вектор текстовых данных.
  3. Применение Наивного Байеса для построения классификатора.

Описание данных

Данные взяты из Twitter на 6 языках: английском, французском, немецком, испанском, итальянском и голландском.

Хорошо! Присоединяемся к проекту!

Загрузить данные

Предварительная обработка данных

Во-первых, давайте разделим набор данных на обучающий и тестовый наборы.

Очистка данных

Векторное представление документа

Я использовал два метода: их можно использовать для преобразования удобочитаемого английского текста в язык, понятный машине.

  1. Счетчик векторизатора()
  2. TfidfVectorizer()

Постройте наивную байесовскую модель

MultinomialNB(alpha=1.0, class_prior=None, fit_prior=True)

classifier.score(vec.transform(X_test), y_test)
0.9907366563740626

Приведите пример для проверки классификатора:

classifier.predict(vec.transform(["my name is MaxMa"]))

array(['en'], dtype='<U2')

Собираем их вместе и упаковываем для последующего использования:

Давайте вызовем функции, чтобы проверить их.

language_detector = LanguageDetector()
language_detector.fit(list(X_train), y_train)
print(language_detector.predict('This is an English sentence'))
print(language_detector.score(list(X_test), y_test))

Результат:['en'] 0.992501102779003

Сохранение модели и загрузка

Сохранить модель:

model_path = "my_model/language_detector.model"
language_detector.save_model(model_path)

Модель нагрузки:

new_language_detector = LanguageDetector()
new_language_detector.load_model(model_path)

# using model to predict
new_language_detector.predict("10 der welt sind bei")

Результат:array(['de'], dtype='<U2')