Научная статья на тему 'Повышение достоверности слабоформализованных данных'

Повышение достоверности слабоформализованных данных Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
167
47
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ДУБЛИКАТЫ / КАЧЕСТВО ДАННЫХ / КЛЮЧЕВЫЕ СЛОВА / ОБРАБОТКА ТЕКСТА / ОЧИСТКА ДАННЫХ / DUPLICATES / DATA QUALITY / KEYWORDS / TEXT PROCESSING / DATA CLEANING

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Михалькевич И. С.

Статья посвящена поиску инструментов для эффективной обработки текстовых данных с це лью выявления ключевых полей. Рассмотрены основные проблемы анализа таких данных, а также возможные пути их решения, включая формальные алгоритмы. Приведены примеры восстановления кода классификатора адресов Российской Федерации по текстовому полю адреса. Результатом работы является полноценный ин струмент, позволяющий готовить данные для анализа в автоматическом режиме.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Михалькевич И. С.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

This article is about developing text-processing toolsfor key-field detection purposes.Author considers core problems of specific data analysisas well as possible solutions including formal algorithms. Author gives an example ofextracting address classification code from text string. The contribution is complete automatic data preparing tool for business intelligence.

Текст научной работы на тему «Повышение достоверности слабоформализованных данных»

тема номера: информационные технологии в бизнесе

УДК 004.622

Повышение достоверности слабоформализованных данных

Аннотация. Статья посвящена поиску инструментов для эффективной обработки текстовых данных с целью выявления ключевых полей. Рассмотрены основные проблемы анализа таких данных, а также возможные пути их решения, включая формальные алгоритмы. Приведены примеры восстановления кода классификатора адресов Российской Федерации по текстовому полю адреса. Результатом работы является полноценный инструмент, позволяющий готовить данные для анализа в автоматическом режиме.

Ключевые слова: дубликаты; качество данных; ключевые слова; обработка текста; очистка данных.

Abstract.This article is about developing text-processing toolsfor key-field detection purposes.Author considers core problems of specific data analysisas well as possible solutions including formal algorithms. Author gives an example ofextracting address classification code from text string. The contribution is complete automatic data preparing tool for business intelligence.

Keywords: duplicates; data quality; keywords; text processing; data cleaning.

Михалькевич И.С.,

аспирант кафедры «Информатика и программирование» Финансового университета Н iLiyesku@gmaiL.com

введение

Когда возникает потребность в обработке больших объемов информации, исследователь неизбежно сталкивается с необходимостью обеспечить качество данных. Результаты работы, описанные в статье, можно применить в информационных системах, ориентированных на сбор и обработку данных, с целью приведения их к формату, пригодному для последующего анализа и выработки рекомендаций по принятию управленческих решений. Так как на сегодняшний день преобладает ручной ввод данных, необходимо заранее позаботиться об их качестве как со стороны источника данных, так и со стороны хранилища. Статья посвящена проблемам повышения и поддержки качества уже введенных в систему данных.

основные критерии качества данных

Для того чтобы четко обозначить предмет исследования, необходимо дать ему определение. В международном документе «Системы менеджмента качества. Основные положения и словарь. ^0 9000:2005» дается следующее определение [1]:

«3.1.1 качество (quality): Степень соответствия совокупности присущих характеристик (3.5.1) требованиям (3.1.2)».

Применительно к данным выделим следующие характеристики [2, с 73].

• Точность.

• Полнота.

• Своевременность.

• Формат представления.

• Уровень детализации.

• Понятность.

• Сравнимость

• Избыточность.

И другие...

Камнем преткновения при автоматической обработке данных становится их приведение к единому формату. В большинстве случаев данные вводятся в виде текста. Использование для обработки данных, представленных на обычном языке, крайне непрактично или в принципе невозможно. Для однозначного определения объектов, подлежащих учету, а также для точной машинной обработки данных разработаны различные идентификаторы, в частности общероссийские классификаторы.

Примерами таких идентификаторов являются:

