Представление набора текстов в реляционной базе данных для целей лингвистического анализа | Вестник Томского государственного университета. 2004. № 284.

Представление набора текстов в реляционной базе данных для целей лингвистического анализа

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

Representation of a set of texts in a relation database for the purposes of linguistic analysis.pdf С появлением в электронном виде большого числатекстовых данных открылись широкие возможностидля компьютерного анализа текстов. Одним из наибо-лее популярных направлений в этой области являетсяматематическая лингвистика (computational linguistics)[1]. Ее использование предполагает исследованиесвойств текста путем применения математических ме-тодов к его количественным характеристикам.Подсчет количественных характеристик текста луч-ше всего производить автоматически. Вместе с тем, хра-нение данных в текстовых файлах не предполагает ни-каких удобств для подсчета этих характеристик. Иссле-дователям приходится писать специальные программыобработки текстовых файлов, которые могут существен-но различаться для разных характеристик. Всего же ко-личественных характеристик текста может быть какугодно много. Время работы подобных программ в слу-чае больших массивов данных (что в исследованиях поматематической лингвистике не редкость [2]), можетбыть достаточно велико.В данной статье предлагается способ размещения тек-стов в реляционной базе данных, определенная струк-тура которой позволяет производить быстрый и удоб-ный подсчет разнообразных количественных характе-ристик текста.ПРЕИМУЩЕСТВА ПРЕДСТАВЛЕНИЯ ТЕКСТОВВ БАЗЕ ДАННЫХВ отличие от хранения текстов в виде текстовыхфайлов, внесение текстов в базу данных предполагаетих централизованное хранение и осмысленную разбив-ку на элементарные составляющие. Так, разрозненнаяинформация об авторах (обычно хранящаяся в самихфайлах или структуре каталогов) приобретает вид таб-лицы. Тоже происходит с перечнем названий текстов и,главное, с самими текстами, о разбиении которых наотдельные составляющие будет сказано ниже. Междувсеми этими элементами появляются связи и возмож-ность фильтрации по ним.Размещая тексты в БД, помимо удобства хранениямы получаем удобство обращения к ним. Появляетсявозможность извлечения агрегированных характерис-тик текста при помощи одного или нескольких корот-ких (по сравнению с программой обработки текстовыхфайлов) запросов. Текст перестает быть простым набо-ром байт и букв, а становится последовательностьюслов и предложений.Основное преимущество перевода текстов в таблич-ный вид заключается в том, что, заполнив базу одинраз и потратив на это значительное количество време-ни, в дальнейшем мы можем достаточно быстро мани-пулировать данными.Повышению скорости обработки во многом способ-ствует наличие табличных индексов. Предполагается,что исследователь индексирует все поля и связки по-лей, по которым будут происходить запросы. Исполь-зование индексов увеличивает объем базы данных (из-за необходимости хранения служебной информации),но заметно ускоряет ее обработку.За счет сетевой ориентации используемой СУБДможно осуществить удаленный доступ к базе, что даетвозможность проводить удаленные исследования беззакачки текстовой базы на компьютер исследователя ирасположить базу на каком-либо сервере, по произво-дительности существенно превосходящем рабочуюстанцию.СУЩЕСТВУЮЩИЕ НАРАБОТКИВ ДАННОЙ ОБЛАСТИИдея создания баз данных текстов не нова. Базыданных предоставляют удобную организацию и доступк данным, поэтому при обсуждении проблемы хране-ния и обработки текстовой информации эти вопросы,так или иначе, затрагиваются. Хотя зачастую под база-ми данных понимают не хранилище под управлениемСУБД, а всего лишь некоторый массив текстовой ин-формации, неструктурированной и недоступной длякаких-либо запросов, кроме простейшего поиска повнешним признакам текста (автору, названию, временинаписания и т.д.). Примерами таких баз могут послу-жить известные электронные библиотеки Мошкова [3],«Русский текст» [4] и др.Более сложной организацией баз текстов, но такжебез поддержки СУБД, является хранение текстов свнутренней разметкой [5]. Разметка, как правило, осу-ществляется на языке XML. Существуют специальныестандарты описания текстовых данных [6]. Такое хра-нение обеспечивает более гибкую обработку текстов,но все же не предназначенную для извлечения количе-ственных характеристик.Размещение текстов в реляционных базах данныхможет быть осуществлено различными путями. Зачас-тую тексты помещаются в поля баз данных целиком(тип Memo, Text). По этому принципу размещена тек-стовая информация на большинстве сайтов интернета,которые используют технологию СУБД, и в некоторыхбиблиотеках с расширенной функциональностью [7].При такой организации базы SQL-запросы не даютпрактически никаких преимуществ в плане извлеченияколичественных характеристик. Полнотекстовая ин-дексация обеспечивает лишь быстроту поиска и удоб-ство сортировки по релевантности, но в процессе обра-ботки тексты все равно приходится каждый раз про-сматривать целиком, так же, как если бы мы работали стекстовыми файлами.Наибольшие возможности для сбора количествен-ных характеристик, на наш взгляд, обеспечивает пред-ставление текстов в реляционной базе данных в видепоследовательности слов. Была найдена единственнаяподобная разработка, которая упоминается в ряде ста-тей группы исследователей Петрозаводского государ-ственного университета [8−11]. Судя по описанию,основной причиной разбиения текстов на слова в этойразработке была необходимость установления связеймежду конкретными словами текста и их морфологиче-ским описанием. Объем текстовой базы был незначи-тельным - несколько десятков небольших произведе-ний. Ниже предлагается структура базы данных, ори-ентированной на получение количественных характе-ристик большого числа текстовых данных. Одним изважнейших критериев оценки базы является скоростьполучения различных количественных характеристик.ИНСТРУМЕНТАРИЙВ качестве СУБД для текстовой базы нами былавыбрана СУБД MySQL 4.0. Эта СУБД обладает рядомполезных преимуществ для исследователя.1. Бесплатность. СУБД MySQL [12] распространяет-ся по бесплатной лицензии GPL, позволяя таким обра-зом проводить исследования на легальных условияхбез каких-либо материальных вложений.2. Доступность и небольшой размер. Так как пакетСУБД бесплатный, его можно свободно скачать с сайтапроизводителя. Размер последней рабочей версииMySQL 23 Мб, что существенно меньше каких-либодругих СУБД.3. Мультиплатформенность. СУБД MySQL реализо-вана на всех крупных ОС, что позволяет проводить ис-следования не только на рабочих станциях Windows, нои на более мощных серверных платформах под управ-лением Unix.4. Функциональность. По функциональности пакетMySQL может сравниться с крупными СУБД - есть раз-витой язык запросов, механизм транзакций, репликация.5. Удобство доступа, манипуляции и представленияданных. Для СУБД MySQL написано множество клиент-ских программ, с помощью которых можно очень бы-стро и наглядно произвести обработку данных без на-писания программы. Кроме того, обращаться к СУБДможно из командной строки через утилиты MySQL споследующим перенаправлением результата в файл(что позволяет осуществить пакетную обработку), атакже из программ, написанных на интерпретатореPHP (что удобно для наглядного представление данныхна интернетовской странице), или из программы наC++ через MySQL API в том случае, если нужна высо-кая скорость промежуточных вычислений.СТРУКТУРА БАЗЫ ТЕКСТОВПредлагаемая нами база текстов состоит из четырехтаблиц типа MyISAM, поля в которых представленычетырьмя стандартными типами данных СУБД MySQL(табл. 1) [12].Т а б л и ц а 1Название Диапазон значений Размерbit 0/1 1 битunsigned mediumint 0 - 16777215 3 байтаunsigned smallint 0 - 65535 2 байтаvarchar Строка до 255 1−255 байтОт выбора нужного типа данных зависит объем базы искорость обработки запросов. Выбор типа MyISAM длявсех таблиц не случаен. Другой возможный тип таблицInnoDB более медлителен. Такие таблицы, прежде все-го, обеспечивают надежность хранения, пополнения(механизм транзакций) и целостность данных (внешниеключи), что в нашем случае менее важно, чем скоростьманипуляции с данными.Рассмотрим таблицы базы подробнее.1. Таблица author (автор).Хранит список авторов и содержит сокращенное имяавтора (varchar), полное имя автора (varchar), идентифи-катор записи (unsigned mediumint) и его индекс ( рис 1).Рис. 1. Пример данных в таблице authorРазделение на полное и сокращение имя авторабыло произведено для удобства отображения данных вразличных случаях.2. Таблица text (текст).Предназначена для хранения перечня названий имею-щихся текстов. Включает в себя идентификатор записи(unsigned mediumint), его индекс, сокращенное названиетекста (varchar), полное название текста (varchar) и иден-тификатор автора текста (unsigned mediumint) (рис. 2).Рис. 2. Пример данных в таблице text3. Таблица word (слово).Хранит неповторяющиеся текстовые элементы (сло-ва) - словоформы, знаки препинания и переносов и т.д.Содержит поле идентификатора записи (mediumint),его индекс, значение слова (varchar) и индекс значенияслова (для ускорения поиска по слову) (рис. 3).Так как база рассчитана на большое число текстов,таблица word может содержать сотни тысяч, а возможнодаже миллионы слов. Цифра довольно большая, тре-бующая внимания к размерам ее полей и заполнению.Тип идентификатора записи - трехбайтовый unsignedmediumint - был выбран как наименьший из возможных(двухбайтовый smallint предполагает недостаточное - 65тыс. - число значений). Поле значения слова имеет пере-менный (в зависимости от длины слова) размер.Рис. 3. Пример данных в таблице wordЧтобы избежать хранения лишних данных, быланаписана простая программа предобработки preproc,которая отмечала появление нестандартных для тек-стовых файлов символов, а также смешение различныхвидов символов (русские, английские буквы, цифры) впределах одного слова. Как оказалось, компьютерныетексты, в том числе используемые нами тексты с элек-тронной библиотеки Мошкова [3] и «Русский текст»[4], содержат немало опечаток. Часть из них можнообнаружить в процессе автоматического анализа. Так, спомощью preproc на примере наших данных было вы-явлено более 10 тыс. подобных ошибок на 56 Мб тек-стовых данных. Часть из них удалось исправить авто-матически.4. Таблица wordslist (список слов).Содержит связанные списки слов, то есть фактическисами тексты. Каждая запись - это определенное по по-рядку слово в конкретном тексте. Таблица состоит изследующих полей: идентификатора текста (unsigned mediumint),ссылающегося на таблицу text; порядковогономера предложения (unsigned smallint), порядковогономера слова в предложении (unsigned smallint); иден-тификатора слова (unsigned mediumint), ссылающегосяна таблицу word; признака (bit), определяющего загла-вие первой буквы; индекса порядкового номера предло-жения, порядкового номера слова в предложении и тек-сте; индекса по идентификатору слова (рис. 4).Рис. 4. Пример данных в таблице wordslistУ таблицы нет специально отведенного индекса запи-си, в качестве него выступает индекс «идентификатортекста - порядковый номер предложения - порядковыйномер слова», который однозначно определяет запись.Размеры полей идентификаторов текста и слова оп-ределяются соответственно размерами идентификаторовтабл. text и word. Для порядкового номера предложениявыбран двухбайтовый тип unsigned smallint, как наибо-лее подходящий - он может охватить текст с двумя ты-сячами страниц, что вполне достаточно, а однобайтовыйunsigned tinyint слишком мал (255 значений). Разбивкатекста на предложения необходима для быстрого уста-новления границ нужного предложения, в противномслучае придется каждый раз производить дополнитель-ный анализ текста, что существенно замедлит сбор стати-стики. Порядковый номер слова в предложении имеет типsmallint с подходящим диапазоном значений (65 тыс.) и вто же время наименьшим из возможных (tinyint с диапа-зоном 0−255 слишком мал). Так как в табл. word всеслова записаны прописными буквами, поле признаказаглавия первой буквы слова в wordslist необходимо длятого, чтобы сохранить информацию об именах собст-венных. Предполагается, что слово может начинатьсялибо с заглавной, либо с прописной буквы - все осталь-ные нестандартные виды написания для унификациисводятся к этим двум.Слово как наименьший неделимый элемент текставыбрано по следующим причинам. Во-первых, боль-шинство количественных характеристик текста связанос уровнем слова, либо с последовательностью слов(предложением, абзацем). Во-вторых, выбор слова даетхороший задел для исследований: слово можно охарак-теризовать по части речи, роли в предложении, смыслу.В-третьих, более мелкое деление на буквосочетаниепривело бы к катастрофическому росту числа полей БДи гораздо меньшей наглядности для исследователя.Заполнению табл. wordslist предшествовала неболь-шая предобработка текстов. В ходе предобработки убира-лись «лишние» переносы строк, нужные только для фор-матирования текста в текстовых файлах (перенос сохра-нялся только в том случае, если следующая строка начи-налась с пробела, табуляции, либо другого переноса).ПРИМЕРЫ ОБРАЩЕНИЕ К БАЗЕДля демонстрации удобства сбора количественныххарактеристик по текстам, находящимся в базе данных,приведем примеры запросов:1. Получение среднего числа слов в предложении длятекстов, у которых этот параметр больше 23 и меньше 5.SQL-запрос:select sTextLTitle, sAuthorlName,avg(iWordNum) as wrdavgfrom wordslistjoin text on (text.id = iTextId)join author on (author.id = iAuthorId)group by iTextIdhaving ((wrdavg > 25) or (wrdavg < 5))order by wrdavg desc;Возможный результат представлен на рис. 5.2. Получить слова, подозрительные на имя собст-венное, с числом встречаемости в тексте более 100 раз(наиболее часто встречаемое из них, скорее всего, ока-жется главным героем произведения) на примере «Пре-ступления и наказания» Ф.М.Достоевский.SQL-запрос:select w1.sWord, count (*) as ncfrom wordslist as wl1, wordslist as wl2join word as w1 on (w1.id = wl1.iWordId)join word as w2 on (w2.id = wl2.iWordId)join text on (text.id = wl1.iTextId)where (wl1.iWordNum 0) and (wl1.bFirstCapital) and(wl1.iTextId = wl2.iTextId) and (sTextLTitle = "Преступлениеи наказание") and (wl1.iSentNum = wl2.iSentNum)and (wl2.iWordNum = wl1.iWordNum - 1) and (not(w2.sWord in ("\"", "-")))group by w1.sWordhaving nc >100order by nc desc;Результат представлен на рис. 6.Рис. 5. Возможный результатвыполнения запроса из примера 1Рис. 6. Результат выполнения запроса из примера 23. Подсчитать число слов, встречающихся 1, 2 и т.д.до 10 раз в произведении «Вий» Н.В. Гоголя.SQL-запрос:create temporary tabletmp(sWord varchar(255), cw int);insert into tmpselect sWord, count(iWordId) as cwfrom wordslistjoin word on (word.id = iWordId)join text on (text.id = iTextId)where sTextLTitle = "Вий"group by sWordhaving cw

Ключевые слова

Авторы

ФИООрганизацияДополнительноE-mail
Шевелев Олег ГеннадьевичТомский государственный университетаспирант факультета информатикиosh@inet.tsu.ru
Всего: 1

Ссылки

 Представление набора текстов в реляционной базе данных для целей лингвистического анализа | Вестник Томского государственного университета. 2004. № 284.

Представление набора текстов в реляционной базе данных для целей лингвистического анализа | Вестник Томского государственного университета. 2004. № 284.

Полнотекстовая версия