Size: a a a

Natural Language Processing

2018 March 14

AK

Alexander Kukushkin in Natural Language Processing
1. "Из открытого мне известен только Томито-парсер и свежий Deepmipt NER..." - вы видели https://github.com/zamgi/lingvo--Ner-ru? Или это не то, и я путаю?

Видел (вообще мы собирали список https://docs.google.com/spreadsheets/d/1H9bxrakQPhC59BIpxsis0ppzP5aUmvmJSKfX8EQ-vVM/edit?usp=sharing) . Не всматривался по 2 причинам:
1. Не на питоне и похоже для винды
2. Репозиторий выглядит как-то неряшливо

2. "В статье показано, как использовать готовые правила..." - расскажите, пожалуйста, по вашему опыту, что с этой библиотекой НЕ стоит делать, для чего она НЕ подходит? Чтобы как-то очертить границы применимости.

По опыту приходит понимание, что не очень получается работать с текстами на совсем естественном языке (новости). Получается с текстами на контролируемом естественном языке: резюме, решения судов, нормативные акты

3. "Пользователю недоступны никакие настройки" (про интерфейс) - вы хотите сказать, что надо форкать репозиторий и патчи-патчи-патчи, а "из коробки" настроек нет (в смысле нет передачи параметров в функции)? Кстати, Наташа "тащит" Yargy?

Наташа конечно тащит Ярги. Наташа просто набор правил для Ярги. На самом деле я точно не знаю как это лучше делать. Пока мне вообще кажется что надо делать копи пейст из сорцов Наташи к себе в проект. Или можно делать import отдельных правил, на их основе строить свои. Как раз сейчас есть тикет по теме https://github.com/natasha/natasha/issues/45

4. "Часто приходится опускаться на уровень ниже, дополнять готовые правила" - то есть дописывать именно Yargy, мимо Наташи? А там какая лицензия? В чём смысл Наташи помимо того, что она - удобная обёртки для Yargy? Из каких компонент она состоит и как устроено её взаимодействие с Yargy? Если этого нет в документации (я пока не смотрел) - туториал из э маст.

Ярги это как компилятор Си++, а Наташа как набор программ для компилятора. Ярги дописывать не надо, надо дописать правила-программы. Лицензия МИТ.

5. (по картинкам) Что такое R0, R1...? Это сокращение от "Relative"? Не понимаю :(

Сокращение слова "Rule". Это технические вершины, на них надо не обращать внимания.

6. "Если нужно извлечь из текста, например, только даты, стоит выбрать готовую специализированную библиотеку." - то есть теоретически 10 "узко заточенных" решений аутперформят Наташу? Тогда почему не рекламировать бандл из 10, если performance is an issue? Может быть, каких-то "узко заточенных" просто нет для русского... Просветите, плиз. И, кстати! какой шаг пайплайна анализа (грамматики->интерпретация->согласование) самый длинный относительно всего?

1. Да, таких утилит нет для русского
2. По-любому на практике придётся сделать что-то что не умеет утилита

Самое долгое это применения грамматик

7. "Yargy нужен для объемных нестандартных задач". Учитывая, что есть консерны по перформансу, интересно было бы прочесть, какую производительность (в знаках на секунду) из неё можно выжать с обычного свежего Макбука Про. Понимаю, что "горизонтально масштабируется", но зарплата так не масштабируется :) Поделитесь, пожалуйста (если не секрет), какой стек технологий вы используете для распараллеливания?

Всё зависит от сложности правил и текстов. Есть замеры для новостей и имён https://github.com/natasha/natasha-benchmarks/blob/master/tomita/notes.ipynb . С PyPy получается поискать имена в 15 новостях (представьте средний текст новости на ленте ру ) в секунду.  Там грамматики не очень сложные, но и не очень простые. На моей практике были очень очень сложные правила для текстов, связанных судопроиводством, там скорость было 2 секунды на текст. Ну вот какие-то такие скорости.

Из технологии, просто очереди, например http://python-rq.org/

8. "Мы надеемся, что сообщество поможет улучшить точность и полноту правил" - как конкретно вам можно помочь и что для этого сделать? :)
Слать пулл реквесты на https://github.com/natasha/natasha

Спасибо, постараюсь обновить текст по мотивам ваших коментов
источник

AZ

Alexandr Zamaraev in Natural Language Processing
Небольшие дополнения:
"Есть готовое решение в Томита-парсере, но им неудобно пользоваться, нет интеграции с Питоном."
Таки интеграция - сам написал https://github.com/tonal/tomita-python :)
Запускает Томиту отдельным процессом и общается с ней через пайпы.

"Для извлечения, например, адресов «8 Марта, д.4», «Ленинский проезд, 15») открытых решений мне не известно."
Есть интересная библиотека https://github.com/openvenues/libpostal и пайтоновский биндинг к ней https://github.com/openvenues/pypostal
Ставится немного неудобно, но работает очень быстро.
На моих данных разобрала ~90% строк.
Правда довольно часто ошибалась.
Я её использую в связке с Наташей, чтобы верифицировать разбор.
источник

AK

Alexander Kukushkin in Natural Language Processing
угу, надо будет упомянуть
источник

AZ

Alexandr Zamaraev in Natural Language Processing
Да, ещё в адресах встречается формат, где город/село идёт первым элементом, а за ним уже облость/район.
Типа "г. Истра, Московской области". Надо бы поправить правила.
источник

AZ

Alexandr Zamaraev in Natural Language Processing
и ещё одна обёртачка для tomita в python https://github.com/vas3k/poor-python-yandex-tomita-parser
источник

AK

Alexander Kukushkin in Natural Language Processing
Обновлён стенд с демо https://natasha.github.io/demo/
источник

AK

Alexander Kukushkin in Natural Language Processing
источник

AK

Alexander Kukushkin in Natural Language Processing
Просьба попробовать в разных браузерах
источник

ML

Michael Lobanov in Natural Language Processing
"Наташа" может работать на Android?
источник

AK

Alexander Kukushkin in Natural Language Processing
нет, наверное
источник

AZ

Alexandr Zamaraev in Natural Language Processing
Да, раньше в правиле для дома точка была опциональной. Сейчас нет. Это из каких-то соображений сделано или просто потерялось?
источник

AZ

Alexandr Zamaraev in Natural Language Processing
DOM_WORDS = or_(
   rule(normalized('дом')),
   rule(
       caseless('д'),
       DOT
   )
).interpretation(
источник

AK

Alexander Kukushkin in Natural Language Processing
бывает что метчит лишнего
источник

ML

Michael Lobanov in Natural Language Processing
пользуюсь томитой стоит на "Наташу" переходить?
источник

DV

Dima Veselov in Natural Language Processing
Если нет проблем, то зачем?
источник

AZ

Alexandr Zamaraev in Natural Language Processing
Напрашивается весть адрес на CRF перевести.
Там ведь ещё и метро встречается - пришлось регулярку развесистую с постобработкой писать :)
источник

ML

Michael Lobanov in Natural Language Processing
ну приходится через пайтон шел юзать
источник

ML

Michael Lobanov in Natural Language Processing
и парсить((
источник

ML

Michael Lobanov in Natural Language Processing
по скорости не очень(
источник

AZ

Alexandr Zamaraev in Natural Language Processing
Michael Lobanov
ну приходится через пайтон шел юзать
Возьми обёртку для python - может побыстрее будет. :)
источник