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

Требования :

numpy
transformers==4.31.0
tensorflow
nltk==3.8.1
pandas==2.0.3
scikit-learn==1.3.0
#install these modules by saving the above text to requirements.txt file
#Execute this line to install the packages
pip install -r requirements.txt
# download these packages
import nltk
nltk.download('punkt')
nltk.download('stopwords')
nltk.download('averaged_perceptron_tagger')
nltk.download('maxent_ne_chunker')
nltk.download('words')
nltk.download('vader_lexicon')

1- Токенизация: преобразование текста в токены:

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

Токенизация с использованием NLTK

from nltk.tokenize import word_tokenize, sent_tokenize

text = "NLP, the branch of artificial intelligence dedicated to the interaction between computers and human language"

# Tokenize the input text into words
words = word_tokenize(text)

sentences = sent_tokenize(text)

print(f"words : {words}")
print(f"sentences : {sentences}")

2- Стоп-слова: фильтрация шума из текста:

  • Роль стоп-слов в НЛП. Стоп-слова — это общеупотребительные слова (например, «the», «and», «is»), которые не имеют большого семантического значения. Их удаление помогает уменьшить шум и повысить эффективность задач НЛП.
  • Влияние на эффективность обработки текста. Удаление стоп-слов повышает качество анализа текста за счет сосредоточения внимания на значимых словах содержания.

Удаление стоп-слов с помощью NLTK

from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize

text = "NLP, the branch of artificial intelligence dedicated to the interaction between computers and human language"

# Tokenize the input text into words
words = word_tokenize(text)

stop_words = set(stopwords.words('english'))
filtered_words = [word for word in words if word.lower() not in stop_words]

print(f"filtered words : {filtered_words}")

3- Тегирование частей речи (POS): раскрытие ролей слов:

  • Понятие тегов POS. Теги POS назначают грамматические метки (например, существительное, глагол, прилагательное) словам в предложении, помогая в синтаксическом и семантическом анализе.
  • Улучшение понимания языка: теги POS позволяют лучше понять структуру и значение предложений.

Тегирование POS с помощью NLTK

from nltk.tag import pos_tag
from nltk.tokenize import word_tokenize

text = "NLP, the branch of artificial intelligence dedicated to the interaction between computers and human language"

# Tokenize the input text into words
words = word_tokenize(text)

# Perform part-of-speech tagging
tagged_words =  pos_tag(words)

# Extract specific types of tags as tags
tags = [tag for word, tag in tagged_words if tag.startswith('N') or tag.startswith('V') or tag.startswith('J')]

print(f"tagged_words : {tagged_words}")
print("Generated Tags:", tags)

4- Распознавание именованных объектов (NER): Идентификация объектов:

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

NER с NLTK

from nltk import ne_chunk

input_text = "Natural Language Processing is a fascinating field that enables computers to understand and generate human language."

# Tokenize the input text into words
words = word_tokenize(input_text)

# Perform part-of-speech tagging
tagged_words = pos_tag(words)

# Perform named entity recognition
named_entities = ne_chunk(tagged_words)

# Display the named entities
print("Named Entities:")
print(named_entities)

5- Анализ настроений: расшифровка эмоций в тексте:

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

Анализ настроений с использованием модуля nltk по умолчанию:

from nltk.sentiment import SentimentIntensityAnalyzer

sia = SentimentIntensityAnalyzer()

text = "I absolutely loved the movie. The acting was fantastic, and the plot kept me engaged throughout."

sentiment_score = sia.polarity_scores(text)

# Display sentiment scores
print("Sentiment Scores:")
print("Positive:", sentiment_score['pos'])
print("Negative:", sentiment_score['neg'])
print("Neutral:", sentiment_score['neu'])
print("Compound:", sentiment_score['compound'])

Алгоритм машинного обучения использовал проект анализа настроений:

В этом проекте мы используем алгоритм Наивного Байеса для обучения модели и TfidfVectorizer для преобразования текста.

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

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

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

Huggingface Transformer использовал проект анализа настроений:

Я использовал предварительно обученную модель анализа настроений из преобразователя HuggingFace, чтобы предсказать результат.

Заключение

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

Следите за новыми захватывающими событиями в мире обработки естественного языка, поскольку мы продолжаем раздвигать границы понимания и анализа языка.

Подпишитесь на меня: Linkedin, Instagram, GitHub