программа сжимает готовый текст
Эта программа будет использовать библиотеку nltk для выделения ключевых предложений, которые передают основной смысл исходного текста.
import nltk
from nltk.corpus import stopwords
from nltk.tokenize import sent_tokenize, word_tokenize
from nltk.probability import FreqDist
from heapq import nlargest
nltk.download('punkt')
nltk.download('stopwords')
def summarize_text(text, compression_ratio=0.5):
if not text:
return ""
sentences = sent_tokenize(text)
words = word_tokenize(text.lower())
stop_words = set(stopwords.words('russian'))
words_filtered = [word for word in words if word not in stop_words and word.isalnum()]
word_frequencies = FreqDist(words_filtered)
most_common_words = nlargest(100, word_frequencies, key=word_frequencies.get)
sentence_scores = {}
for sentence in sentences:
for word in word_tokenize(sentence.lower()):
if word in most_common_words:
if sentence not in sentence_scores:
sentence_scores[sentence] = word_frequencies[word]
else:
sentence_scores[sentence] += word_frequencies[word]
select_length = int(len(sentences) * compression_ratio)
summary_sentences = nlargest(select_length, sentence_scores, key=sentence_scores.get)
summary = ' '.join(summary_sentences)
return summary
# Пример использования:
large_text = """
Ваш большой текст здесь...
"""
print(summarize_text(large_text))
Этот код сначала разбивает текст на предложения и слова, удаляет стоп-слова, вычисляет частоту слов и выбирает ключевые предложения, которые составляют сжатое содержание. Вы можете изменить параметр compression_ratio, чтобы контролировать степень сжатия текста. Убедитесь, что у вас установлены необходимые библиотеки NLTK перед запуском программы.
Свидетельство о публикации №124070100502