Знакомимся с Data Extracting SDK. Часть 2

суббота, 12 февраля 2011, Александр Краковецкий

Во второй части рассмотрим возможности классов MainContentExtractor для извлечения основного контента, WebScreenshotExtractor для программного получения скриншотов веб-сайтов, PrintScreenExtractor для получения снимков рабочей области экрана, Levenshtein для сравнения строк.

Класс MainContentExtractor

Класс MainContentExtractor является наследником класса HtmlExtractor и позволяет находить основной контент веб-страницы.

Использование этого класса очень простое:

MainContentExtractor r = new MainContentExtractor(new Uri(«some url»));
string content = r.GetTitle().InnerText + r.GetContent();

Примеры использования:

alt text

alt text

alt text

Не рекомендуется использовать этот функционал для:

  • главных страниц сайтов;
  • страниц, где основной контент слабо выраженный;
  • страниц, которые содержат только ссылки или большое количество информационных блоков.

Рекомендуется использовать этот функционал для блогов и статей, которые явно содержат блок основного текста.

Класс WebScreenshotExtractor

С помощью класса WebScreenshotExtractor можно получать скриншоты веб-страниц программно.

Рассмотрим пример:

WebScreenshotExtractor ext = new WebScreenshotExtractor(new Uri("http://msug.vn.ua"));
pictureBox1.Image = ext.Image;

В самом простом случае метод вернет скриншот всей страницы:

alt text

Перегруженный конструктор принимает на вход значения длины и высоты скриншота:

WebScreenshotExtractor ext = new WebScreenshotExtractor(new Uri("http://msug.vn.ua"), 1024, 800);
pictureBox1.Image = ext.Image;

В результате получим:

alt text

Также можно получать превьюшки сайтов такми способом:

pictureBox1.Image = ext.Image.GetThumbnailImage(100, 100, null, IntPtr.Zero);

alt text

Кроме того, для работы с изображениями предусмотрено несколько методов-расширений:

  • 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.


Ищите нас в интернетах!

Комментарии

Свежие вакансии