Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Воган Ли - Python для хакеров (Библиотека программиста) - 2023.pdf
Скачиваний:
2
Добавлен:
07.04.2024
Размер:
14.76 Mб
Скачать

Усложняем проект: ночные игры      109

Настройка параметров max_words и relative_scaling также влияет на представление облака слов. В зависимости от нужного вам уровня детализации все эти вариации могут как помочь, так и навредить.

Итоги

Вэтой главе мы использовали техники экстрактивной суммаризации, чтобы создать краткий обзор речи Мартина Лютера Кинга-младшего «У меня есть мечта». Затем мы использовали бесплатный готовый модуль gensim для суммаризации речи адмирала Макрейвена, что потребовало еще меньшего количества кода.

Взавершение же мы применили модуль wordcloud для создания интересного дизайна с использованием облака слов.

Дополнительная литература

Книга «Automate the Boring Stuff with Python: Practical Programming for Total Beginners»1 (No Starch Press, 2015) Эла Свейгарта (Al Sweigart) раскрывает тему регулярных выражений (глава 7) и веб-скрапинга (глава 11), включая использование модулей requests и Beautiful Soup.

«Make Your Bed: Little Things That Can Change Your Life… And Maybe the World»2, 2nd ed. (Grand Central Publishing, 2017) Уильяма Макрейвена (William H. McRaven) — книга для по саморазвития, в основу которой легло напутственное обращение адмирала в Техасском университете. Саму речь вы также можете найти онлайн на https://www.youtube.com/.

Усложняем проект: ночные игры

Используйте wordcloud для создания новой игры в рамках сюжета «Ночных игр». Сделайте суммаризацию описаний фильмов из Википедии или IMDb и узнайте, смогут ли ваши друзья угадать название кино. На рис. 3.8 показаны некоторые примеры.

Если вы не особо увлекаетесь кино, то выберите другую сферу. В качестве альтернативы можно взять известные романы, эпизоды «Звездного пути» («Star Trek») или тексты песен (рис. 3.9).

1Свейгарт Э. «Автоматизация рутинных задач с помощью Python: практическое руководство для начинающих».

2Макрейвен У. «Заправляй кровать. 10 простых правил, которые помогут изменить твою жизнь и, возможно, весь мир».

110      Глава3. Суммаризация текстаспомощьюобработкиестественногоязыка

Рис. 3.8. Облака слов для двух фильмов, вышедших в 2010 году: «Как приручить дракона» («How to Train Your Dragon») и «Принц Персии» («Prince of Persia»)

Рис. 3.9. Облако слов, созданное из текста песни «I.G.Y.» Дональда Фейгена

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

Усложняем проект: суммаризация повести      111

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

Усложняем проект: суммаризация суммаризаций

Протестируйте свою программу из проекта 3 на ранее суммаризованном тексте, например страницах Википедии. Всего пять предложений сформировали хороший обзор gensim.

Ввести максимальное количество слов в предложении для суммаризации: 30 Ввести количество предложений в резюме: 5

СУММАРИЗАЦИЯ:

Gensim is implemented in Python and Cython.

Gensim is an open-source library for unsupervised topic modeling and natural language processing, using modern statistical machine learning.

[12] Gensim is commercially supported by the company rare-technologies.com, who also provide student mentorships and academic thesis projects for Gensim via their Student Incubator programme.

The software has been covered in several new articles, podcasts and interviews.

Gensim is designed to handle large text collections using data streaming and incremental online algorithms, which differentiates it from most other machine learning software packages that target only in-memory processing.

Далее попробуйте применить версию gensim из проекта 4 к скучным соглашениям на обслуживание, которые никто никогда не читает. Пример соглашения об использовании служб Microsoft доступен по адресу https://www.microsoft.com/ en-us/servicesagreement/default.aspx1. Конечно же, чтобы оценить результаты, вам придется прочитать все соглашение, чего практически никто не делает. Такой вот замкнутый круг!

Усложняем проект: суммаризация повести

Напишите программу, которая делает суммаризацию романа «Собака Баскервилей» по главам. Пусть резюме глав будут краткими — около 75 слов каждое.

Для получения копии повести с названиями глав выполните скрапинг текста с сайта Project Gutenberg при помощи следующей строки кода:

url = 'http://www.gutenberg.org/files/2852/2852-h/2852-h.htm'.

1 https://www.microsoft.com/ru-ru/servicesagreement/ — на русском языке.

112      Глава3. Суммаризация текстаспомощьюобработкиестественногоязыка

Чтобы разделить элементы глав, а не абзацев, используйте такой код:

chapter_elems = soup.select('div[class="chapter"]') chapters = chapter_elems[2:]

Вам также понадобится выбрать элементы абзацев (p_elems) из каждой главы, используя тот же способ, что и в dream_summary.py.

Сниппеты ниже показывают некоторые результаты при использовании 75 слов для суммаризации каждой главы:

--snip--

Chapter 3:

"Besides, besides—" "Why do you hesitate?" "There is a realm in which the most

acute and most experienced of detectives is helpless." "You mean that the thing is supernatural?" "I did not positively say so." "No, but you evidently think it." "Since the tragedy, Mr. Holmes, there have come to my ears several incidents which are hard to reconcile with the settled order of Nature." "For example?" "I find that before the terrible event occurred several people had seen a creature upon the moor which corresponds with this Baskerville demon, and which could not possibly be any animal known to science.

--snip--

Chapter 6:

"Bear in mind, Sir Henry, one of the phrases in that queer old legend which Dr. Mortimer has read to us, and avoid the moor in those hours of darkness when the powers of evil are exalted." I looked back at the platform when we had left it far behind and saw the tall, austere figure of Holmes standing motionless and gazing after us.

Chapter 7:

I feared that some disaster might occur, for I was very fond of the old man, and I knew that his heart was weak." "How did you know that?" "My friend Mortimer told me." "You think, then, that some dog pursued Sir Charles, and that he died of fright in consequence?" "Have you any better explanation?" "I have not come to any conclusion." "Has Mr. Sherlock Holmes?" The words took away my breath for an instant but a glance at the placid face and steadfast eyes of my companion showed that no surprise was intended.

--snip--

Chapter 14:

"What's the game now?" "A waiting game." "My word, it does not seem a very cheerful place," said the detective with a shiver, glancing round him at the gloomy slopes of the hill and at the huge lake of fog which lay over the Grimpen Mire.

Far away on the path we saw Sir Henry looking back, his face white in the moonlight, his hands raised in horror, glaring helplessly at the frightful thing which was hunting him down.

--snip--

Усложняем проект: важно не только что ты говоришь, но и как!      113

Усложняем проект: важно не только что ты говоришь, но и как!

Написанные вами на данный момент программы суммаризации текста выводят предложения строго по степени их важности. Это означает, что последнее предложение речи (или любого текста) в резюме может стать первым. Цель суммаризации — находить важные предложения, но ничто не мешает нам изменить порядок их отображения.

Напишите программу суммаризации текста, отображающую наиболее важные предложения в исходном порядке их появления. Сравните результаты с результатами программы в проекте 3. Удалось ли таким образом заметно улучшить резюме?