Re[5]: Подскажите, как в тексте вычленить параграфы и списки
От: Кодт Россия  
Дата: 25.10.13 22:34
Оценка: 4 (1)
Здравствуйте, Marty, Вы писали:

M>Попробую объяснить на пальцах, что мне с D непонятно. M — для длинн строк это просто среднее арифметическое. D — это вроде как мат. ожидание отклонения от М? Почему D тогда такие значения принимает, не пойму. То ли я что-то не так посчитал.


Не знаю, как ты считаешь дисперсию, но вообще, это квадрат отклонения.
Она может принимать здоровенные значения.

К>>А это — другой частный случай: список с разделителями (здесь — с тире).

M>Но так и тот, на самом то деле, по смоему смыслу тоже самое, только отформатирован немного по другому.

По смыслу — и то, и то — списки, но эвристики — разные


К>>- если используются маркеры (тире, звёздочки, пульки — я встречал в роли пульки букву о)

M>Есть такое, все это уже разобрал, про 'o' в курсе, еще символ с кодом 0x95 используется
Это штатная пулька. (0x95 в cp1252, это U+2022, \xe2\x80\xa2 в utf-8).


К>>- наконец, если строки короткие (но тут есть риск спутать с эпиграфом или стихами)

M>Еще мои эвристики не очень любят последнюю строку параграфа, она часто много короче обычно строки параграфа, даже если параграф выравнивается по ширине, оследние строки не выравнивают.

Потому что твои эвристики детерминированные, наверно, а тут всё дело в "похожести на" и даже в "похожести, что..."

К>>Отличить красную строку от следующих можно по использованию заглавных и строчных букв.

M>Проблема в том, что будет работать только для латинского алфавита.

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


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

M>Вот это уже интереснее. Что можно почитать, чтобы попроще было? Есть какие-то библиотеки для этого?

Фреймворк для WFST — это гугловская OpenFST, там есть и экзешники, и C++ на шаблонах. (Шаблоны там покруче, чем в ATL, с непривычки можно заворот мозгов поиметь, особенно, при отладке).
Содержательную часть — т.е. как построить граф, как раздать веса, и всё такое, — это ты сам.
Есть фундаментальные статьи. Поищи в гугле "скрытые марковские модели", "hidden markov model", работы Аллаузена и Мори (Allausen, Mohri).
Но у тебя не настолько сложная модель, чтобы нужно было её как-то особенно тренировать. Можешь попробовать и априорные весовые коэффициенты раздать по своим эвристикам, и посмотреть, что из этого выходит.


К>>Но это моя колокольня, я как раз с марковками работаю. Вовлекусь в нейронки, так, может, стану апологетом нейронок

M>Ну, тогда рассказывай, что да как там

О, это длинная история.

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


Нейросеть — штука, устроенная довольно примитивно. Несколько векторно-матричных умножений и нелинейные векторно-скалярные операции. Всё.
Марковская модель более заковыристая. То есть, граф-то можно взять из пары хедеров с шаблонами (хоть boost graph library, хоть OpenFST), а вот содержательную часть, которая осмысляла бы происходящее в этом конечном автомате... не знаю, не знаю, есть ли что-то готовое.
Перекуём баги на фичи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.