Pull to refresh
@resetmeread⁠-⁠only

Скромный пастух нулей и единиц…

Send message

Yargy-парсер и библиотека Natasha. Извлечения структурированной информации из текстов на русском языке

Reading time12 min
Views89K
В 2020 году библиотека Natasha значительно обновилась, на Хабре опубликована статья про актуальную версию. Чтобы использовать инструменты, описанные в этом тексте, установите старую версию библиотеки pip install natasha<1 yargy<0.13.

Раздел про Yargy-парсер актуален и сейчас.


Есть стандартная задача извлечения именованных сущностей из текста (NER). На входе текст, на выходе структурированные, нормализованные объекты, например, с именами, адресами, датами:



Задача старая и хорошо изученная, для английского языка существует масса коммерческих и открытых решений: Spacy, Stanford NER, OpenNLP, NLTK, MITIE, Google Natural Language API, ParallelDots, Aylien, Rosette, TextRazor. Для русского тоже есть хорошие решения, но они в основном закрытые: DaData, Pullenti, Abbyy Infoextractor, Dictum, Eureka, Promt, RCO, AOT, Ahunter. Из открытого мне известен только Томита-парсер и свежий Deepmipt NER.

Я занимаюсь анализом данных, задача обработки текстов одна из самых частых. На практике оказывается, что, например, извлечь имена из русского текста совсем непросто. Есть готовое решение в Томита-парсере, но там неудобная интеграция с Python. Недавно появилось решение от ребят из iPavlov, но там имена не приводятся к нормальной форме. Для извлечения, например, адресов («ул. 8 Марта, д.4», «Ленинский проезд, 15») открытых решений мне не известно, есть pypostal, но он чтобы парсить адреса, а не искать их в тексте. C нестандартными задачами типа извлечения ссылок на нормативные акты («ст. 11 ГК РФ», «п. 1 ст. 6 Закона № 122-ФЗ») вообще непонятно, что делать.

Год назад Дима Веселов начал проект Natasha. С тех пор код был значительно доработан. Natasha была использована в нескольких крупных проектах. Сейчас мы готовы рассказать о ней пользователям Хабра.
Natasha — это аналог Томита-парсера для Python (Yargy-парсер) плюс набор готовых правил для извлечения имён, адресов, дат, сумм денег и других сущностей.
В статье показано, как использовать готовые правила из Natasha и, самое главное, как добавлять свои с помощью Yargy-парсера.
Читать дальше →

#2 Нейронные сети для начинающих. NumPy. MatplotLib. Операции с изображениями в OpenCV

Reading time16 min
Views26K

Это вторая статья из серии введения в «Нейронные сети для начинающих». Здесь и далее мы постараемся разобраться с таким понятием — как обработка графических данных, визуализация данных, а также на практике решим пару простых задач. Предыдущая статья — #1 Нейронные сети для начинающих. Решение задачи классификации Ирисов Фишера
Маленький совет из будущего: «В данной статье будут затронуты некоторые понятия, о которых я писал раньше, так что для полного понимания темы, советую прочитать и предыдущую статью»
На самом деле, на хабре было множество публикаций по этой теме, но все они говорят о разных вещах. Давайте разберёмся и соберём всё в одну кучку, для полноценного понимания картины мира.
Читать дальше →

Барселона: как спасти наследие Ильдефонса Серды

Reading time21 min
Views11K

Бьюсь об заклад, что имя этого человека малоизвестно за пределами сферы архитектуры, градостроительства и, возможно, истории искусств. А ведь Серда заложил основы современной урбанистики с междисциплинарным подходом. Именно он разработал знаменитый L'Eixample (Эшампле) — план расширения Барселоны в середине XIX в. на основе широких проспектов и улиц с восьмиугольными кварталами, давший имя всему центральному району и ставший первым примером масштабной городской трансформации. Сегодня Барселона пытается организовать её вторую серию — через программу суперкварталов вновь сделать центр пешеходным, зелёным, удобным для жизни и общения. Но вернуться к идеалам Серды, будучи центром крупнейшей на Средиземном море агломерации и туристической столицей, крайне непросто. Давайте разбираться!
Читать дальше →

Практические рекомендации по работе с Docker для Python-разработчиков

Reading time28 min
Views118K

Прим. Wunder Fund: в этой длииинной статье вы найдете ряд полезных советов по работе с Docker, как общего характера, так и Python-специфичных. Хоть мы и давно используем Docker в работе, про некоторые советы мы подумали "а что, так можно было?". Советуем вначале пролистать статью, и отметить штуки, которые покажутся актуальными для вашей текущей ситуации.

Читать далее

Динамическая генерация пользователей в Linux. Разбираемся с NSS

Reading time7 min
Views7.3K

