DevGang
Авторизоваться

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

Сарказм был частью нашего языка на протяжении многих лет. Это означает быть противоположным тому, что вы имеете в виду, обычно с отличным тоном голоса в веселой игровой форме. Если вы думаете, что любой может понять сарказм, то вы ошибаетесь, потому что понимание сарказма зависит от ваших языковых навыков и вашего знания других людей. А как же компьютер? Можно ли обучить модель машинного обучения, которая может определять, является ли предложение саркастичным или нет? Да, это возможно! Так что, если вы хотите научиться распознавать сарказм с помощью машинного обучения, эта статья для вас. В этой статье я расскажу вам об обнаружении сарказма с помощью машинного обучения с использованием 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']

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

#Python #Machine Learning
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

Поделитесь своим опытом, расскажите о новом инструменте, библиотеке или фреймворке. Для этого не обязательно становится постоянным автором.

Попробовать

В подарок 100$ на счет при регистрации

Получить