Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Парсинг файлов разных типов


Автор: Softaz 11.7.2006, 10:21
Обладает ли кто регулярными выражениями для извлечения из файлов (html, doc, pdf и др.) текста.
Или есть в C# средства для извлечения теста из файлов.
Сразу скажу, что OLE не подходит smile
Заранее спасибо. 

Автор: 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
Цитата(Softaz @  11.7.2006,  10:21 Найти цитируемый пост)
Сразу скажу, что OLE не подходит

Почему ? Только оле и подходит. Ну, если ещё поизвращаться хочется - пожалуйста линк:
http://www.syncfusion.com/Products/product.aspx?p=26&tab_id=0

Ещё есть такая штука как IFilters, позволяет получать текст вообще откуда угодно, даже без установленного офиса, акробат ридера и т.п. (должен быть установлен соотв. IFilter). Если очень нужно, могу подкинуть примеры. 

Автор: Wanderer2019 11.7.2006, 11:22
Цитата(mr.DUDA @  11.7.2006,  10:55 Найти цитируемый пост)
Ещё есть такая штука как IFilters, позволяет получать текст вообще откуда угодно, даже без установленного офиса, акробат ридера и т.п. (должен быть установлен соотв. IFilter). Если очень нужно, могу подкинуть примеры.  


О! интересно было бы посмотреть! 

Автор: Softaz 11.7.2006, 12:18
Цитата(mr.DUDA @  11.7.2006,  10:55 Найти цитируемый пост)
Ещё есть такая штука как IFilters, позволяет получать текст вообще откуда угодно, даже без установленного офиса, акробат ридера и т.п. (должен быть установлен соотв. IFilter). Если очень нужно, могу подкинуть примеры.


Приведи, пожалуйста.



Цитата(mr.DUDA @  11.7.2006,  10:43 Найти цитируемый пост)
namespace System.Text.RegularExpressions

Я представил, СКОЛЬКО надо учесть, чтобы распарсить среднюю 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 ? smile 

Автор: Softaz 11.7.2006, 19:36
Нет. Свой пишу. smile

Добавлено @ 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
Цитата(Softaz @  12.7.2006,  08:04 Найти цитируемый пост)
 Вроде русские в команде есть.

Есть русские.

Цитата(Softaz @  12.7.2006,  08:04 Найти цитируемый пост)
Мне хочется, чтобы движок понимал морфологию. А в будущем части речи и релевантност

Чтобы сделать хороший и быстрый поисковый движок, нужны специальные знания в области оптимизации хранения и поиска данных. Где-то был сайт, на котором чел объяснял, с какими сложностями можно столкнуться даже делая простейший индексатор по ключевым словам: тут вам и большой объём базы, и необходимость использовать не обычные БД а двоичную древовидную структуру, и специальные алгоритмы, серьёзно ускоряющие поиск по сравнению с традиционными а-ля fast search, и т.п. Самому пришлось в своём проекте делать полнотекстовый поиск, поэтому предметом немного владею.  smile 

P.S. кстати, а в SQL Server есть свой full-text search, он только русского не понимает smile 

Автор: Softaz 12.7.2006, 09:22
Цитата(mr.DUDA @  12.7.2006,  08:38 Найти цитируемый пост)
в SQL Server есть свой full-text search, он только русского не понимает

Где-то читал, что понимает, если какой-то их аддон поставить.

Цитата(mr.DUDA @  12.7.2006,  08:38 Найти цитируемый пост)
Где-то был сайт, на котором чел объяснял, с какими сложностями можно столкнуться

А можешь вспомнить? Хотя бы ключевые слова, по которым искать можно. Пока неизвестен предмет поиска, его невозможно узнать.

Я скормил индексатору полное собрание сочинений Пушкина и других классиков - что под рукой было. Получилось около миллиона слов в индексе. Это с учетом обрезания окончаний и суффиксов. Поиск длится около секунды. Пока устраивает. Однако планируется хранить очень большой объем данных
 

Автор: 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
Удалил.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)