Как известно, пользователи и группы в Linux определяются по целочисленному идентификатору, который используется при описании владельца и группы файла, а также для создания контекста текущего пользователя после авторизации. Но как это работает внутри? И можно ли создать свою реализацию для взаимного преобразования имен и идентификаторов и для аутентификации пользователей? В этой статье мы детально рассмотрим анатомию подсистем NSS (Name Service Switch) и создадим свою простую реализацию подсистем для использования с текстовым файлом со списком пользователей и паролей. Во второй части статьи мы поговорим о PAM и обсудим возможные способы ее реализации и применения.

Читать далее

Прагматичный набор модификаций для Windows 10 на старом железе

Reading time7 min
Views50K

В статьях про раздувание софта часто упоминают лаги Windows 10/11. Главная причина — ожирение кода в новых версиях. Для работы ОС с каждым годом требуется всё больше ресурсов. После засорения системы приходится ждать 10–20 секунд, пока отрисуются пункты контекстного меню по правой кнопке…

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

Но что делать, если приходится поневоле сидеть под Win10/11? Тогда остаётся одно — бороться с ожирением софта хирургическим путём. А именно, отключить ненужные модули и компоненты, развестистый GUI, анимацию и спецэффекты, удалить лишний софт, почистить реестр. Другими словами, спустить жирок из системы. После мануальных процедур винда начинает шевелиться значительно бодрее.
Читать дальше →

F-строки в Python мощнее, чем можно подумать

Reading time5 min
Views156K

Форматированные строковые литералы, которые ещё называют f-строками (f-strings), появились довольно давно, в Python 3.6. Поэтому все знают о том, что это такое, и о том, как ими пользоваться. Правда, f-строки обладают кое-какими полезными возможностями, некоторыми особенностями, о которых кто-нибудь может и не знать. Разберёмся с некоторыми интересными возможностями f-строк, которые могут оказаться очень кстати в повседневной работе Python-программиста.

Читать далее

Неожиданная находка, которая освобождает 20 GB неиспользованного индексного пространства

Reading time14 min
Views37K

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

Начнем с конца: в итоге нам удалось освободить более чем 70 GB не оптимизированного и неиспользуемого пространства без удаления индексов и данных. 

Читать далее

Так все же, насколько быстры каналы в Linux?

Reading time26 min
Views23K

В этом посте будет проанализировано, как каналы Unix реализуются в Linux. Для этого мы напишем и в несколько итераций оптимизируем тестовую программу, которая записывает и считывает данные через канал.  

Читать далее

Как мы с помощью NLP облегчаем поиск людей с суицидальными наклонностями

Reading time20 min
Views6.7K

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

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

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

Читать далее

Топ-5 провальных решений при разработке на Tarantool

Reading time8 min
Views7.6K

Tarantool — гибкий инструмент для разработки высоконагруженных систем хранения данных. На нём пишут очереди, кеши и мастер-хранилища с разной топологией.Часто разработчики начинают работать с Tarantool, имея большой опыт работы с SQL, и пытаются применять привычные подходы из реляционных баз данных. В результате приложения становятся «хрупкими», теряют данные или деградируют в производительности.

Меня зовут Игорь, и сегодня я покажу, как антипаттерны влияют на производительность и стабильность приложений, и с какими пятью провальными решениями при разработке на Tarantool я столкнулся, работая с крупными продами. А также предложу способы избегания этих проблем.

Это текстовая версия доклада, который я рассказывал на HighloadFoundation 2022.
Читать дальше →

DIY. Книги для всех, даром

Reading time7 min
Views36K

Lingtrain cover


⚡ Градиент обреченный


Upd. 11.06.2022 Многие заинтересовались генерацией изображений нейросетями. Вот Colab (интерактивная среда для запуска кода) для рисования картинок в стиле pixel art по текстовому описанию. Просто запускайте, ближе к концу увидете ячейку для ввода текста. Примеры картинок из Colab'а в комментариях.


Два года назад я начал делать небольшой проект, связанный с обработкой текстов на иностранных языках. Он постепенно развивался и стал использоваться лингвистами в НКРЯ, а энтузиасты сохранения малых языков используют его для расширения своих параллельных корпусов.


Сегодня же я расскажу как при помощи него создать полноценную параллельную книгу на разных языках. Книга будет красиво сверстана в PDF, иметь содержание, обложку и две выровненные по смыслу колонки текста. Такие книги служат отличным подспорьем при изучении иностранного языка. Найти их, однако, не так просто, и скорее всего это будут книги для детей или избранная классика. Полный пример готовой книги можно посмотреть здесь. Под капотом у приложения NLP модели, поддерживаемых языков более ста.


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

Сделать книжку

Кто они, тормоза прогресса?

Reading time6 min
Views47K

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

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

Читать далее

Три подхода к анализу текстов

Reading time5 min
Views8.4K

Для выявления ключевых слов, для начала будет решена задача кластеризации на тематики текстов с помощью метода LDA (Latent Dirichlet Allocation). После этого будет решаться задача, непосредственно, выявления ключевых словосочетаний с помощью предобученной модели Bert. И завершающим будет метод WordToVec, служащий для решения задачи поиска наиболее семантически похожих слов в тексте.

Читать далее

Водопровод в современной квартире

