Игра «Сгенерируй название»
Угадывание заголовка или генерация заголовка — это увлекательная область обработки естественного языка (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. Токенизируя текст, удаляя стоп-слова, подсчитывая частоту слов и сортируя результаты, мы можем определить наиболее часто встречающееся слово как потенциальный заголовок. Этот метод обеспечивает простой, но эффективный способ создания заголовков для текстовых документов.
Не стесняйтесь экспериментировать с различными корпусами и настраивать код, чтобы повысить точность заголовков. Приятного кодирования!