Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Общие вопросы по .NET и C# > Парсинг файлов разных типов |
Автор: Softaz 11.7.2006, 10:21 |
Обладает ли кто регулярными выражениями для извлечения из файлов (html, doc, pdf и др.) текста. Или есть в C# средства для извлечения теста из файлов. Сразу скажу, что OLE не подходит ![]() Заранее спасибо. |
Автор: mr.DUDA 11.7.2006, 10:43 |
RTFM: namespace System.Text.RegularExpressions |
Автор: Wanderer2019 11.7.2006, 10:46 |
Не думаю что doc или pdf файлы можно считать регулярными выражениями =))) Здесь нужно работать с соответствующими библиотеками. |
Автор: mr.DUDA 11.7.2006, 10:55 |
Почему ? Только оле и подходит. Ну, если ещё поизвращаться хочется - пожалуйста линк: http://www.syncfusion.com/Products/product.aspx?p=26&tab_id=0 Ещё есть такая штука как IFilters, позволяет получать текст вообще откуда угодно, даже без установленного офиса, акробат ридера и т.п. (должен быть установлен соотв. IFilter). Если очень нужно, могу подкинуть примеры. |
Автор: Softaz 11.7.2006, 12:18 | ||
Приведи, пожалуйста. Я представил, СКОЛЬКО надо учесть, чтобы распарсить среднюю html-страницу в текст и решил поискать пути полегче. |
Автор: mr.DUDA 11.7.2006, 15:48 |
Пример взят с codeproject, поэтому выкладываю как есть, в виде архива. Тестовое приложение позволяет выдернуть текст из любого файла (где он есть, и для которого установлен IFilter). |
Автор: Softaz 11.7.2006, 16:24 |
mr.DUDA, спасибо. Буду разбираться. Сразу скажу, что текст из html-файла он выдернул гораздо медленнее, чем у меня есть. С doc файлом справился отлично, с odt есть мелкие баги. Все это для индексатора. Такой маленький поисковой движок будет. Так вот, чтобы получить текст html-страницы (сделал через OLE, так как альтернативы не было), исключить ненужные символы и создать HashTable корней и приставок слов с их типом (существо-действие-описание) в документе, потом сравнить его с уже имеющимися в базе и выкинуть из массива уже имеющиеся в базе, а новые внести (используя Prepare()), отобразить это в Grid-ах форме. На это уходит в среднем 28 кБ/секунда и скорость постепенно падает с ростом БД. Вот и ищу, как повысить быстродействие. |
Автор: mr.DUDA 11.7.2006, 16:54 |
Softaz, а что для индексирования юзаем ? Случайно не Lucene .NET ? ![]() |
Автор: Softaz 11.7.2006, 19:36 |
Нет. Свой пишу. ![]() Добавлено @ 19:49 Вот пример функции разбора слов. Два дня потратил. Ошибки приведения пока есть, но мало. СУЩ. - существо, предмет, состояние, количество. ГЛАГ. - действие ПРИЛ. - описательное. |
Автор: mr.DUDA 11.7.2006, 23:39 |
Softaz, чем изобретать свой велосипед, советую обратить внимание сюда: http://www.dotlucene.net |
Автор: Softaz 12.7.2006, 08:04 |
mr.DUDA, спасибо. Только я что-то не понял. Вроде русские в команде есть. Буду разбираться. Мне хочется, чтобы движок понимал морфологию. А в будущем части речи и релевантност |
Автор: mr.DUDA 12.7.2006, 08:38 | ||
Есть русские.
Чтобы сделать хороший и быстрый поисковый движок, нужны специальные знания в области оптимизации хранения и поиска данных. Где-то был сайт, на котором чел объяснял, с какими сложностями можно столкнуться даже делая простейший индексатор по ключевым словам: тут вам и большой объём базы, и необходимость использовать не обычные БД а двоичную древовидную структуру, и специальные алгоритмы, серьёзно ускоряющие поиск по сравнению с традиционными а-ля fast search, и т.п. Самому пришлось в своём проекте делать полнотекстовый поиск, поэтому предметом немного владею. ![]() P.S. кстати, а в SQL Server есть свой full-text search, он только русского не понимает ![]() |
Автор: Softaz 12.7.2006, 09:22 | ||||
Где-то читал, что понимает, если какой-то их аддон поставить.
А можешь вспомнить? Хотя бы ключевые слова, по которым искать можно. Пока неизвестен предмет поиска, его невозможно узнать. Я скормил индексатору полное собрание сочинений Пушкина и других классиков - что под рукой было. Получилось около миллиона слов в индексе. Это с учетом обрезания окончаний и суффиксов. Поиск длится около секунды. Пока устраивает. Однако планируется хранить очень большой объем данных |
Автор: Softaz 18.7.2006, 09:29 |
Нашел хороший сайт. itman.narod.ru . Главное - куча ссылок на подобные сайты. Кому понравится, может скачать с зеркала: http://zaotzs.ru/admin/itman.tar.gz (15 МБ) |
Автор: Butsa 11.7.2008, 15:11 |
Можно написать хранимку на MS SQL Server (использовать команду OPENROWSET(BULK...)) а потом вызывать в своем солюшене... |
Автор: Dende-Soft 7.1.2010, 17:35 |
Удалил. |