Нет сомнений в том, что вы, я и большинство подростков во всем мире пользуетесь какими-то социальными сетями. Я имею в виду, почему бы тебе этого не сделать?

Это хорошее место для общения, а также хорошее место для подростков, где они могут быть кем-то другим.

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

Однако иногда это не всегда так. Иногда люди публикуют более личный контент, который показывает признаки того, что в их жизни что-то идет не так. Это призыв о помощи, в этих постах могут быть слова, чтобы передать страх, одиночество, безнадежность, но мы даже не осознаем этого.

Не верите мне?

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

В настоящее время на платформах социальных сетей, таких как Twitter, есть формы, в которых вы можете отправить сообщение, если увидите какие-то суицидальные мысли.

Проблема в том, что если кто-то увидит твит через пару часов после того, как твит был опубликован, то вы никогда не узнаете, жив ли этот человек.

Когда дело доходит до самоубийства, время имеет решающее значение, и одна минута может изменить чью-то жизнь.

Твиттер заявляет: « Многие люди используют Твиттер, чтобы выражать уникальные точки зрения и открыто говорить о проблемах. Пока мы боремся с тяжестью и реальностью беспрецедентного кризиса общественного здравоохранения, наша работа заключается в том, чтобы Twitter оставался безопасным пространством для всех, кто интересуется советами и ресурсами по психическому здоровью или рассказывает о своих личных проблемах с психическим здоровьем ».

Однако существующие методы ненадежны и требуют больших временных затрат.

Я построил модель НЛП, которая классифицирует твиты как суицидальные и не суицидальные в 88% случаев.

Основы

Я не буду вдаваться в подробности машинного обучения (ML), но если вы хотите узнать больше, посмотрите мою серию #AIwithAlisha, в которой я освещаю все темы машинного обучения.

То, как мне нравится смотреть на машинное обучение, - это просто наука о том, как заставить машины учиться. ML - это подраздел AI и система, которая может использовать данные для их классификации, а также делать новые прогнозы.

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

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

Но давайте немного углубимся в обработку естественного языка (NLP), которая является подразделом машинного обучения.

Обработка естественного языка

Как мне нравится смотреть на НЛП - это область ИИ, которая дает машинам возможность читать, понимать и извлекать значение из человеческого языка.

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

Это неструктурированные данные (данные, полученные в результате разговоров, заявлений или даже твитов).

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

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

Пару дней назад я звонил подруге, и она говорила о том, как ненавидит свою жизнь. Мы, люди, знаем, что она преувеличивала своим тоном, но можете ли вы когда-нибудь узнать?

Страшно да?

Вот где приходит НЛП!

Итак, давайте рассмотрим некоторые из техник, используемых в НЛП для построения анализа настроений.

Мешок слов

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

Например, я использую пение «Не могу остановить чувство» и две фразы из песни.

Я чувствую эту горячую кровь в моем теле, когда она капает

Я не могу оторвать глаз от этого, так феноменально двигаясь

А теперь посчитаем слова:

Однако есть несколько недостатков, таких как «семантика» и значение слов, а также некоторые слова могут быть неправильно взвешены («кровь» весит меньше, чем слово «не может».

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

Тематическое моделирование

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

Тематическое моделирование - это когда мы используем обучение без учителя для извлечения основных тем из набора слов. В тематическом моделировании существует LDA, также известное как Latent Discriminant Allocation, которое используется для классификации текста в документе по определенной теме.

Чтобы узнать больше о LDA, я хотел бы отослать вас к этой статье: https://towardsdatascience.com/linear-discriminant-analysis-explained-f88be6c1e00b

Моделирование тем можно использовать только в том случае, если текст сначала был преобразован в набор слов. После этого мы должны указать, сколько тем в наборе данных, и затем модель будет построена!

Анализ настроений для предотвращения самоубийства

Анализ настроений - это просто классификация эмоций на основе текста. Хотя он чаще используется для классификации таких вещей, как обзоры продуктов для компаний, я использовал его для выявления депрессивных и склонных к суициду пользователей в социальных сетях, чтобы, возможно, предотвратить членовредительство или самоубийство.

Я построил базовый классификатор, который после анализа твитов будет определять, является ли твит (1) самоубийственным или (2) не самоубийственным.

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

Твит под угрозой

Обычный твит

Чтобы построить эту модель, я использовал две из моделей НЛП, Тематическое моделирование и Мешок слов!

Шаг 1

Первый шаг - использовать наш набор данных и понять, как часто встречается определенное слово (мешок слов).

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

Затем мы импортируем TFIDF (метод оценки, который улучшает набор слов за счет добавления весов), чтобы определить частоту каждого слова.

Частота термина - обратная периодичность документа

# TFIDF Vector
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.model_selection import train_test_split
from sklearn.svm import LinearSVC
from sklearn.metrics import classification_report
X = df['tweet']
tfidf = TfidfVectorizer(max_features=10000, ngram_range=(1, 2))
X = tfidf.fit_transform(X)
y = df['intention']

Шаг 2

Для тематического моделирования мы должны провести анализ LDA (модель, используемая для классификации текста), и, как вы можете видеть в коде, мы загружаем модель LDA из Sk-learn (библиотека машинного обучения).

Затем мы позволяем модели LDA определять основные темы из наших данных.

Анализ LDA с помощью тематического моделирования

import warnings
warnings.simplefilter("ignore", DeprecationWarning)# Load the LDA model from sk-learn
from sklearn.decomposition import LatentDirichletAllocation as LDA
 
# Helper function
def print_topics(model, count_vectorizer, n_top_words):
    words = count_vectorizer.get_feature_names()
    for topic_idx, topic in enumerate(model.components_):
        print("\\nTopic #%d:" % topic_idx)
        print(" ".join([words[i]
                        for i in topic.argsort()[:-n_top_words - 1:-1]]))
        
# Tweak the two parameters below
number_topics = 5
number_words = 10# Create and fit the LDA model
lda = LDA(n_components=number_topics, n_jobs=-1)
lda.fit(count_data)# Print the topics found by the LDA model
print("Topics found via LDA:")
print_topics(lda, count_vectorizer, number_words)

Результат кода моделирования темы должен выглядеть примерно так! Есть две темы, возможно, суицидальная и нормальная. На основе моего набора данных, содержащего более 100 000 твитов, эти слова классификатор определил как суицидальные и не суицидальные. Вот несколько примеров!

Topic 1: Possibly Suicide
Words: "kill" , "die" , "death" , *"worthless" , "murder" , "self-murder" , "depressed", "Lonely"
Topic 2: Normal 
Words:"american","alright" , "covid-19" , "good" , "lover"

Теперь, когда мы обучили модель, давайте протестируем ее!

Давайте протестируем модель!

Рискованный твит

X = 'I just want my life to end already'
vec = tfidf.transform([X])
clf.predict(vec)

Результат

array([1])

(1) означает, что твит является самоубийственным

Обычный твит

X = 'congratulations, you have done it'
vec = tfidf.transform([X])

Результат

array([0])

(0) означает, что твит нормальный

Обучение и тестирование нашей модели

После множества настроек и ошибок я получил модель с уровнем точности 88%, это означает, что эта модель может точно предсказывать пользователей из группы риска в 88% случаев!

Будущее

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

Я также хочу продолжить построение этой модели, добавляя больше моделей НЛП, чтобы продолжать повышать точность и спасать жизни людей !!

Если вам понравилась эта статья:

  • Поделитесь этим со своей сетью 🙏
  • Свяжитесь со мной в Linkedin, чтобы быть в курсе моего пути к искусственному интеллекту, и напишите мне сообщение (я люблю знакомиться с новыми людьми).
  • Подпишитесь на мою рассылку новостей, чтобы получать ежемесячные обновления о том, над чем я работаю!