Решаем задачи Python - страница 23

Шрифт
Интервал


Идея решения будет следующей:

1. Разбить текст на предложения.

2. Подсчитать частоту встречаемости каждого слова в тексте.

3. Определить вес каждого предложения на основе суммы весов слов, входящих в него.

4. Выбрать предложения с наибольшим весом для включения в краткое описание.

Вот пример кода на Python для решения этой задачи:

```python

from nltk.tokenize import sent_tokenize, word_tokenize

from collections import Counter

def generate_summary(text, num_sentences=3):

# Разбиваем текст на предложения

sentences = sent_tokenize(text)

# Разбиваем каждое предложение на слова

words = [word_tokenize(sentence.lower()) for sentence in sentences]

# Подсчитываем частоту встречаемости каждого слова

word_freq = Counter()

for sentence_words in words:

word_freq.update(sentence_words)

# Вычисляем вес каждого предложения на основе суммы весов слов

sentence_weights = {}

for sentence in sentences:

sentence_words = word_tokenize(sentence.lower())

weight = sum(word_freq[word] for word in sentence_words)

sentence_weights[sentence] = weight

# Сортируем предложения по весу и выбираем заданное количество предложений для краткого описания

summary_sentences = sorted(sentence_weights, key=sentence_weights.get, reverse=True)[:num_sentences]

return ' '.join(summary_sentences)

# Пример текста

text = """

Марс – четвёртая по удалённости от Солнца и седьмая по размерам планета Солнечной системы.

До 24 августа 2006 года по исключительному соглашению между Международным астрономическим союзом и Всемирной ассоциацией радиокоммуникаций английское наименование этой планеты официально считалось орфографическим вариантом русского названия – Марс.

Именно такое внешнеполитическое состояние дел иллюстрирует исследование анкет, которые участники митапа пройдут.

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

Участников митапа, однако, ждут другие трудности, например, количественный состав и структура общества (а также) способы реализации заданий.

"""

# Генерация краткого описания текста

summary = generate_summary(text)

print("Краткое описание:")

print(summary)

```

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