Обнаружение сарказма с помощью машинного обучения 

МЕНЮ


Главная страница
Поиск
Регистрация на сайте
Помощь проекту
Архив новостей

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация



RSS


RSS новости


Сарказм был частью нашего языка на протяжении многих лет. Это означает быть противоположным тому, что вы имеете в виду, обычно с отличным тоном голоса в веселой игровой форме. Если вы думаете, что любой может понять сарказм, то вы ошибаетесь, потому что понимание сарказма зависит от ваших языковых навыков и вашего знания других людей. А как же компьютер? Можно ли обучить модель машинного обучения, которая может определять, является ли предложение саркастичным или нет? Да, это возможно! Так что, если вы хотите научиться распознавать сарказм с помощью машинного обучения, эта статья для вас. В этой статье я расскажу вам об обнаружении сарказма с помощью машинного обучения с использованием Python.

На протяжении многих лет сарказм был частью каждого человеческого языка. Сегодня он также используется в заголовках новостей и на различных других платформах социальных сетей, чтобы привлечь больше внимания. Обнаружение сарказма - это задача обработки естественного языка и двоичной классификации. Мы можем обучить модель машинного обучения определять, является ли предложение саркастическим, используя набор данных с саркастическими и несаркастическими предложениями, который я нашел на Kaggle.

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

Обнаружение сарказма с использованием Python

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

import pandas as pd import numpy as np from sklearn.feature_extraction.text import CountVectorizer from sklearn.model_selection import train_test_split from sklearn.naive_bayes import BernoulliNB  data = pd.read_json("Sarcasm.json", lines=True) print(data.head()) 
                                        article_link  ... is_sarcastic 0  https://www.huffingtonpost.com/entry/versace-b...  ...            0 1  https://www.huffingtonpost.com/entry/roseanne-...  ...            0 2  https://local.theonion.com/mom-starting-to-fea...  ...            1 3  https://politics.theonion.com/boehner-just-wan...  ...            1 4  https://www.huffingtonpost.com/entry/jk-rowlin...  ...            0  [5 rows x 3 columns]

«Is_sarcastic»  столбец в этом наборе данных содержит ярлыки, которые мы должны предсказать для задачи обнаружения сарказма. Он содержит двоичные значения, такие как 1 и 0, где 1 означает саркастический, а 0 означает не саркастический. Поэтому для простоты я преобразовываю значения этого столбца как  «саркастический»  и  «не саркастический»  вместо 1 и 0:

data["is_sarcastic"] = data["is_sarcastic"].map({0: "Not Sarcasm", 1: "Sarcasm"}) print(data.head())
                                        article_link  ... is_sarcastic 0  https://www.huffingtonpost.com/entry/versace-b...  ...  Not Sarcasm 1  https://www.huffingtonpost.com/entry/roseanne-...  ...  Not Sarcasm 2  https://local.theonion.com/mom-starting-to-fea...  ...      Sarcasm 3  https://politics.theonion.com/boehner-just-wan...  ...      Sarcasm 4  https://www.huffingtonpost.com/entry/jk-rowlin...  ...  Not Sarcasm  [5 rows x 3 columns]

Теперь подготовим данные для обучения модели машинного обучения. Этот набор данных состоит из трех столбцов, из которых нам нужен только столбец «headline» в качестве функции и столбец «is_sarcastic»  в качестве метки. Итак, давайте выберем эти столбцы и разделим данные на 20% тестовый набор и 80% обучающий набор:

data = data[["headline", "is_sarcastic"]] x = np.array(data["headline"]) y = np.array(data["is_sarcastic"])  cv = CountVectorizer() X = cv.fit_transform(x) # Fit the Data X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.20, random_state=42) 

Теперь я буду использовать алгоритм Bernoulli Naive Bayes для обучения модели задаче обнаружения сарказма:

model = BernoulliNB() model.fit(X_train, y_train) print(model.score(X_test, y_test))
0.8448146761512542 

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

user = input("Enter a Text: ") data = cv.transform([user]).toarray() output = model.predict(data) print(output)
Enter a Text: Cows lose their jobs as milk prices drop ['Sarcasm'] 

Вот как вы можете легко обучить модель машинного обучения задаче обнаружения сарказма.


Источник: dev-gang.ru

Комментарии: