Обработка естественного языка (НЛП) в анализе настроений со временем развивалась. Первоначально использовались методы, основанные на правилах, а затем методы машинного обучения, такие как машины опорных векторов (SVM) и наивный Байес. Также появились неконтролируемые подходы, такие как методы, основанные на лексике. Появление глубокого обучения и нейронных сетей привело к использованию рекуррентных нейронных сетей (RNN), особенно сетей с долгосрочной краткосрочной памятью (LSTM). В последнее время приобрели популярность модели на основе трансформаторов, такие как представления двунаправленного энкодера от трансформаторов (BERT).

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

Пример чувств, выраженных пациентами:

  • Положительное настроение: «У меня были замечательные впечатления от пребывания в больнице. Персонал был дружелюбным и внимательным, а врачи оказывали отличную помощь. Я оченьрекомендую это место».
  • Негативное мнение: «У меня были ужасные впечатления от посещения клиники. Время ожидания было чрезмерно долгим, а персонал казался безразличным и непрофессиональным. Если бы у меня был выбор, я бы не вернулся туда».
  • Нейтральное мнение: «Мой визит в больницу прошел хорошо. Врачи были компетентны, но учреждения нуждались в улучшении. В целом это не было ниисключительным, ни разочаровывающим».

НЛП в нескольких жизненно важных компонентах анализа настроений —

Шаг 1. Предварительная обработка текста

Необработанные данные преобразуются в формат, удобный для анализа. Этот шаг помогает стандартизировать и нормализовать текст, упрощая его обработку алгоритмами анализа настроений. Это включает в себя такие задачи, как —

  • Подавление шума и стандартизация
    Собранные данные часто содержат знаки препинания и специальные символы, которые часто являются избыточными и поэтому называются шумом. Регулярные выражения часто уменьшают шум и акцентируют внимание на значимом содержании текста.
    Стандартизация облегчает справедливое сравнение и предотвращает дублирование информации из-за различий в случаях.
# Remove punctuation and special characters using regular expressions.
import re
text = re.sub('[^\w\s]', '', text) # Replace all noise with ' '
  • Токенизация
    Это основа для дальнейшего анализа путем разбиения текста на значимые единицы. Эти токены служат входными данными для различных задач НЛП, таких как анализ настроений. Существует несколько типов токенизации — токенизация слов, фрагментирование или поверхностный анализ, распознавание именованных объектов (NER) и т. д.
  • Удаление стоп-слов
    Стоп-слова — это распространенные слова, которые не несут существенного значения и не вносят большого вклада в анализ, например «и», «the» или «is». Удаление стоп-слов помогает уменьшить размерность данных и повысить эффективность вычислений.
# nltk - Natural Language Toolkit
from nltk.corpus import stopwords
# List of all stopwords in english language
stopwords = set(stopwords.words('english')) 
  • Лемматизация и стемминг
    Это методы, используемые для сведения слов к их базовой или корневой форме. Лемматизация сопоставляет слова с их словарной или канонической формой, а стемминг направлен на удаление суффиксов или префиксов для достижения той же цели. Это уменьшает размер словаря и повышает точность анализа настроений, рассматривая связанные слова как единое целое. Вот пример обоих методов:
Word: "Lives"
Lemmatized: "Life" - considering its base form.
Stemmed: "Live" - removing the plural suffix

In lemmatization, the resulting word is a valid word found in the dictionary, whereas stemming may produce a word that is not necessarily valid. 
Lemmatization aims for accuracy, while stemming focuses on simplicity and speed.

Шаг 2. Извлечение функций

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

  • Мешок слов (BoW)
    Он представляет собой набор уникальных слов, игнорирующих грамматику или порядок. Каждый документ/предложение представлен вектором, где каждый элемент представляет наличие или отсутствие слова. В документе также учитывается частота встречаемости.
  • n-граммы
    Они фиксируют последовательности из n последовательных слов в тексте. n-граммы могут собирать некоторую информацию, связанную с контекстом предложения.
Sentence - "I love studying NLP"
1-gram (Unigram) - ["I", "love", "studying", "NLP"]
2-gram (Bigram) - ["I love", "love studying", "studying NLP"]
  • Внедрение слов
    Внедрение слов представляет слова как плотные векторы в непрерывном пространстве, собирая семантическую и контекстную информацию. Предварительно обученные встраивания слов, такие как Word2Vec или GloVe, можно использовать в качестве функций при анализе настроений. Эти вложения могут фиксировать отношения между словами и их семантическое сходство.

Шаг 3. Модели классификации настроений

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

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

from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB

# Example training data and labels
X_train = ["I loved reading this article", "The acting was terrible", "It was an okay experience"]
y_train = ["positive", "negative", "neutral"]

# Feature extraction
vectorizer = TfidfVectorizer()
X_train_features = vectorizer.fit_transform(X_train)

# Train Naive Bayes classifpier
clf = MultinomialNB()
clf.fit(X_train_features, y_train)

# Example test data
X_test = ["The movie was amazing"]

# Transform test data using the same vectorizer
X_test_features = vectorizer.transform(X_test)

# Predict sentiment
y_pred = clf.predict(X_test_features)
print(y_pred)

Некоторые другие известные модели включают машины опорных векторов (SVM) и рекуррентные нейронные сети (RNN).

Заключение

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

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

Таким образом, используя НЛП в анализе настроений, поставщики медицинских услуг могут улучшить уход, ориентированный на пациента, усовершенствовать свои услуги и принимать решения на основе данных для улучшения общего оказания медицинской помощи.