Pull to refresh

Comments 18

Есть прекрасная библиотека от Стэнфорда. Правда на джаве, но с биндингами для .NET. Для лентяев поясните вкратце, пожалуйста, чем она вас не устроила и какие у вашей преимущества?
Честно скажу, она не успела произвести на меня впечатления, так как я узнал о ней недавно :)
Я изначально делал упор на общедоступность и скорость. К сожалению, использовать явовские библиотеки стенфорда свободно нельзя (лицензия) и интероп — тоже не сахар. Кстати, за неимением функциональности явовский аналог медленнее. Бенчмарк я постараюсь выложить на гитхабе, как будет минутка.
Спасибо, именно это я и хотел бы увидеть. Один хороший бенчмарк стоит тысячи слов.
Я изначально делал упор на общедоступность и скорость

Без сравнительных тестов это маркетинг. Присоединяюсь к VersusVoid
А вы знаете, что такое маркетинг? Просто слово модное и, часто, не все понимают его значение )
Смысл же все равно уловили наверняка?
Так что насчет бенчмарков?
Нет, не уловил.
На выходных.
Я уж начал почесывать руки и сразу начал думать как бы я это использовал для моего проекта, но не тут то было, оказывается без разбивки текста (предложения) на токены ничего не будет работать.
Есть идеи как все это автоматизировать для больших текстов?
Как правило все проблемы в лингвистике решаются двумя путями: эвристики в которых безбожно пишутся регулярки и словарные методы и машинное обучение. В данном случае лучше машинным обучением на разделителях. Почитайте на мейл ру, а так же в интернете. Есть много литературы на эту тему и качество у моделей часто высокое и достаточное для бизнес процессов.
Сейчас поверх дерева разбора, которое создает Компрено, у ABBYY продается работающий Data Extractor, который вместо ваших регулярок использует свой язык описания паттернов извлечения нужных данных (они сделанный для отдельной задачи комплект называют онтологией). Возможно, язык регулярок им тоже бы приглянулся, или Вам может быть при сравнении что-нибудь про его недостатки стало бы понятно
Я бы сказал, что некорректно сравнивать многофункциональную документо-дробилку и прикладной фреймворк для .NET на шаблонных коллекциях. Это же вообще разные задачи. Да даже если и можно их использовать (через обертку) так же удобно как в этой статье, то я не думаю, что это хорошая идея таскать за собой танкер вместо поплавка. Да и денежный вопрос как-то напрягает, не у всех есть возможность составить договор с ABBYY на круглую сумму.
Неэтично, хотели сказать? Типа, это сравнение априори понятно по каждому аспекту, в чью пользу? Потому как параллели провести вполне полезно, ведь одну и ту же задачу решаете, только в разном масштабе заморочек и сложностей. Это как лопата и экскаватор — вещи разные, но общее назначение есть.
За тем исключением, что экскаватором цветы не сажают =) На самом деле это только кажущееся общее назначение. Параллели были проведены заранее с уже существующими инструментами: чтобы не придумывать свой язык, я выбрал уже устоявшийся в обществе язык регулярных выражений, его даже лингвист без проблем выучит и просто следовал Майкрософтовскому Дзен в видении регулярок. Их используют везде и знает практически каждый. Чего я бы не сказал об ABBYY.
Зануда mode on
Я ж не спорю с тем, что отличия есть. Но вы зачем-то спорите с тем, что параллели тоже есть...

Я говорил о том, что опора на язык регулярок возможно пригодилась бы и им. Но так же и о том, что у него могут найтись недостатки.
А, ну, они и сами не дураки, думаю, догадаются. Недостатки и плюсы регулярок описаны на википедии. А недостатки моей реализации исправляю, пока что, я сам.
Есть методика построения парсеров — комбинаторные или монадические парсеры. По ней анализ последовательности с использованием дополнительных рукописных предикатов реашется очень легко и элегантно.
А при чем здесь парсинг? Парсинг в RE появился как полезный нарост с течением времени. Безусловно, грамматиками можно сделать все, но кому это надо? У них логика сложнее и часто вообще не практично их использовать. Ни в плане разработки, ни в плане конечного результата.
Мне эта разработка напомнила lpeg.

Там тоже можно вешать произвольную функцию-обработчик на кусочек сматченного текста и делать вложенные штуки. Можно, к примеру, сделать парсер JSON или другого формата с произвольной вложенностью. Вот я сделал парсер формата деревьев Newick, просто переписывая его грамматику из википедийной статьи.
Sign up to leave a comment.

Articles

Change theme settings