Python | Урок 13. Библиотека Natasha: извлекаем имена и фамилии из текстов на русском языке

Поделиться
HTML-код
  • Опубликовано: 26 янв 2025

Комментарии • 41

  • @istories_workshop
    @istories_workshop  2 года назад +2

    ❗❗❗Так называемое Министерство юстиции РФ признало «Важные истории» «нежелательной организацией». Так что репост этого и любого другого нашего видео может караться штрафом, а повторный репост - уголовным делом.
    Но никто не может запретить вам смотреть и думать. Поэтому подписывайтесь на наш канал, просите подписаться своих друзей и оставайтесь с нами - в это темное время выжить мы сможем только вместе.

    • @АртурАракелов-к8г
      @АртурАракелов-к8г Год назад

      а за что хоть ваш признали что сказали в итоге? Да и хотите задание по круче: сделайте отбор всех дел по статье 105. ч1 потом проанализируйте степень жестокости убийства и ваш ждет сюрприз: 40% дел по этой статье явно тянут на часть вторую - за такое раследование я думаю вам тоже дадут звание очень нежелательной организации

  • @Andy-pn3ww
    @Andy-pn3ww 3 года назад +2

    Афигеть. Посмотрел и сразу переписал анализатор для SEO. Молодцы! И да, лучшая серия статей (и видео) про написание парсера.
    Больше программирования, больше python, больше работы с данными!

  • @byGalimyanov
    @byGalimyanov 3 года назад +11

    О, я на этой библиотеке свою ВКР писал по автоматическому аннотированию информации))

  • @pervosled
    @pervosled 3 года назад +5

    Очень интересно, спасибо!

  • @EsinaViwn9
    @EsinaViwn9 10 месяцев назад

    Добрый день из будущего (настоящего). Вы не извлекали из этих приговоров длину срока? Очень интересно, есть ли подобные a la natasha решения для это проблемы. Решение в видео про регулярки увидел. Это лучшее, что можно сделать?

  • @СлаваУкраине-ь2т
    @СлаваУкраине-ь2т 2 года назад

    Добрый день. А есть аналогичная библиотека, где можно изымать имена и фамиии, но только для английского языка?

  • @stregoikakanitelka2115
    @stregoikakanitelka2115 3 года назад +3

    Добрый день. Внимательно всегда за спикером делаю урок. В этом - не смогла ничего сделать с самого начала. Пошла в текстовую версию. Переписала из текстовой версии первое окно, это импорт из Наташи. Выдает ошибку: кто такая Наташа. И правда: как моя тетрадка юпитер.ноутбук с 13-м уроком узнает, что такое Наташа? Тетрадка с уроком на гитхабе тоже недоступна, выдает ошибку ("Sorry, something went wrong. Reload?"). Может, для большинства это очевидное какое-то дело и я глупость спрашиваю, конечно.

    • @istories_workshop
      @istories_workshop  3 года назад +4

      Здравствуйте! Глупых вопросов не существует. Если вы что-то не поняли, значит, это мы разъяснили не достаточно хорошо. Поэтому спасибо большое, что задали эти вопросы. Давайте разбираться)
      Вы правы, кажется, на видео мы пропустили один шаг. Если раньше у вас Natasha не было, то сначала нужно эту библиотеку установить. Поэтому первой строчкой кода должно быть
      pip install natasha
      а второй строчкой
      from natasha import (
      и все должно работать.
      (подробнее о начале работы с библиотекой Natasha можно почитать в блоге ее разработчиков, мы оставляли ссылку в текстовой версии, но сюда тоже продублируем github.com/natasha/natasha)
      Очень странно, что тетрадка у вас не открылась. Возможно, были какие-то проблемы на стороне GitHub - попробуйте еще раз, пожалуйста
      github.com/iStoriesMedia/python_lessons/blob/main/Python.%20Библиотека%20Natasha.ipynb
      Как попробуете - напишите нам пожалуйста, заработало или нет.
      Если что, писать можно в телеграм-чатик при Мастерской - там вопросы мы увидим быстрее
      t.me/istories_helloworld

    • @stregoikakanitelka2115
      @stregoikakanitelka2115 3 года назад

      ​@@istories_workshop Наташу скачала. Спасибо большое, это было не совсем очевидно. Тетрадка позже открылась на гитхабе. Но - все равно не получается. Придется репетитора брать или как-то добирать по-другому, я не знаю. Бьюсь над каждым уроком по несколько часов, но ничего не получается. Даже при копировании с тетрадки с поправкой на мои файлы все равно выдает ошибки. Гугл предлагает варианты, но они тоже не работают.

    • @constantinews
      @constantinews 3 года назад

      @@stregoikakanitelka2115
      Если возникают какие-то проблемы с установкой и работой локально, то, возможно, вам стоит попробовать повторять блокнот в Google Colab, а не локально.
      В некоторых курсах для начинающих аналитиков рекомендуют Colab вместо jupyter, так как нет гемора с установкой, правами, версиями т.п.
      Понимаю, что проблема вряд ли ещё актуальна, но, на всякий случай написал.

  • @крпрддд
    @крпрддд 3 года назад

    когда пытаюсь привести слова к начальной форме выдает такую ошибку: 'NoneType' object has no attribute 'keys'. В чем может быть проблема?

    • @istories_workshop
      @istories_workshop  3 года назад

      Не видя ваш код, сложно сказать.
      ДАННОЕ СООБЩЕНИЕ (МАТЕРИАЛ) СОЗДАНО И (ИЛИ) РАСПРОСТРАНЕНО ИНОСТРАННЫМ СРЕДСТВОМ МАССОВОЙ ИНФОРМАЦИИ, ВЫПОЛНЯЮЩИМ ФУНКЦИИ ИНОСТРАННОГО АГЕНТА, И (ИЛИ) РОССИЙСКИМ ЮРИДИЧЕСКИМ ЛИЦОМ, ВЫПОЛНЯЮЩИМ ФУНКЦИИ ИНОСТРАННОГО АГЕНТА
      Есть два пути:
      - попробуйте погуглить свою ошибку, скорее всего, такое уже у кого-то было.
      - пришлите скриншот вашего кода и описание ошибки в наш чат t.me/istories_helloworld попробуем помочь)

  • @МихаилЗиннатуллин-в3х

    Круто, только вот как применить эту библиотеку к столбцу датафрейма, где у меня записаны сообщения, например для извлечения фио...

    • @liveworkdie
      @liveworkdie 2 года назад

      Удалось найти решение?

    • @МихаилЗиннатуллин-в3х
      @МихаилЗиннатуллин-в3х 2 года назад

      @@liveworkdie регулярные выражения неплохо справились

    • @liveworkdie
      @liveworkdie 2 года назад

      @@МихаилЗиннатуллин-в3х понятно. Тоже решал сейчас эту задачу на датафрейме. Нужно было извлекать топонимы из строки. Оформил в функцию, функцию применил через apply. Что делать с OrderedDict пока не придумал, но первый шаг есть. Например:
      def get_address(value):
      try: return [geo_obj.fact.as_json for geo_obj in addr_extractor(value)]
      except: return np.nan
      df['col'].apply(get_address)

  • @MrRoma1800
    @MrRoma1800 Год назад

    display(doc.sents[:5]) Это разве PYTHON - команда?

  • @R4HKN
    @R4HKN 3 года назад

    Какие системные требования для данной библиотеки по памяти ?

    • @istories_workshop
      @istories_workshop  3 года назад

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

    • @R4HKN
      @R4HKN 3 года назад

      Очень расплывчатое объяснение в документации. Не понятно насколько старое железо потянет.

    • @neironari1607
      @neironari1607 3 года назад

      @@R4HKN у вас так же размывчатые требования. Штук сто скачанных статей потянет на любом железе, миллион нет. Зависит от объёмов

    • @PavelAjtkulov
      @PavelAjtkulov 3 года назад

      @Андрей Малинин насколько я знаю, там только технологии парсеров, куча правил и подчищенные словари. Никаких сетей и тяжелых моделей

  • @radiomedusa8295
    @radiomedusa8295 3 года назад +1

    А как допустим извлечь существительные из текста при помощи Наташи?

    • @istories_workshop
      @istories_workshop  3 года назад +5

      Часть кода
      doc.tag_morph(morph_tagger)
      display(doc.tokens[:5])
      показывает пример морфологического разбора слов текста.
      У каждого слова в output есть атрибут "pos=". Там, где ops-NOUN - слово является существительным.
      Т.е. можно просто проверять if pos == NOUN - и если да, сохранять это слово себе, например, в список.

  • @akmiable
    @akmiable 3 года назад +3

    Я так понимаю, что нормализация фамилий не всегда корректно проходит и требуется дополнительный анализ. Возможно фамилии женщин неверно нормализованы. В вашем примере: Русинова - Русинов, Русинов - Русины. Если в небольшом примере столько возможных ошибок, то в больших текстах их будет больше. Я думаю нужно быть крайне внимательным с анализом фамилий.

    • @prostohodim
      @prostohodim 3 года назад

      Как я понимаю, задача стоит распарсить имена. Но впоследствии валидирует варианты все равно человек. Плюс, в один кластер имён можно помещать не просто одинаковые нормализованные имена, но и просто близкие по какой-либо метрике( тот же левенштайн, например)

    • @istories_workshop
      @istories_workshop  3 года назад +5

      Да, она ошибается с нормализацией. Поэтому в расследовании про "штатных" понятых мы ее не использовали, чтобы не рисковать.

    • @akmiable
      @akmiable 3 года назад

      @@istories_workshop расскажите про инструменты которые вы используете в своих расследования и/или исследованиях.

    • @istories_workshop
      @istories_workshop  3 года назад +1

      @@akmiable в исследованиях один из самых полезных - Python + библиотеки. Про библиотеки как раз начинаем рассказывать. Stay tuned

  • @Алексей-б6к5е
    @Алексей-б6к5е 3 года назад +1

    Заметили, когда вы расссматриваете реальные кейсы из своей работы(журналиста). "ТоварищЪ майор" не з@лупается)))

  • @antongoncharik4311
    @antongoncharik4311 2 года назад

    Такое оппозиционное IT мне по вкусу!!

  • @Дмитрий-э3и4с
    @Дмитрий-э3и4с 2 года назад

    а разве правильно нормализовала Русинов А.А -> Русины А.А?

  • @leonleon9909
    @leonleon9909 3 года назад +2

    Стукачей и лже понятых публиковать нужно.

    • @istories_workshop
      @istories_workshop  3 года назад +1

      Список подозрительных понятых мы опубликовали в материале. Надеемся, это хоть как-то повлияет на ситуацию

    • @tochkatoshkatochkakg.6784
      @tochkatoshkatochkakg.6784 Год назад

      @@istories_workshop ддддд 😗😏🥰🥰🥰😅😅😆🤣🧐😒😒😐😐😐😐🧐😐😒😒😒😐😐😾😶😶😶😶😶😶🤯🤯🤐🤐🤐🤐🤐🤐🎯🏒🏒🏒🏒

    • @tochkatoshkatochkakg.6784
      @tochkatoshkatochkakg.6784 Год назад

      @@istories_workshop ьлл

    • @tochkatoshkatochkakg.6784
      @tochkatoshkatochkakg.6784 Год назад

      @@istories_workshop ддш

  • @BooS983
    @BooS983 Год назад

    Ох уж эти борцуняшки с рыжымом