Рубрики
Без рубрики

Классификация текстовой группы новостей с помощью машинного обучения

Питон, машинное обучение. Tagged с Python, Machineleasning.

Текст может быть автоматически классифицирован Анкет Как и все с машинным обучением, ему нужны данные. Итак, какие данные мы идем к нам?

Данные

Допустим, нашим источником данных является набор данных fetch_20newsgroups. Этот набор данных содержит текст почти 20 000 сообщений о группах новостей, разделенных на 20 различных групп новостей.

Набор данных довольно старый, но это не имеет значения. Вы можете найти оригинальную домашнюю страницу здесь: 20 Набор данных групп новостей

Набор данных включен по умолчанию в модуль Python Machine Learning Sklearn.

Чтобы упростить, мы возьмем только 2 новостных группах “Rec.motorcycles” и “rec.sport.hockey”.

#!/usr/bin/python3
news = fetch_20newsgroups(subset="all", categories=['rec.sport.hockey', 'rec.motorcycles'])

Проверьте алгоритм

Прежде чем использовать классификатор, вы хотите знать, насколько хорошо он работает. Это делается путем разделения набора данных на Поезд и тестовый набор Анкет

#!/usr/bin/python3
x_train, x_test, y_train, y_test = train_test_split(news.data,news.target)

Данные, с которыми мы имеем дело, являются текстом. Это должно быть векторы. Затем используйте TFIDFVectorizer. Итак, у нас есть два вектора: x_train и x_test.

#!/usr/bin/python3
transfer = TfidfVectorizer()
x_train = transfer.fit_transform(x_train)
x_test = transfer.transform(x_test)

Не нужно изменять Y_TRAIN и Y_TEST, так как это метки вывода (класс 0 или класс 1)

Создайте объект алгоритма и обучите его с данными.

#!/usr/bin/python3
estimator = MultinomialNB()
estimator.fit(x_train,y_train)

Затем вы можете делать прогнозы и посмотреть, насколько хорошо он классифицирует на тестовых данных

#!/usr/bin/python3
y_predict = estimator.predict(x_test)
print("y_predict:\n", y_predict)

score = estimator.score(x_test, y_test)
print("score:\n", score)

Запустите программу, и вы увидите точность:

score: 0.9939879759519038

Сделайте свои собственные прогнозы

Вы можете делать прогнозы с новыми текстами:

Enter some text: i like to drive motor cycle on the highway
y_predict:
[0]

Enter some text: i like to play hockey game
y_predict:
[1]

Для этого добавьте эти линии:

#!/usr/bin/python3
sentence = input("Enter some text: ")
sentence_x = transfer.transform([sentence])
y_predict = estimator.predict(sentence_x)
print("y_predict:\n", y_predict)

Программа

Программа ниже делает все это

#!/usr/bin/python3
from sklearn.datasets import fetch_20newsgroups
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.model_selection import train_test_split

def nb_news():
    news = fetch_20newsgroups(subset="all", categories=['rec.sport.hockey', 'rec.motorcycles'])

    x_train, x_test, y_train, y_test = train_test_split(news.data,news.target)

    transfer = TfidfVectorizer()
    x_train = transfer.fit_transform(x_train)
    x_test = transfer.transform(x_test)

    estimator = MultinomialNB()
    estimator.fit(x_train,y_train)

    y_predict = estimator.predict(x_test)
    print("y_predict:\n", y_predict)

    score = estimator.score(x_test, y_test)
    print("score:\n", score)
    return None

nb_news()

Ссылки по теме:

Оригинал: “https://dev.to/petercour/text-classification-with-machine-learning-laf”