Reading time11 min
Views101K

Здравствуйте! Тема ремонта актуальна для всех и во все времена. Я занимаюсь монтажом сантехники и знаю, что разобраться с нуля в этом деле довольно сложно. Но чтобы проконтролировать качество работ надо хоть немного разбираться в сантехнике. Я в краткой форме освятил ключевые моменты на которые нужно обращать внимание. Надеюсь, это будет полезная статья.

Читать далее

Как перевести деньги из России в Армению в 2023 году?

Reading time4 min
Views63K

Продолжение рассказа про Армению, которая в 2022 году стала центром притяжения для многих россиян. Армения привлекает достаточно широкими возможностями для использования рубля, точнее его конвертации с целью, например, приобретения недвижимости в Армении или других странах а также возможностью получения фрилансерами переводов из-за границы с последующим переводом обратно в рубль.

Совсем недавно ЦБ расширил лимит на вывод денег в дружественные страны до 50000 USD или эквивалента в другой валюте. Лимит от ЦБ РФ , выставленный на платежные системы на данный момент составляет 5000$ в месяц или эквивалент.

Неизвестно, как будут меняться лимиты от ЦБ в ближайшем будущем. Все зависит от соотношения импорт/экспорт и дальнейших приключений РФ на мировой арене, но одно можно сказать точно, лимиты пока никак не затрагивают рубль.

Наиболее популярные виды переводов денег из России в Армению:

Читать далее

3 способа использовать box-shadow в CSS

Reading time7 min
Views109K

Тени помогают сделать визуальную составляющую сайта интересной и эстетичной. В посте рассмотрим свойство CSS box-shadow и то, как его можно стилизовать.

Читать далее

Сказ о том, как мы Python-микросервисы для облака шаблонизировали

Reading time12 min
Views9.4K

Большая боль разработчиков, которые приходят на новый проект — для развертывания сервиса локально нужно пообщаться минимум с десятком людей, не говоря уже про интеграцию с CI/CD-сервером. В один момент мы решили реализовать это удобнее, заодно сократив время онбординга новых сотрудников. 

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

Меня зовут Олег Чуркин. Я больше 10 лет занимаюсь разработкой на Python и сейчас руковожу разработкой нового процессинга платежей в QIWI. Расскажу, как мы реализовали boilerplate-шаблон для сервисов — на примере небольшого стартапа внутри нашей большой компании.

Читать далее

Мы опубликовали модель, расставляющую знаки препинания и заглавные буквы в тексте на четырех языках

Reading time8 min
Views14K


Open In Colab


При разработке систем распознавания речи мы сталкиваемся с заблуждениями среди потребителей и разработчиков, в первую очередь связанными с разделением формы и сути. Одним из таких заблуждений является то, что в устной речи якобы "можно услышать" грамматически верные знаки препинания и пробелы между словами, когда по факту реальная устная речь и грамотная письменная речь очень сильно отличаются (устная речь скорее похожа на "поток" слегка разделенный паузами и интонацией, поэтому люди так не любят монотонно бубнящих докладчиков).


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


По этой причине мы бы хотели поделиться с сообществом системой, которая:


  • Расставляет заглавные буквы и основные знаки препинания (точка, запятая, дефис, вопросительный знак, восклицательный знак, тире для русского языка);
  • Работает на 4 языках (русский, английский, немецкий, испанский);
  • По построению должна работать максимально абстрактно на любом тексте и не основана на каких-то фиксированных правилах;
  • Имеет минимальные нетривиальные метрики и выполняет задачу улучшения читабельности текста;

На всякий случай явно повторюсь — цель такой системы — лишь улучшать читабельность текста. Она не добавляет в текст информации, которой в нем изначально не было.

Читать дальше →

Трискета: носитель, который мы ещё помним

Reading time3 min
Views43K
Современный обыватель может легко обойтись без внешних накопителей данных. Ноутбуки и даже настольные компьютеры в наши дни редко комплектуются дисководами, а производители смартфонов всерьёз экспериментируют с моделями без портов обмена информацией вообще — заряжать такие «кирпичики» предлагают только беспроводным путём.



Подобная эпоха облачных хранилищ и обмена файлами в онлайн-мессенджерах наступила всего с десяток лет назад. До этого мы с удовольствием «нарезали» файлы на «болванки» компакт-дисков или записывали информацию на магнитные носители. Конечно, если вы начали знакомиться с вычислительной техникой после 2000 года, то некоторые из них вы могли не застать.

Единого всенародного любимца не существовало. Каждый стандарт обладал своими особенностями и всегда заметно отличался стоимостью. Это уже лишь позднее пришли USB-флэшки, которые удовлетворили всех и объёмом, и ценой.

Ренессанс винила — это лишнее подтверждение тому, как многочисленные недостатки и огрехи качества звука затмеваются выразительностью образа носителя. Что-то подобное случилось и с троппи-диском, который удивительным образом по сей день живёт в некоторых образах иконок.
Читать дальше →

Information

Rating
Does not participate
Registered
Activity