Найти в Дзене

Первый навык Розалии. Часть 4

Начинаем накачивать ассистента Розалию навыками. Напомню, Розалия должна уметь: Фокусируемся только на этих задачах. Итак, погнали. Модуль wikipedia Для того, чтобы Розалия умела искать нужную мне информацию на ресурсах Wikipedia, я воспользуюсь модулем «wikipedia». В данном модуле уже реализован поиск на ресурсе. Кто читал предыдущую статью «Цель — это начало» знают, что для использования модуля необходимы два действия; Установка модуля осуществляется в командной строке: я введу команду pip install wikipedia. pip — это установщик пакетов, скачивает внешние модули из репозитория Python. В репозитории Python собрана огромная библиотека пакетов. Богатая библиотека внешних модулей - одно из достоинств языка программирования Python. Директива install говорит установщику: - установи модуль wikipedia В начале был проект Чтобы импортировать модуль wikipedia в программу, сначала создам проект программы. Код на Python можно набрать хоть в текстовом редакторе. только сохранить файл нужно с
Поиск в Wikipedia. PYTHON
Поиск в Wikipedia. PYTHON

Начинаем накачивать ассистента Розалию навыками. Напомню, Розалия должна уметь:

  1. Выполнять поиск в Wikipedia
  2. Воспроизводить музыку
  3. Отправлять письма
  4. Открывать сайты

Фокусируемся только на этих задачах. Итак, погнали.

Модуль wikipedia

Для того, чтобы Розалия умела искать нужную мне информацию на ресурсах Wikipedia, я воспользуюсь модулем «wikipedia». В данном модуле уже реализован поиск на ресурсе. Кто читал предыдущую статью «Цель — это начало» знают, что для использования модуля необходимы два действия;

  1. Установить модуль
  2. Импортировать его в программу

Установка модуля осуществляется в командной строке: я введу команду

pip install wikipedia.

pip — это установщик пакетов, скачивает внешние модули из репозитория Python. В репозитории Python собрана огромная библиотека пакетов. Богатая библиотека внешних модулей - одно из достоинств языка программирования Python.

Директива install говорит установщику: - установи модуль wikipedia
Установка модуля wikipedia
Установка модуля wikipedia

В начале был проект

Чтобы импортировать модуль wikipedia в программу, сначала создам проект программы. Код на Python можно набрать хоть в текстовом редакторе. только сохранить файл нужно с расширением py. Как это делать написано в статье «Установка Python». Возможности встроенного текстового редактора типа блокнота меня не устраивают. Так, как мне придется работать с командной стройкой и текстовым редактором - переключение между ними не очень радует. И я подумал нельзя ли сочетать терминал командной строки и редактор кода? К счастью есть терминалы командной строки с встроенным редактором кода под Python. Этот терминал вы можете скачать c GITHUB по ссылке . В CMDER присутствует уже встроенный редактор — nano.

На самом деле в cmder встроено два редактора: nano и vi. Мне удобно пользоваться этими редакторами. Вы же можете скачать любой редактор, например - Atom.

Откройте cmder и наберите команду mkdir d:\rozalia — этой командой я создаю каталог на диске d c именем rozalia (используйте ваше имя диска). Именно здесь буду хранить файлы проекта ассистента. Затем в командной строке ввожу

nano d:\rozelia\search_wiki.py

Не трудно догадаться, что второй командой я открываю файл search_wiki.py через редактор nano. Так как файл search_wiki.py я не создавал, то nano просто создаст его за меня по указанному пути d:\rozalia. Перед вами открылся чистый лист редактора nano. В нем я буду писать историю Розалии - голосового ассистента на Python.

Поиск на ресурсе Wikipedia в трех строках кода

В трех строках кода Розалия приобретёт свой первый навык. Для этого открою файл search_wiki.py через редактор nano —

nano d:\rozelia\search_wiki.py

и запишу три строчки кода:

import wikipedia
wikipedia.set_lang("ru")
wikipedia.summary("Python",sentences=5)

Командой import wikipedia я говорю Python, что хочу использовать все возможности внешнего модуля wikipedia в своей программе. А чтобы обратиться к модулю из программы нужно записать имя модуля и через точку его метод. Например, wikipedia.summary("Python",sentences=5) — ищет строку, заключенную в кавычках («Python») на ресурсах Wikipedia, и возвращать в качестве результата 5 предложений из найденного содержания (sentences=5). По умолчанию модуль «wikipedia» обращается к англоязычной версии ресурса Wikipedia, но эта проблема легко решается добавлением строки кода

wikipedia.set_lang("ru").

Чтобы понять, что делает summary, я открою ресурс Wikipedia и проделаю все действия выполняемые программой.

  • Открою ресурс Wikipedia
  • Выберу язык — русский.
  • В строке поиска «вбиваю» Python.
Поиск на ресурсе Wikipedia
Поиск на ресурсе Wikipedia

В результате я получил статью о «Python». Пять предложений из этой статьи и будет результатом выполнения команды

wikipedia.summary(„Python“, sentences=5).

С помощью аргумента sentences я могу задавать любое количество предложений из статей Wikipedia, достаточно изменить число 5 на любое другое. Теперь настало время отправить программу на исполнения. Запускаю программу командой:

python d:\rozalia\search_wiki.py.

И ничего не происходит. Я не указал, что дальше делать интерпретатору Python - то ли вывести эти пять предложений на экран, то ли сохранить - Python не знает. Исправлю это, изменю немного код:

import wikipedia
wikipedia.set_lang("ru")
print(wikipedia.summary("Python",sentences=5))
Поиск в Wikipedia
Поиск в Wikipedia

Командой print я явно говорю Python, что хочу вывести результат исполнения функции summary () на экран монитора. Теперь снова запущу файл на исполнение. То, что надо!

Продумывать пару шагов вперед - критерий успеха

Я описал навык Розалии, искать нужную мне информацию. Но сам навык без сущности, которая им владеет - просто воздух. К примеру, у человека есть навык поднимать руку, но нет самого человека. Или есть навык забить гвоздь, но нет гвоздя. К тому же, искать в Wikipedia только одно слово - это бесполезное занятие. А я сделал способной Розалию искать именно одно слово - «Python». Но мне нужно, чтобы она искала любое слово или термин. Например, если Розалия встречает в моем вопросе слово «wikipedia», то запускает навык поиска на этом ресурсе. Если скажу «включи музыку», то запускается навык «воспроизведения музыки» и т.д.

Об этом и о многом другом я расскажу в следующих статьях. И, да, главное на что мне предстоит ответить в следующий раз:

Чем отличается сущность от ее способностей и как их соединить вместе? Сущностью можно назвать Розалию, а способностями - ее навыки.

Продолжу творить. Если повезёт за семь дней закончу и родится новоиспечённая "Ева". Погружение в python-код только начинается. До встречи на другой глубине)