juan_gandhi: (Default)
[personal profile] juan_gandhi

Когда-то у меня был коллега Дивьеш, и он пытался решить задачу парсинга HTML путем применения массива регексов, типа в цикле. Если вы знакомы с иерархией языков, то в курсе, что как ты ни соединяй регексы, а кс-грамматика не получится.

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

Сегодня смотрю на код на работе, батюшки, массив регексов. Для парсинга документов. А, знакомая картина!!! Автора зовут Нараян, он уже у нас не работает. Образование - пиэчди по компьютерным наукам из University of Texas at Austin. 

Я однажды интервьюировал в Гугле кандидатку оттуда. У нее пиэчди по компьютерным наукам, и я не стал ее спрашивать, может ли она написать регекс для проверки скобок в выражениях, но у нее было "implemented binary search on the internet", и я ее спросил, как это (делит интернет пополам, как физики при ловле льва в пустыне?). Оказывается, она искала в интернете двоичные файлы.

Вот такая херня, коллеги.

Page 1 of 3 << [1] [2] [3] >>

Date: 2021-12-14 05:11 pm (UTC)
From: [personal profile] dijifi
Честно признаюсь — сам парсил андроилские логи массивом регексов на Питоне. Для прикола программа была одним массивным выражением, так что вопрос о подсчете пробелов не стоял.
Но логи это не язык.
Edited Date: 2021-12-14 05:17 pm (UTC)

Date: 2021-12-14 05:15 pm (UTC)
chaource: (Default)
From: [personal profile] chaource
PhD is today's high school diploma.

Date: 2021-12-14 05:15 pm (UTC)
From: [personal profile] sassa_nf
I would have an array of parsers instead :)

Fast and efficient for conformant HTML, slow and perfect for those that failed the fast and efficient.

Date: 2021-12-14 05:40 pm (UTC)
euthanasepam: Delirium Tremens (Delirium_Tremens)
From: [personal profile] euthanasepam
Ужасы какие!
(reply from suspended user)

Date: 2021-12-14 05:50 pm (UTC)
From: [personal profile] dijifi
Логи в Андроиде — большая помойка строк. Каждый таракан так и норовит что-нибудь наложить, иногда даже нечто непечатное. Единственное что общее — таймстамп и имя хулиганского процесса в начале строки.

Date: 2021-12-14 05:50 pm (UTC)
mikerrr: (Default)
From: [personal profile] mikerrr
И я парсил почтовые сообщения, путем составления массива регэкспов.
Мне надо было из почты доставать одно единственное слово, а форматов сообщений (автоматических) было несколько. Ну для каждого формата получался свой регэксп. А как надо было? Где почитать?

Date: 2021-12-14 06:04 pm (UTC)
From: [identity profile] http://users.livejournal.com/sorcerer-/
Парсил "логи" не просто массивом регексов, а они туда добавлялись сами с помощью "ML". И все это в 2007 году. Внутри базы данных. Других вариантов не было.

Date: 2021-12-14 06:37 pm (UTC)
mikerrr: (Default)
From: [personal profile] mikerrr
Английский язык, иногда русский (зависит от офиса)

Date: 2021-12-14 06:57 pm (UTC)
mikerrr: (Default)
From: [personal profile] mikerrr
Ну я сделал так: для каждого из типов писем описывал структуру фразы, которая мне нужна. На определенном месте в этой фразе было нужное мне слово (я определял уволили ли человека или он уволился сам). Ну сама фраза была почти произвольной, но в рамках одного офиса, естественно, повторялась (письма писали вручную, но копировали из шаблона)
Получалось как-то так:
"Please note that the following employee has left[^\n]+([^()]+)[^)]+\) Manager"
Но это не суть важно, не думаю что есть смысл вникать в конкретную задачу, просто укажите куда идти и что почитать по этому поводу, если не сложно.
Edited Date: 2021-12-14 06:58 pm (UTC)

Date: 2021-12-14 07:25 pm (UTC)
From: [personal profile] soid
Зачем парсить HTML самому когда есть готовые решения? Или он написал универсальный HTML парсер на основе регулярных выражений?

Date: 2021-12-14 07:27 pm (UTC)
mikerrr: (Default)
From: [personal profile] mikerrr
Спасибо! Изучу

Date: 2021-12-14 07:28 pm (UTC)
From: [personal profile] sassa_nf
well, it looks like we need to define what the output of a parser is. I was thinking a stream of tokens (which you consume with a stack machine to model tree-like structure), but it looks like you want it to do more.

Date: 2021-12-14 07:32 pm (UTC)
From: [personal profile] soid
У вас задача обработки естественного языка (NLP), там совсем другие подходы. Вам нужен классификатор какой-нибудь для NLP.

Date: 2021-12-14 07:32 pm (UTC)
From: [personal profile] sassa_nf
nice!

Date: 2021-12-14 07:37 pm (UTC)
mikerrr: (Default)
From: [personal profile] mikerrr
Конечно же нет)

Date: 2021-12-14 07:38 pm (UTC)
From: [personal profile] soid
Это не готовое решение, это более высокоуровневый инструмент. Есть парсеры которые и с malformed HTML работают, как браузеры это делают (meta это тег?). Делают дерево, а дальше уже с этим деревом можно нестандартную задачу решать.

Date: 2021-12-14 07:40 pm (UTC)
From: [personal profile] soid
Ну если фразы были очень понятые и повторяющиеся, может и нет.
Page 1 of 3 << [1] [2] [3] >>

Profile

juan_gandhi: (Default)
Juan-Carlos Gandhi

July 2025

S M T W T F S
  12345
6789 1011 12
131415 1617 1819
20212223242526
2728293031  

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 28th, 2025 09:53 pm
Powered by Dreamwidth Studios