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

Игра «Сгенерируй название» 

Угадывание заголовка или генерация заголовка — это увлекательная область обработки естественного языка (NLP), где мы пытаемся сгенерировать релевантный заголовок для данного корпуса текста. В этом посте я расскажу о скрипте Python, который генерирует заголовок, используя некоторые базовые методы NLP. Для нашего анализа мы будем использовать такие библиотеки, как nltk и pandas

Предварительные условия

Прежде чем мы углубимся в код, убедитесь, что у вас установлены необходимые библиотеки. Вы можете установить их с помощью pip:

pip install nltk
pip install pandas

PyCode

from nltk import word_tokenize, sent_tokenize
from nltk.corpus import stopwords
import pandas as pd
# Пример корпуса текста
corpus = "Wolverine, one of the most iconic characters in the X-Men universe, is known for his extraordinary abilities and complex personality. Wolverine possesses enhanced senses, superhuman strength, and a rapid healing factor that allows him to recover from almost any injury. His adamantium-coated skeleton and retractable claws make Wolverine a formidable fighter."
# Преобразуйте корпус в слова и удалите стоп-слова.
words = []
for word in word_tokenize(corpus):
    if word.lower() not in stopwords.words('english') and len(word) >= 2:
        words.append(word)
# Создайте словарный запас
vocab = set(words)
# Инициализируйте словарь подсчета слов
word_count = {word: 0 for word in vocab}
# Подсчитайте частоту каждого слова
for word in words:
    word_count[word] += 1
# Подготовьте данные для DataFrame
data = [[word, freq] for word, freq in word_count.items()]
# Создайте DataFrame и отсортируйте по частоте
df = pd.DataFrame(data, columns=['word', 'freq'])
guessed_title = df.sort_values(by='freq', ascending=False).head().values[0][0]
print("Guessed Title:", guessed_title)  # вывод : Wolverine

Объяснение

Импорт и настройка данных

Начинаем с импорта необходимых библиотек: nltk для обработки естественного языка и pandas для обработки данных.  

Текстовый корпус

Переменная corpus содержит образец текста о Росомахе, популярном персонаже из вселенной Людей Икс.

Токенизация и удаление стоп-слов

Мы разбиваем корпус на отдельные слова, используя word_tokenize и удаляем общие стоп-слова, используя список стоп-слов NLTK. Кроме того, мы отфильтровываем слова, содержащие менее двух символов.

Словарный запас и счет слов

Создаём набор уникальных слов (словарь) и инициализируем словарь для подсчёта частоты каждого слова. Мы перебираем список слов, чтобы обновить их количество в word_count словаре.

Подготовка и сортировка данных

Готовим список списков, содержащих слова и соответствующие им частоты. Мы создаем DataFrame из этих данных и сортируем его по частоте в порядке убывания, чтобы найти наиболее частое слово.

Угадываем название

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

Заключение

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

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

Источник:

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