Списки немаркированные/ненумерованные, иногда выделяются отступом, иногда нет. Иногда элементы длинные, иногда короткие.
Ниже — пример, в примере я после символов '---' что за часть следует дальше, в оригинале — там пустая строка (или вообще нет строки).
Я попробовал считать мат ожидание и дисперсию, но что-то не очень. Во-первых , нужна ли мне дисперсия или СКО, которое вроде просто корень из D?
D от 0 до 1500-2000 получется, "физический смысл" величины от меня ускользает. Во-вторых, колдовство с M и D не особо помогает. Что тут еще можно попробовать?
Contents
--- Список
Overview
What's New
Known Issues
Programs
Debugger Extensions
Software Development Samples
Documentation
Redistributables
More Information
Feedback
--- параграфы
Debugging Tools for Windows contains tools to analyze and debug Windows,
Windows drivers, and applications. It can analyze memory dump files or
perform live debugging.
The kernel debugger is KD.exe. It can be installed and run on all
the platforms listed below. It can debug all the platforms listed below.
Supported platforms:
--- список
Windows 2000 (x86)
Windows XP (All CPU architectures)
Windows Server 2003 (All CPU architectures)
Windows Vista (All CPU architectures)
Windows 2008 Server (All CPU architectures)
Windows 7 (All CPU architectures)
1) Several bug fixes in extensions to only use public symbols
2) General BugCheck Analysis Updates including
a) Bug Check 0x9F Update Ц Add logic to diagnose bugcheck 0x9F minidumps using new to Windows 7 data added to the 0x9F Mini Dumps by the Kernel and Networking Teams.
Data includes:
--- список
All Kernel ExWorkerThreads that process Power IRPs.
IRPs Associated with any ExWorkerThread
IRPs Associated with PnP Completion Queue.
All Kernel Power IRPs
Device Stacks for all IRPS
NT_TRIAGE_POWER Structure
NT_TRIAGE_PNP structure
This distribution includes the following debuggers:
--- список, чаще других детектится как параграф, так как по средней длине строк похож на параграф
KD - Command-line kernel debugger
NTSD - Command-line user-mode debugger
CDB - Command-line user-mode debugger (variant of NTSD)
WinDbg - GUI kernel debugger
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
Breakin - Utility to force a breakin in another process being
debugged
Remote - Remote Command Line
Kill - Task Killing Utility
List - File List Utility
LogViewer - Display API logs created with the .logext extension from
the debugger
--- параграф
The extensions that work for all versions of Windows reside in the "winext"
subdirectory, and include:
--- список
uext.dll
kext.dll
ext.dll
logexts.dll
Здравствуйте, Marty, Вы писали:
M>Я попробовал считать мат ожидание и дисперсию, но что-то не очень. Во-первых , нужна ли мне дисперсия или СКО, которое вроде просто корень из D? M>D от 0 до 1500-2000 получется, "физический смысл" величины от меня ускользает. Во-вторых, колдовство с M и D не особо помогает. Что тут еще можно попробовать?
Можно отталкиваться от прагматического смысла: M±3s — интервал, в который попадают 99.7% значений, если они распределены нормально.
M>This distribution includes the following debuggers:
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> Remote - Remote Command Line
M> Kill - Task Killing Utility
M> List - File List Utility
M> LogViewer - Display API logs created with the .logext extension from
M> the debugger
| | |
+------------+-+- границы колонок таблицы
Это не список, а таблица.
Характерный признак таблицы — отбивка пробелами и табами, так, что у смежных строк есть одинаково расположенные начала слов, не только первых, но и в середине.
Можно отслеживать начала слов, а можно просто выявлять отбивку.
Перекуём баги на фичи!
Re[2]: Подскажите, как в тексте вычленить параграфы и списки
Здравствуйте, Кодт, Вы писали:
К>Здравствуйте, Marty, Вы писали:
M>>Я попробовал считать мат ожидание и дисперсию, но что-то не очень. Во-первых , нужна ли мне дисперсия или СКО, которое вроде просто корень из D? M>>D от 0 до 1500-2000 получется, "физический смысл" величины от меня ускользает. Во-вторых, колдовство с M и D не особо помогает. Что тут еще можно попробовать?
К>Можно отталкиваться от прагматического смысла: M±3s — интервал, в который попадают 99.7% значений, если они распределены нормально.
Сложно сказать, в разных текстах по разному. Некоторые выровнены по ширине, там проще всего, некоторые — нет.
К>Это не список, а таблица. К>Характерный признак таблицы — отбивка пробелами и табами, так, что у смежных строк есть одинаково расположенные начала слов, не только первых, но и в середине.
Ну, в данному случае имхо это все же список, список определений, а отбивка — для удобочитаемости, хотя в данном случае да, это похоже на таблицу из двух колонок.
Но это частный случай. Список определений может быть оформатирован и как-то так:
KD - Command-line kernel debugger
NTSD - Command-line user-mode debugger
CDB - Command-line user-mode debugger (variant of NTSD)
WinDbg - GUI kernel debugger
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
Breakin - Utility to force a breakin in another process being
debugged
К>Можно отслеживать начала слов, а можно просто выявлять отбивку.
Кстати да, можно как-то посчитать частоту попадания начал слов на позиции в строке, тут явно должна быть закономерность, только не соображу, как и что посчитать
Детектить таблицы в тексте тоже мысль
Здравствуйте, 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) марковской модели позволяет следить за историей: ты ему скармливаешь, скажем, десять строк, и он выводит, что с наибольшей вероятностью первый абзац был с первой по третью строку, второй абзац — с четвёртой по пятую, а третий абзац ещё какой-то неопределённый, давай, корми меня дальше.
Но это моя колокольня, я как раз с марковками работаю. Вовлекусь в нейронки, так, может, стану апологетом нейронок
Перекуём баги на фичи!
Re[4]: Подскажите, как в тексте вычленить параграфы и списки
Здравствуйте, Кодт, Вы писали:
К>Это я безотносительно сказал, отвечая на вопрос, "что такое физический смысл". К>Смысл M,D в том, что на основании этих величин любое фактически наблюдаемое распределение можно аппроксимировать нормальным распределением с этими же величинами, из которых вытекает, в том числе, и правило трёх сигм.
А, ясно.
Попробую объяснить на пальцах, что мне с D непонятно. M — для длинн строк это просто среднее арифметическое. D — это вроде как мат. ожидание отклонения от М? Почему D тогда такие значения принимает, не пойму. То ли я что-то не так посчитал.
К>А это — другой частный случай: список с разделителями (здесь — с тире).
Но так и тот, на самом то деле, по смоему смыслу тоже самое, только отформатирован немного по другому.
К>Из этого всего складывается комплект эвристик К>- если в нескольких строках подряд используется один и тот же разделитель (тире, двоеточие) К>- если используются маркеры (тире, звёздочки, пульки — я встречал в роли пульки букву о)
Есть такое, все это уже разобрал, про 'o' в курсе, еще символ с кодом 0x95 используется
К>- если используются перечисления вида слово., слово:, слово), особенно если слово — это арабское или римское число
Римские/арабские нумерованные списки выделил уже.
К>- если прослеживается табличная структура К>- если красные строки не отбиты, а наоборот, вывешены (т.е. отбиты следующие строки), особенно, если отбивка по уровень разделителя в красной строке К>- наконец, если строки короткие (но тут есть риск спутать с эпиграфом или стихами)
Еще мои эвристики не очень любят последнюю строку параграфа, она часто много короче обычно строки параграфа, даже если параграф выравнивается по ширине, оследние строки не выравнивают.
К>Отличить красную строку от следующих можно по использованию заглавных и строчных букв.
Проблема в том, что будет работать только для латинского алфавита.
К>Я думаю, что твоя экспертная система будет лучше работать, если ты не захардкодишь все эвристики от начала и до конца, а сделаешь скрытую марковскую модель и/или нейросеть, которая будет отвечать на вопрос, где начинается новый абзац и является ли он текстом или элементом списка.
Вот это уже интереснее. Что можно почитать, чтобы попроще было? Есть какие-то библиотеки для этого?
К>Вот признаки (наличие маркера, заглавная-строчная буквы, совпадение позиций маркеров, отбивка такая, отбивка сякая...) — это можно хардкодить. А выводы на основе признаков пусть сетка делает сама.
Да, у меня сейчас данные примерно в таком состоянии и представлены, захардкоженные эвристики удовлетворительно вообщем-то все разбирают, осталось вычленить еще всякие неявные элементы.
К>Причём конечный автомат (WFST) марковской модели позволяет следить за историей: ты ему скармливаешь, скажем, десять строк, и он выводит, что с наибольшей вероятностью первый абзац был с первой по третью строку, второй абзац — с четвёртой по пятую, а третий абзац ещё какой-то неопределённый, давай, корми меня дальше.
К>Но это моя колокольня, я как раз с марковками работаю. Вовлекусь в нейронки, так, может, стану апологетом нейронок
Ну, тогда рассказывай, что да как там
Про нейронки я слышал, но обычно вроде это все делается в каких-то пакетах типа матлаба, а так, чтоб взять пару хидеров с шаблонами, прицепить к своему сорцу, сконфигурировать пару классов и получить сеть, как-то не приходилось слышать. Для марковок есть что-нибудь такое?
Здравствуйте, Кодт, Вы писали:
К>Из этого всего складывается комплект эвристик
... К>- если красные строки не отбиты, а наоборот, вывешены (т.е. отбиты следующие строки), особенно, если отбивка по уровень разделителя в красной строке К>- наконец, если строки короткие (но тут есть риск спутать с эпиграфом или стихами)
...
Тут еще есть такой нюанс — если взять из ворда скопировать текст в блокнот, то весь текст будет без отступов, не важно, какие отступы были в документе. Хотя, в случае ворда, он вроде честно помечает все списки маркерами.
С копированием из браузера ситуация аналогичная, но вот там уже маркеры не копируются, по крайней мере не всегда.
Здравствуйте, Кодт, Вы писали:
К>Причём конечный автомат (WFST) марковской модели позволяет следить за историей: ты ему скармливаешь, скажем, десять строк, и он выводит, что с наибольшей вероятностью первый абзац был с первой по третью строку, второй абзац — с четвёртой по пятую, а третий абзац ещё какой-то неопределённый, давай, корми меня дальше.
Ну и в догонку — нейронки вроде как-то также работают, не? Отличия в мат аппарате, а способ использования не сильно отличается?
Здравствуйте, 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), а вот содержательную часть, которая осмысляла бы происходящее в этом конечном автомате... не знаю, не знаю, есть ли что-то готовое.
Перекуём баги на фичи!
Re[5]: Подскажите, как в тексте вычленить параграфы и списки
Здравствуйте, Marty, Вы писали:
M>Ну и в догонку — нейронки вроде как-то также работают, не? Отличия в мат аппарате, а способ использования не сильно отличается?
Насколько я понимаю, способ использования принципиально другой.
Нейросеть развёрнута в пространстве (преобразует вектор признаков), а марковская модель — во времени (преобразует последовательность).
Перекуём баги на фичи!
Re[6]: Подскажите, как в тексте вычленить параграфы и списки
Здравствуйте, Кодт, Вы писали:
M>>Попробую объяснить на пальцах, что мне с D непонятно. M — для длинн строк это просто среднее арифметическое. D — это вроде как мат. ожидание отклонения от М? Почему D тогда такие значения принимает, не пойму. То ли я что-то не так посчитал.
К>Не знаю, как ты считаешь дисперсию, но вообще, это квадрат отклонения. К>Она может принимать здоровенные значения.
Как-то так считаю:
int M = (int)thisListAvgLineLenght;
for(; listLineNoTmp != listLineNo; ++listLineNoTmp)
{
D += ((int)attributedLines[listLineNoTmp].strSize() - M) * ((int)attributedLines[listLineNoTmp].strSize() - M);
}
D /= (int)numListLines-1;
Т.е. я понимаю, почему значения большие — квадрат все же, а вот "физический смысл" не доходит. Для M тут физический смысл — средняя длина строки, и получаемые величины M с этим смыслом не конфликтуют.
К>>>А это — другой частный случай: список с разделителями (здесь — с тире). M>>Но так и тот, на самом то деле, по смоему смыслу тоже самое, только отформатирован немного по другому.
К>По смыслу — и то, и то — списки, но эвристики — разные
В данном случае с таблицей — случай более частный По идее, эвристика для списка должна его обнаруживать и когда он отформатирован.
К>>>- наконец, если строки короткие (но тут есть риск спутать с эпиграфом или стихами) M>>Еще мои эвристики не очень любят последнюю строку параграфа, она часто много короче обычно строки параграфа, даже если параграф выравнивается по ширине, оследние строки не выравнивают.
К>Потому что твои эвристики детерминированные, наверно, а тут всё дело в "похожести на" и даже в "похожести, что..."
Это да. Я вообще думал за пару дней все сделать и не парится, но чем дальше в лес, тем больше нюансов ;( которые хочется отловить и красиво обработать
К>>>Отличить красную строку от следующих можно по использованию заглавных и строчных букв. M>>Проблема в том, что будет работать только для латинского алфавита.
К>В русском языке предложения тоже с большой буквы начинаются, какие проблемы?
Ну, для Unicode'а можно найти все заглавные, а для однобитной кодировки немного хуже; в общем случае даже не хочется знать, в какой кодировке текущий текст, и какой алфавит/язык используется.
К>Фреймворк для WFST — это гугловская OpenFST, там есть и экзешники, и C++ на шаблонах. (Шаблоны там покруче, чем в ATL, с непривычки можно заворот мозгов поиметь, особенно, при отладке). К>Содержательную часть — т.е. как построить граф, как раздать веса, и всё такое, — это ты сам. К>Есть фундаментальные статьи. Поищи в гугле "скрытые марковские модели", "hidden markov model", работы Аллаузена и Мори (Allausen, Mohri). К>Но у тебя не настолько сложная модель, чтобы нужно было её как-то особенно тренировать. Можешь попробовать и априорные весовые коэффициенты раздать по своим эвристикам, и посмотреть, что из этого выходит.
Спасибо за наводку, надо посмотреть. Хотя начало появляться желание забить на подобные мелочи и удовольствоваться тем, что есть Попробую ковырнуть, может что пойму
Здравствуйте, Кодт, Вы писали:
К>Фреймворк для WFST — это гугловская OpenFST, там есть и экзешники, и C++ на шаблонах. (Шаблоны там покруче, чем в ATL, с непривычки можно заворот мозгов поиметь, особенно, при отладке).
Пытаюсь пока на shell-level поковырять что это такое, пробую первый пример отсюда — http://www.openfst.org/twiki/bin/view/FST/FstExamples
Мне говорят: ERROR: FstReader: Symbol "Mars" is not mapped to any integer arc olabel, symbol table = wotw.syms, source = standard input, line = 1
Все делаю как там пишут, символ Mars в wotw.syms есть, что не так там, не пойму
Здравствуйте, Marty, Вы писали:
M>Пытаюсь пока на shell-level поковырять что это такое, пробую первый пример отсюда — http://www.openfst.org/twiki/bin/view/FST/FstExamples M>Мне говорят: ERROR: FstReader: Symbol "Mars" is not mapped to any integer arc olabel, symbol table = wotw.syms, source = standard input, line = 1 M>Все делаю как там пишут, символ Mars в wotw.syms есть, что не так там, не пойму
Ну не знаю...
wotw.syms
<epsilon> 0
Mars 1
ascii.syms (избранное)
M 77
a 97
r 114
s 115
mars.src
0 1 M Mars
1 2 a <epsilon>
2 3 r <epsilon>
3 4 s <epsilon>
4
Так работает, спасибо.
У меня все тоже самое в файлах было. Проблема, как оказалось, была в том, что я, как и в их примере, mars.txt скармливал через поток ввода (<mars.txt), если указать файл в командной строке, то все работает.
Как я понимаю, этот тулсет не заточен под маровские модели, а можно произвольный перерабатывающий автомат задавать? Надо поковырять на досуге. С марковскими моделями тоже интересно, но как-то лениво сейчас браться, за пару вечеров не осилить ;( Со своей задачей более менее разобрался, тупо захардкодил все имеющиеся варианты, будет сбоить на чем-то доработаю Не слишком интеллектуально, но довольно быстро получилось сделать, и работает