• ИНН - идентификационный номер налогоплательщика.

• КПП - код причины постановки на учет.

• КЛАДР (ФИАС) - классификатор адресов Российской Федерации (Федеральная информационная адресная система).

Научный руководитель: Лукьянов П.Б., доктор экономических наук.

Таблица 1

Пример записи в справочнике КЛАДР

Код Наимено- вание Сокра- щение Индекс Тип адресного элемента Код региона Код района Код города Код населенного пункта Код улицы ОКАТО

33000005000018200 Нежиловка Мкр 602201 5 33 0 5 0 182 17435000000

Таблица 2

Пример поиска адресов

Код Наименование Код региона Код района Код города Код улицы

34000001000264200 Пархоменко 34 0 1 2642

34000001000279000 Волгоградская 34 0 1 2790

Листинг 1

Функция Replace

[SqlFunction]

public static stringReplace( string text, string pattern, string replacement, boolIgnoreCase ){

if( IgnoreCase )

return Regex.Replace( text, pattern, replacement, RegexOptions.IgnoreCase ) ;

else

return Regex.Replace( text, pattern, replacement ); }

определение функции Replace в T-SOL Листинг 2

--function signature

create function RegExpReplace(@Text nvarchar(max), @Pattern nvarchar(max), @Replacement nvarchar(max), @IgnoreCase bit) returns nvarchar(max)

--function external name

as external NAME SqlRegularExpressions.SqlRegularExpressions.[Replace]

Пример использования функции Replace Листинг 3

