Re[3]: Подскажите, как в тексте вычленить параграфы и списки
От: Кодт Россия  
Дата: 25.10.13 20:50
Оценка:
Здравствуйте, Marty, Вы писали:

M>>>Я попробовал считать мат ожидание и дисперсию, но что-то не очень. Во-первых , нужна ли мне дисперсия или СКО, которое вроде просто корень из D?

M>>>D от 0 до 1500-2000 получется, "физический смысл" величины от меня ускользает. Во-вторых, колдовство с M и D не особо помогает. Что тут еще можно попробовать?

К>>Можно отталкиваться от прагматического смысла: M±3s — интервал, в который попадают 99.7% значений, если они распределены нормально.

M>Сложно сказать, в разных текстах по разному. Некоторые выровнены по ширине, там проще всего, некоторые — нет.

Это я безотносительно сказал, отвечая на вопрос, "что такое физический смысл".
Смысл M,D в том, что на основании этих величин любое фактически наблюдаемое распределение можно аппроксимировать нормальным распределением с этими же величинами, из которых вытекает, в том числе, и правило трёх сигм.
Как ты распорядишься этой информацией — не знаю, тебе виднее.


M>Ну, в данному случае имхо это все же список, список определений, а отбивка — для удобочитаемости, хотя в данном случае да, это похоже на таблицу из двух колонок.

M>Но это частный случай. Список определений может быть оформатирован и как-то так:
M>
M>    KD - Command-line kernel debugger
M>    NTSD  - Command-line user-mode debugger
M>    CDB  - Command-line user-mode debugger (variant of NTSD)
M>    WinDbg - GUI kernel debugger

M>    AgeStore - Removes old or unwanted files from the downstream store 
M>      used by a symbol server or source server
M>    DBH - DbgHelp shell
M>    GFlags - Global Flags Editor
M>    Breakin - Utility to force a breakin in another process being 
M>      debugged
M>

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

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

Отличить красную строку от следующих можно по использованию заглавных и строчных букв.
Поэтому текст
    AgeStore - Removes old or unwanted files from the downstream store 
      used by a symbol server or source server
    DBH - DbgHelp shell
    GFlags - Global Flags Editor

больше похож на двустрочный + два однострочных абзаца, а не на однострочный + трёхстрочный.


Я думаю, что твоя экспертная система будет лучше работать, если ты не захардкодишь все эвристики от начала и до конца, а сделаешь скрытую марковскую модель и/или нейросеть, которая будет отвечать на вопрос, где начинается новый абзац и является ли он текстом или элементом списка.
Вот признаки (наличие маркера, заглавная-строчная буквы, совпадение позиций маркеров, отбивка такая, отбивка сякая...) — это можно хардкодить. А выводы на основе признаков пусть сетка делает сама.
Причём конечный автомат (WFST) марковской модели позволяет следить за историей: ты ему скармливаешь, скажем, десять строк, и он выводит, что с наибольшей вероятностью первый абзац был с первой по третью строку, второй абзац — с четвёртой по пятую, а третий абзац ещё какой-то неопределённый, давай, корми меня дальше.

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