Знакомимся с Data Extracting SDK. Часть 2
Во второй части рассмотрим возможности классов MainContentExtractor для извлечения основного контента, WebScreenshotExtractor для программного получения скриншотов веб-сайтов, PrintScreenExtractor для получения снимков рабочей области экрана, Levenshtein для сравнения строк.
Класс MainContentExtractor
Класс MainContentExtractor является наследником класса HtmlExtractor и позволяет находить основной контент веб-страницы.
Использование этого класса очень простое:
MainContentExtractor r = new MainContentExtractor(new Uri(«some url»)); string content = r.GetTitle().InnerText + r.GetContent();
Примеры использования:
Не рекомендуется использовать этот функционал для:
- главных страниц сайтов;
- страниц, где основной контент слабо выраженный;
- страниц, которые содержат только ссылки или большое количество информационных блоков.
Рекомендуется использовать этот функционал для блогов и статей, которые явно содержат блок основного текста.
Класс WebScreenshotExtractor
С помощью класса WebScreenshotExtractor можно получать скриншоты веб-страниц программно.
Рассмотрим пример:
WebScreenshotExtractor ext = new WebScreenshotExtractor(new Uri("http://msug.vn.ua")); pictureBox1.Image = ext.Image;
В самом простом случае метод вернет скриншот всей страницы:
Перегруженный конструктор принимает на вход значения длины и высоты скриншота:
WebScreenshotExtractor ext = new WebScreenshotExtractor(new Uri("http://msug.vn.ua"), 1024, 800); pictureBox1.Image = ext.Image;
В результате получим:
Также можно получать превьюшки сайтов такми способом:
pictureBox1.Image = ext.Image.GetThumbnailImage(100, 100, null, IntPtr.Zero);
Кроме того, для работы с изображениями предусмотрено несколько методов-расширений:
- ToGrayScale - получение черно-белого изображения
- Scale - масштабирование
- ResizeWithCrop - изменение размеров с обрезанием
- Resize - изменение размеров
- GetThumbnail - получение превью.
- GetImageSizeType - определение типа изображения по размеру.
Класс PrintScreenExtractor
Класс PrintScreenExtractor позвляет делать скриншоты рабочей области экрана:
private void button1_Click(object sender, EventArgs e) { this.Hide(); Thread.Sleep(1000); pictureBox1.Image = PrintScreenExtractor.GetBitmap(); this.Show(); }
Это пример для Windows Forms приложения. Hide() необходимо вызвать для того, чтобы сама программа исчезла на некоторое время и не попада в итоговое изображение.
Подобие строк – расстояние Левенштейна
Для подсчета расстояния Левенштейна моно воспользоваться классом Levenshtein, который является реализацией интерфейса ISimilarity.
Расстояние Левенштейна (также редакционное расстояние или дистанция редактирования) между двумя строками в теории информации и компьютерной лингвистике — это минимальное количество операций вставки одного символа, удаления одного символа и замены одного символа на другой, необходимых для превращения одной строки в другую.
Расстояние Левенштейна и его обобщения активно применяется:
- для исправления ошибок в слове (в поисковых системах, базах данных, при вводе текста, при автоматическом распознавании отсканированого текста или речи).
- для сравнения текстовых файлов утилитой diff и ей подобными. Здесь роль «символов» играют строки, а роль «строк» — файлы.
- в биоинформатике для сравнения генов, хромосом и белков.
Пример использования класса Levenshtein:
ISimilarity leven = new Levenshtein(); double dist = leven.GetSimilarity("dog", "cat"); // dist = 3.0
По сути, это один из самых используемых алгоритмов в задачах text mining.