selectdbo.RegExpReplace ('Олимпия, ОАО, торговая компания», « [ла-я0-9]», ««, 1)

Рекурсивное разбиение строки Листинг 4

declare @strvarchar (1024)

set @str = dbo.RegExpReplace ('Олимпия, ОАО, торговая компания», « [Ла-я0-9]», ««, 1) select @str = «select «««+replace (@str, « «, ««« as val union all select «'') +"""» declare @t table (id int identity, valvarchar (100)) insert into @t exec (@str)

select val from @t where val!="» order by id_________________________________________________

• ОКАТО - общероссийский классификатор объектов административно-территориального деления.

• ОКВЭД - общероссийский классификатор видов экономической деятельности.

• ОКОПФ - общероссийский классификатор организационно-правовых форм.

И другие [3] ...

Определение ключевых полей

Уникальным идентификатором любого юридического лица можно считать комбинацию ИНН и КПП. Однако эти поля не всегда известны. Часто в «сырой» базе данных они вообще отсутствуют. Стоит отметить, что существуют бесплатные сервисы, позволяющие частично восстановить эту информацию по известным справочникам (например, онлайн-сервис DaData позволяет вычислить КЛАДР по текстовому полю адреса). На этом бесплатные возможности заканчиваются, а те, что находятся в свободном доступе, нельзя использовать в автоматическом режиме.

В самых сложных случаях вообще отсутствуют какие-либо идентификаторы. Один из таких случаев рассмотрен в данной статье.

Поиск введенных наименований по существующему справочнику

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

Все, что нам нужно,- это найти ключевые слова в названии юридического лица, а также в его адресе. Справочники адресов находятся в свободном доступе, таким образом, имея на руках справочник КЛАДР, можно определить код КЛАДР организации с точностью, как минимум, до улицы. Попробуем составить алгоритм поиска.

Запись в справочнике КЛАДР выглядит следующим образом (табл. 1).

Выбрав все элементы КЛАДР, наименования которых входят в строку адреса, мы получим все возможные составные части.

Например, для адреса: «Россия, Волгоградская обл., г. Волгоград, ул. Пархоменко, д. 18/2» получится порядка 700 наименований.

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

В полученном списке улицу можно идентифицировать по ее коду (код улицы не равен нулю). Первые циф-

Таблица 3

Разбиение наименования «Олимпия, ОАО, торговая компания»

Олимпия

ОАО

Торговая

Компания

Таблица 4

Частота использования слов

Слово Частота

Компания 1182

ИП 758

Фирма 317

Строительная 3 О N-1

и 248

Транспортная 187

центр 173

дом 163

Предприятие 155

Управление 140

строй 136

завод 131

Филиал 121

Служба 99

Области 88

ры КЛАДР города соответствуют первым цифрам КЛАДР улицы, находящейся в этом городе. Аналогично первые цифры КЛАДР региона, в котором находится город, соответствуют первым цифрам КЛАДР города и улицы. Таким образом, для каждой улицы можно найти регион и город. А те улицы, для которых регион и город из нашего списка не нашлись, нужно отбросить.

Для тех наименований в справочнике КЛАДР, что существуют в нашей строке адреса, нашлось два корректных адреса (табл. 2).

Оказалось, что существует не только Волгоградская область, но и Волгоградская улица. Поэтому важно запоминать, в каком месте адреса нашлось то или иное наименование. Для этого достаточно сохранить номер его последнего вхождения. Для наименования «Пархоменко» этот номер выше, поэтому оставляем именно эту запись. Невольно напрашивается идея, что в данном случае целесообразно разбить строку по разделителю «,» и найти в каждом элементе разбиения признаки улицы (ул.), города (г.), области (обл.) и т.д. Разумеется, это даст более точный результат. Однако адрес не всегда записан так хорошо, поэтому в общем случае приходится пользоваться более общими средствами.

Таблица 5

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Результат поиска соответствий

Транспортная компания «Автостар» Автостар транспортная компания

Ставропольское-2, ОАО, транспортноэкспедиционная компания Автотранспортное предприятие «Ставропольское-2»

Воронежское пассажирское автотранспортное предприятие № 3 Воронежское пассажирское автотранспортное предприятие № 3

Кротон многопрофильная компания Многопрофильная компания «КРОТОН»

Славянская мебельная компания, производственное объединение Славянская Мебельная Компания

Вологодские лесопромышленники, холдинговая компания Холдинговая компания «Вологодские лесопромышленники»

Олимпия, ОАО, торговая компания Торговая компания «Олимпия»

Нижегородская эстетическая компания, торговая компания НИЖЕГОРОДСКАЯ ЭСТЕТИЧЕСКАЯ КОМПАНИЯ

Домье, производственно-монтажная компания Компания Домье

Компания Баггер Компания «Баггер»

ИП Лосева МА Лосева Марина Александровна

Торговый Дом Вэздс ООО «ТД «ВЭЗДС»

Профессионал СМК Строительно-монтажная компания «ПРОФЕССИОНАЛ»

Листинг 5

Функция сравнения строк

[SqlFunction]

public static bool Overlaps( string textl, char separatorl, string text2, char separator2, intminMatchLength, intminMatchCount, boolfullMatch, boolignoreCase ){ foreach( string sl in text1.Split( separatorl ) ) foreach( string s2 in text2.Split( separator2 ) ){

if( Like( sl, fullMatch ? "л" + s2 + "$" : s2, ignoreCase ) && s2.Length >= minMatchLength || Like( s2, fullMatch ? "л" + sl + : sl, ignoreCase ) && sl.Length >= minMatchLength )

minMatchCount--;

if( minMatchCount == 0 ) return true;

}

returnfalse;

}______________________________________________________________________________________________________

Листинг б

Определение функции Overlaps в T-SOL

-function signature

create function RegExpOverlaps (@Text1 nvarchar (max), @Separator1 nchar (1), @Text2 nvarchar (max), @Separator2 nchar (1), @MinMatchLengthint, @MinMatchCountint, @FullMatch bit, @ IgnoreCase bit) returns bit -function external name

as external NAME SqlRegularExpressions.SqlRegularExpressions. [Overlaps]_________________________

Итак, КЛАДР найден. Следующим шагом будет поиск ключевых слов в названии.

Поиск ключевых слов

Часто названия юридических лиц содержат элементы, характерные для большого числа наименований. Например, элементы типа «ИП», «ООО», «ЗАО», «компания», «промышленно-», «торговый» встречаются очень часто и могут затруднить поиск. Эти элементы явно не явля-

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

Для этого необходимо составить словарь часто встречающихся слов. Здесь мы сталкиваемся с необходимостью разбить названия на составные части. Перед этим можно объединить все названия в одну строку и очистить ее от ненужных символов.

В качестве примера возьмем следующее название: «Олимпия, ОАО, торговая компания». Название мо-

жет содержать много мусорных символов, поэтому для его очистки стоит использовать регулярные выражения. Для очистки строк был использован инструментарий стандартных библиотек.NET (а именно System.Text. RegularExpressions) и написана простая функция удаления по шаблону (листинг 1, 2).

Пример использования функции RegExpReplace () в нашем случае будет таким, как показано на листинге 3.

Далее необходимо разбить строку на слова и составить таблицу частот. Автор счел целесообразным воспользоваться рекурсивным способом разбиения, предложенным на одном из форумов (листинг 4) [3].

Результат такого разбиения представлен в табл. 3.

Объединив все названия и разбив их в таблицу, получим результат, показанный в табл. 4.

Эмпирически выявлено, что для базы порядка нескольких тысяч наименований слова, которые встречаются менее 4 раз, следует исключить из таблицы, так как среди повторяющихся, но не совпадающих полностью названий, ключевые слова могут встретиться более одного раза. Альтернативно можно оставить 90-95% самых часто встречающихся слов.

После составления списка наиболее часто встречающихся слов их можно удалить из каждого наименования с помощью той же функции RegExpReplace или стандартной функции replace.

Следующим шагом будет поиск соответствий в наименованиях и адресах.

Поиск соответствий

При сравнении адресов достаточно сравнить первые 15 цифр КЛАДР (с точностью до улицы), что дает приемлемую точность вкупе с названием.

После определения ключевых слов в наименованиях юридических лиц необходимо разработать метод их сравнения. Для сравнения ключевых слов в наименованиях была написана еще одна функция с использованием тех же библиотек (листинг 5,6).

Для обеспечения возможности тонкой настройки в данной функции предусмотрены различные параметры.

MinMatchLength — определяет минимальное количество совпадающих символов подряд;

MinMatchCount — определяет минимальное количество совпадающих слов;

FullMatch — определяет, будет ли проведен поиск по полному или частичному совпадению слова;

IgnoreCase — определяет, будет ли учитываться регистр при сравнении строк.

После проверки различных вариантов сравнения было выявлено, что для признания наименований юридических лиц, имеющих одинаковые адреса, идентичными достаточно совпадения по одному ключевому слову. Функция RegExpOverlaps с параметрами: MinMatchLength =

4; MinMatchCount = 1; FullMatch = 1; IgnoreCase = 1 дает наиболее приемлемую комбинацию полноты и точности сравнения.

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

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

Из 330 совпавших наименований количество неверно распознанных составило всего 6, что соответствует точности совпадения более 98%.

Можно увидеть, что наименования «Компания Баггер», «Компания Домье», «Многопрофильная компания Кротон» и другие не пересеклись между собой, так как часто встречающееся слово «компания» было удалено перед сравнением. При этом мы можем позволить себе сравнивать названия хотя бы по одному ключевому слову, что должно дать максимальное значение показателя полноты.

Заключение

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

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

Литература

1. Международный стандарт ИСО 9000:2005 (ГОСТ Р ИСО 9000:2005). Системы менеджмента качества. Основные положения и словарь.

2. Sauter, Vicki Lynn, 1955-Decision support systems for business intelligence / Vicki L Sauter.— 2nd ed.p. cm.ISBN 978-0-470-43374-4 (pbk.)

3. Общероссийский классификатор информации об общероссийских классификаторах.

4. http://www.sql.ru/forum/505201/parsing-stroki (дата обращения: 19.03.2014).

i Надоели баннеры? Вы всегда можете отключить рекламу.