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

В этом руководстве мы сосредоточимся на экстрактивном обобщении с использованием Python. Мы будем использовать библиотеку NLTK для предварительной обработки текстовых данных и расчета оценок предложений, а затем выберем лучшие предложения для создания сводки.

Шаг 1. Установите и импортируйте зависимости

Во-первых, нам нужно установить и импортировать необходимые зависимости. В дополнение к NLTK мы также будем использовать библиотеку re для регулярных выражений.

import nltk
from nltk.corpus import stopwords
from nltk.tokenize import sent_tokenize, word_tokenize
import re

Если вы еще не установили библиотеку NLTK, вы можете сделать это, выполнив следующую команду в своем терминале:

pip install nltk


Шаг 2: Загрузите текстовые данные

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

text = """
Cristiano Ronaldo has made history by becoming the all-time top scorer in men's international football. The Portugal captain scored his 110th and 111th goals in his side's 2-1 World Cup qualifying win over the Republic of Ireland. Ronaldo, 36, surpassed the previous record held by Iran's Ali Daei, who scored 109 international goals between 1993 and 2006. "From an individual point of view, I'm proud," Ronaldo said after the match. "From a collective point of view, it's a great victory."
"""

Шаг 3: Предварительно обработайте текстовые данные

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

# Download stop words
nltk.download('stopwords')

# Remove stop words and punctuations
stop_words = set(stopwords.words('english'))
words = word_tokenize(text)
words = [word.lower() for word in words if word.isalpha() and word.lower() not in stop_words]

# Remove special characters and extra spaces
clean_text = re.sub('\W+', ' ', text)
clean_text = re.sub('\s+', ' ', clean_text)

# Convert text into a list of sentences
sentences = sent_tokenize(clean_text)


Шаг 4. Подсчитайте баллы за предложения

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

# Calculate sentence scores
sentence_scores = {}
for sentence in sentences:
    for word in word_tokenize(sentence.lower()):
        if word in words:
            if sentence not in sentence_scores:
                sentence_scores[sentence] = 0
            sentence_scores[sentence] += 1/len(sentences)

Шаг 5: выберите лучшие предложения

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

# Select top sentences
summary_sentences = sorted(sentence_scores, key=sentence_scores.get, reverse=True)[:2]
summary = ' '.join(summary_sentences) 

В этом примере мы выбрали 2 верхних предложения для создания нашего резюме.



Шаг 6: Распечатайте результаты

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

# Print the original text
print("Original Text:\n", text)

# Print the summary
print("\nSummary:\n", summary)

# Print the length of both
print("\nLength of Original Text:", len(text))
print("Length of Summary:", len(summary))

Заключение

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



Связанные руководства

Вот несколько связанных руководств, которые могут прочитать заинтересованные читатели: