Давайте теперь посмотрим как герои взаимодействуют друг с другом. Для этого, опять же, проанализируем их биографии и попробуем найти упоминания героев на страницах биографии других героев. Если Гарри Поттер как-то общался с Джинни Уизли, то мы будем ожидать, что на странице биографии Джинни Уизли про Гарри Поттера что-то написано. Там хотя бы упоминается его имя. Для этого, опять же, пройдем по всем нашим страницам. мы уже умеем это делать, мы только что это сделали. На каждой из них попробуем найти имя других героев. При этом нам будет нужно сначала создать список этих имен, вспомнив о том, что в русском языке достаточно богатая морфология. В частности от имени Гарри Поттера мы можем взять слово "Гарри", от имени Рональда Уизли мы можем взять имя "Рон", а вот с Гермионой Грейнджер так легко не получится, потому что придется взять только неизменяемую часть ее имени. Если мы возьмем слово "Гермиона", то мы не увидим если вдруг кто-то употребил это слово в другом виде, например, в виде "Гермионой" или "Гермионе". Соответственно, мы создадим список из имен героев, потом мы создадим словарь множеств, где мы будем хранить информацию о том, какой герой с кем общался. Мы будем пользоваться множествами, потому что нас интересует уникальный список имен, с кем герой взаимодействовал. В этом примере мы не считаем интенсивность. После этого мя опять же пройдемся по всем страницам биографии. На каждой странице поиском по тексту страницы мы попытаемся найти каждое из имен героев из нашего списка. После этого выведем на экран статистику, кто с кем разговаривал, сравним с содержимым книг, постараемся удержаться без спойлеров. Давайте попробуем. Для этого возьмем уже готовый код программы, который мы только что написали, который подключает два модуля request и BeautifulSoup, устанавливает адрес сайта, скачивает оттуда главную страницу, находит там все ссылки, отбирает из них только те ссылки, которые ведут на наш сайт. Смотрит, какие из этих ссылок вообще открываются, подключает BeautifulSoup для каждой из страниц биографии и копирует текст сайта в переменную body_text для каждой из страниц биографии. Теперь вместо строчки [БЕЗ ЗВУКА] про вывод статистики и длины попробуем пройти по массиву героев. Для этого добавим массив героев в нашу программу, куда-нибудь вне цикла, чтобы он не перезаписывался каждый раз. И теперь перед поиском исправим кодировку. В прошлый раз, когда мы стали статистику, кодировка для нас была не очень важна, ведь мы просто смотрели на длину биографии, мы не искали по словам. Теперь же нам важно, чтобы мы написали имена героев, и компьютер прочитал имена героев внутри биографий одинаково, поэтому перед вызовом BeautifulSoup поправим кодировку, указав, что мы пользуемся универсальным. Теперь мы можем пройти по всем именам героев и посчитать, как они взаимодействуют. Для начала проверим, есть ли у нас в нашем словаре где мы будем хранить взаимодействия ключ для героя, чью биографию мы сейчас читаем. Если его вдруг нет, то создадим такой ключик, присвоив ему пустое множество. Теперь, когда мы готовы искать героев, мы можем пройти по всем их именам из списка героев. И если у нас в руках (то есть в переменной name) лежит какое-то другое имя было бы неправильно искать имя героя внутри текста его собственной биографии. [БЕЗ ЗВУКА] [БЕЗ ЗВУКА] Если имя героя упоминается, то мы можем его добавить. [БЕЗ ЗВУКА] [БЕЗ ЗВУКА] [БЕЗ ЗВУКА] Итак, еще раз посмотрим, что мы делаем- мы перебираем все имена героев, убеждаемся, что мы не ищем героя на его собственной страницы. Если имя одного героя встречается в тексте биографии другого героя, считаем, что между ними было какое-то взаимодействие и добавляем в множество героев, с которыми взаимодействовал главный герой анализируемой страницы. Давайте теперь посмотрим на результаты. Для этого переберем всех героев из нашего словаря и для каждого из них укажем список героев через запятую, с которыми он взаимодействовал. [БЕЗ ЗВУКА] Посмотрим на результат. [БЕЗ ЗВУКА] Гарри Поттер как главный герой взаимодействовал практически со всеми. Это неудивительно. А вот госпожа Астория Гринграсс взаимодействовала только с представителями семейства Малфоев. То есть с представителями своего семейства, ведь в конце седьмой книги она вышла за Драко замуж. Так что наша гипотеза о том, что взаимоотношения героев можно проверить, посмотрев на то, как часто они употребляются в биографиях друг друга, тоже подтвердилось. Спасибо. В следующий раз мы научимся анализировать данные таблиц. [БЕЗ ЗВУКА]