(фрагменты с разных других форумов – нужно в одном месте собирать – извиняюсь за рваный текст)
Мы во многом преуспели в деле оцифровки печатных информационных источников и создали огромные информационные массивы оцифрованной литературы. Настало время задуматься и о новом качественном подходе к работе с информационными ресурсами.
В настоящий момент поиск осуществляется не интеллектуально, а по поисковой лексеме (лексемам). Функции т.н. "расширенного поиска" помогают количественно, но не качественно. Совершенно отсутствует функциональность на манер "найти похожее".
Мои соображения на этот счет.
1. Все файлы должны иметь текстовый слой.
2. Тестовый слой подвергается обработке:
2.1. Предобработка:
- приведение в нижний регистр
- удаление всех символов кроме "а-я"
- подчистка за FineReader программными средствами (удаление комбинаций символов)
- подчистка за FineReadep (при помощи AfterScan)
- исправление орфографии при помощи ORFO 2014
- удаление всех слов, длиной меньше 3 символов
2.2. Нормализация слов при помощи программы Mystem
3. Создание частотного словаря
4. Десять слов с наибольшей частотой упоминания – это облако тегов данного файла, который можно использовать в качестве его сжатой смысловой характеристики для реализации функции "найти похожее".
Все вышеописанное сложно реализовать в автоматическом режиме. Но все очень легко получается при помощи псевдоавтоматического способа при помощи скрипта на AutoIt
Условимся, что есть некий файл формата djvu у которого уже есть текстовый слой. На данном этапе этого достаточно.
Следующий этап – попытаться охарактеризовать книгу в систематический способ, создать нечто аналогичное библиотечному УДК, но только в автоматическом режиме. Я исхожу из гипотезы, что смысловое содержание книги достаточно полно характеризуется её словарным набором. Чем чаще повторяется то или иное слово в тексте, тем выше вероятность, что именно это слово характеризует смысл написанного. Как оказалось тут есть интересные неожиданности, об этом ниже.
Я предполагаю, что группа слов (к примеру 10 шт) которые наиболее часто повторяются, может достаточно точно послужить неким ключем, соответствие которому (полное или частичное – тут нужно экспериментировать) поможет найти другую книгу, с аналогичным содержанием и с аналогичным (или близким) составом наиболее употребимых слов.
Чтобы составить частотный словарь нужно почистить от мусора текстовый слой. Для этого:
1.При помощи фрагмента скрипта на AutoIt "выдергиваю" текстовый слой из djvu+OCR при помощи штатной утилиты djvused.exe, и сохраняю его в качестве самостоятельного временного txt файла. (готово)
2. Следующий фрагмент скрипта берет этот txt файл, помещает его содержимое в стринговую переменную, над которой проводится ряд "чисток" (все в нижний регистр, бинарные замены, стринговые замены, перевод из случайной латиницы в кириллицу, удаление знаков пунктации, псевдографики и управляющих кодов, лишних пробелов, коротких слов). Результаты работы сохраняю в транзитный txt. (готово, на i7 работает шустро, но уже на i3 – ощутимо тормозит)
3. Следующий фрагмент скрипта запускает AfterScan и скармливает ему txt с предыдущего этапа. (в работе)
4. Не знаю, возможно потребуется еще ORFO пройтись и поисправлять орфографию. (Буду смотреть)
5. Все вышеперечисленное – предварительный этап, перед нормализацией (превратить "бетонов", "бетоны", "бетонам" в "бетон" . Я не силен в программировании, здесь мне нужна помощь. Пока остановился на Mystem, которая к тому-же консольная поэтому её легко и просто будет использовать для получения очередного транзитного txt (еще не начинал)
6. Формирование частотного словаря и определение плотности ключевых слов. Казалось-бы сложный этап. Но удалось его решить очень красиво и элегантно парой десятков строчек кода.
(с использованием объекта Scripting.Dictionary – сам толком ничего не понял, просто слизал и оно классно работает ).
Невтерпежь сильно мучает, поэтому без 3, 4,5 этапов посмотрел чего получается. Взял 2 книги
строительная теплофизика (богословский)
строительная теплофизика (ильинский)
Книги примерно равны по объему и тематике, немножко разные акценты. Самое то, что нужно. Частотный словарь показал, что группа "воздух-температура-поверхность-ограждение-тепло" четко и однозначно "в отрыве". Т.е. гипотеза вроде подтверждается.
Что любопытно "воздух" неожиданно в сильном отрыве. И это все даже без нормализации. Любопытная особенность.
Все пока очень предварительно.
Мы во многом преуспели в деле оцифровки печатных информационных источников и создали огромные информационные массивы оцифрованной литературы. Настало время задуматься и о новом качественном подходе к работе с информационными ресурсами.
В настоящий момент поиск осуществляется не интеллектуально, а по поисковой лексеме (лексемам). Функции т.н. "расширенного поиска" помогают количественно, но не качественно. Совершенно отсутствует функциональность на манер "найти похожее".
Мои соображения на этот счет.
1. Все файлы должны иметь текстовый слой.
2. Тестовый слой подвергается обработке:
2.1. Предобработка:
- приведение в нижний регистр
- удаление всех символов кроме "а-я"
- подчистка за FineReader программными средствами (удаление комбинаций символов)
- подчистка за FineReadep (при помощи AfterScan)
- исправление орфографии при помощи ORFO 2014
- удаление всех слов, длиной меньше 3 символов
2.2. Нормализация слов при помощи программы Mystem
3. Создание частотного словаря
4. Десять слов с наибольшей частотой упоминания – это облако тегов данного файла, который можно использовать в качестве его сжатой смысловой характеристики для реализации функции "найти похожее".
Все вышеописанное сложно реализовать в автоматическом режиме. Но все очень легко получается при помощи псевдоавтоматического способа при помощи скрипта на AutoIt
Условимся, что есть некий файл формата djvu у которого уже есть текстовый слой. На данном этапе этого достаточно.
Следующий этап – попытаться охарактеризовать книгу в систематический способ, создать нечто аналогичное библиотечному УДК, но только в автоматическом режиме. Я исхожу из гипотезы, что смысловое содержание книги достаточно полно характеризуется её словарным набором. Чем чаще повторяется то или иное слово в тексте, тем выше вероятность, что именно это слово характеризует смысл написанного. Как оказалось тут есть интересные неожиданности, об этом ниже.
Я предполагаю, что группа слов (к примеру 10 шт) которые наиболее часто повторяются, может достаточно точно послужить неким ключем, соответствие которому (полное или частичное – тут нужно экспериментировать) поможет найти другую книгу, с аналогичным содержанием и с аналогичным (или близким) составом наиболее употребимых слов.
Чтобы составить частотный словарь нужно почистить от мусора текстовый слой. Для этого:
1.При помощи фрагмента скрипта на AutoIt "выдергиваю" текстовый слой из djvu+OCR при помощи штатной утилиты djvused.exe, и сохраняю его в качестве самостоятельного временного txt файла. (готово)
2. Следующий фрагмент скрипта берет этот txt файл, помещает его содержимое в стринговую переменную, над которой проводится ряд "чисток" (все в нижний регистр, бинарные замены, стринговые замены, перевод из случайной латиницы в кириллицу, удаление знаков пунктации, псевдографики и управляющих кодов, лишних пробелов, коротких слов). Результаты работы сохраняю в транзитный txt. (готово, на i7 работает шустро, но уже на i3 – ощутимо тормозит)
3. Следующий фрагмент скрипта запускает AfterScan и скармливает ему txt с предыдущего этапа. (в работе)
4. Не знаю, возможно потребуется еще ORFO пройтись и поисправлять орфографию. (Буду смотреть)
5. Все вышеперечисленное – предварительный этап, перед нормализацией (превратить "бетонов", "бетоны", "бетонам" в "бетон" . Я не силен в программировании, здесь мне нужна помощь. Пока остановился на Mystem, которая к тому-же консольная поэтому её легко и просто будет использовать для получения очередного транзитного txt (еще не начинал)
6. Формирование частотного словаря и определение плотности ключевых слов. Казалось-бы сложный этап. Но удалось его решить очень красиво и элегантно парой десятков строчек кода.
(с использованием объекта Scripting.Dictionary – сам толком ничего не понял, просто слизал и оно классно работает ).
Невтерпежь сильно мучает, поэтому без 3, 4,5 этапов посмотрел чего получается. Взял 2 книги
строительная теплофизика (богословский)
строительная теплофизика (ильинский)
Книги примерно равны по объему и тематике, немножко разные акценты. Самое то, что нужно. Частотный словарь показал, что группа "воздух-температура-поверхность-ограждение-тепло" четко и однозначно "в отрыве". Т.е. гипотеза вроде подтверждается.
Что любопытно "воздух" неожиданно в сильном отрыве. И это все даже без нормализации. Любопытная особенность.
Все пока очень предварительно.