← kolan.mobi
     хоумпэйдж
 Главная

← ksoftware.ya.ru
     блог
 

TelFilter

TelFilter — это программа, которая умеет находить реквизиты фирм в тексте, имеющем какую-то структур.

Такой структурированный текст, например, можно найти на сайтах различных телефонных справочников вроде «Алло Ростова», поэтому одно из применений программы — копирование онлайновых телефонных справочников и сохранение их в базу данных.

Принцип работы

Программа работает достаточно просто.

В поле «Текст с реквизитами» вставляется исходный текст (или загружается из файла). По нажатию на кнопку «Найти реквизиты» программа анализирует (парсит) исходный текст по заданным правилам.

  1. Сначала текст анализируется с помощью регулярных выражений. Этот метод позволяет найти реквизиты с ярко выраженным форматом (телефон, электронная почта, адрес сайта и т. д.).
  2. Для нахождения более сложных реквизитов есть способ основанный на расстоянии между строками. Так для нахождения названия фирмы в примере на скриншоте выше программа использует правило, что название фирмы всегда на две строки выше адреса, а адрес находиться с помощью регулярного выражения (см. пункт 1).

Правила позволяют так настроить программу на конкретный формат исходного текста, что поиск реквизитов работает весьма неплохо.

Окно настроек правил:
settings1.jpg settings2.jpg settings3.jpg

Часть файла с правилами устанавливающегося по умолчанию:

[Name]
Name=Name
BlockSeparator=1
DistanceRuleName=Phone
DistanceFromRule=-3
UserName=Название фирмы
UserDescription=Название фирмы — одна из основных частей реквизита.
GarbageRule=0
PositionFromRule=0
ActiveRegExpr=0
DBFieldName=[Название]
DBTable=[TXT Реквизиты]
DBMaxLength=200
 
[Phone]
Name=Phone
BlockSeparator=0
DistanceFromRule=0
UserName=Телефон
UserDescription=Телефонъ — аппарат для передачи человеческой речи на большiя разстоянiя, 1905 г.
GarbageRule=0
PositionFromRule=0
RegExpr0=(\+7|8)?\s*(\(\d{3,5}\))?\s+(\d{3}(\-|\s)*\d{2}(\-|\s)*\d{0,2})
ActiveRegExpr=0
DBFieldName=[Телефон]
DBTable=[TXT Телефоны]
DBMaxLength=50
 
[Address]
Name=Address
BlockSeparator=0
DistanceFromRule=0
Dictionary=ул|пр|пер|п-т
UserName=Адрес
UserDescription=Слово адрес произошло от французского adresse (направлять).
GarbageRule=0
PositionFromRule=0
RegExpr0=(^|\s+)({Dictionary})(\.|\s|,)+(([А-Я]{1}|[0-9]{1,4})[А-Яа-я\.\-]{2,})(\.|\s|,)+(\d+[А-Яа-я]?/?\d*[А-Яа-я]?)($|(\.|\s|,)+)
RegExprDescription0=Атрибут спереди
RegExpr1=(^|\s+)(([А-Я]{1}|[0-9]{1,4})[А-Яа-я\.\-]{2,})(\.|\s|,)+({Dictionary})(\.|\s|,)+(\d+[А-Яа-я]?/?\d*[А-Яа-я]?)($|(\.|\s|,)+)
RegExprDescription1=Атрибут сзади
ActiveRegExpr=1
DBFieldName=[Адрес]
DBTable=[TXT Адреса]
DBMaxLength=200
 
[EMail]
Name=EMail
BlockSeparator=0
...

Приобретение

В том виде в каком программа была сдана заказчику (фирме «XPSoft») она не представляет большого интереса, так как выгружает результаты поиска в базу данных специального формата. Однако, если программа заинтересовала вас в своем первоначальном виде, вы можете обратиться к нашему клиенту по адресу www.xpsoft.ru.

Программа была разработана у нас в KSoftWare, поэтому если вас заинтересовала её функциональность, то она может быть легко доработана под ваши нужды. Кроме того система анализа текста может быть выделена в виде отдельных программных компонентов пригодных для встраивания в программы, написанные на языке Delphi. По всем вопросам пишите нам по адресу kolan@ksoftware.ru.

См. также