В результате освоения данной главы обучающийся будет: знать
• особенности векторных моделей представления текстов; уметь
• строить векторные модели представления текста и применять их для решения задач, связанных с обработкой текстов;
владеть
• методами латентного семантического анализа.
Векторная модель представления текстов
Моделирование можно рассматривать как замещение реального объекта его условным эквивалентом, именуемым моделью и обеспечивающим близкое к реальному объекту поведение в рамках приемлемых допущений и ограничений1. Моделирование позволяет уменьшить сложность реальных объектов, так как модели передают только наиболее существенные параметры (свойства) объектов. В частности, математическая модель определяется как эквивалент объекта, отражающий в математической форме его важнейшие свойства[1][2].
В данном разделе мы будем рассматривать в качестве объектов моделирования тексты на естественном языке. В большинстве случаев ключевыми параметрами моделей, представляющих тексты, являются слова, содержащиеся в этих текстах. Векторная, или, как ее еще называют, векторно-пространственная, модель ( VSM - vector space model) является одной из таких моделей, основанных на ключевых словах. Ранее мы уже изложили в общих чертах суть этой модели при рассмотрении задачи информационного поиска, сейчас дадим ее формальное описание.
Пусть имеется коллекция текстовых документов D = (d{, d2, dm) и задан словарь терминов этой коллекции Т = (tv t2, tf).
Модель VSM представляет каждый документ этой коллекции с помощью словаря Г как я-мерный вектор, координатами которого являются частоты вхождений терминов словаря в этот документ:
В некоторых модификациях модели VSM частоты вхождений терминов заменяют весами, которые, по сути, представляют собой те же частоты, только не абсолютные, а относительные. Существует несколько стандартных методик взвешивания терминов.
В методике Tf вес термина в документе определяется как его частота, деленная на общее количество слов документа. Таким образом, оценивается важность термина в пределах одного документа:
В методике Tf • Idf вес термина в документе определяется как произведение частоты вхождения термина в документ (Tf) и обратной документной частоты (Idf). Таким образом, оценивается важность термина в пределах всей коллекции документов. Следовательно, больший вес получают термины с высокой частотой вхождения в данный документ и с низкой частотой употребления в других документах:
где |D| — общее число документов в коллекции; Df} — число документов, в которых встречается термин tv
Если документы сильно различаются по длине (количеству слов), то веса терминов нормируют относительно друг друга. Без нормирования вес термина в документе будет тем меньше, чем длиннее документ. Как правило, нормирование весов осуществляют путем деления на евклидову норму (длину вектора документа):
Особый интерес при построении векторной модели представляет формирование словаря коллекции Т = (?1? ?2> •••> tn). Чем больше коллекция текстов, тем выше размерность словаря. Уменьшение размерности словаря позволяет снизить вычислительную сложность алгоритмов обработки текстов. С этой целью словарь коллекции, во-первых, нормализуется, во-вторых, из него исключаются стоп-слова, в-третьих, синонимы свертываются в семантические концепты.
Нормализация означает, что вместо множества словоформ одного и того же термина в словарь включается только одна форма — нормальная, т.е. лемма. Например, словоформы «он», «его», «ему» включаются в словарь один раз — в виде леммы «он».
Исключение стоп-слов означает, что из словаря исключаются все служебные слова, не несущие особой информативности. Это слова, встречающиеся в большом количестве в каждом тексте, например союзы и предлоги (табл. 9.1).
Таблица 9.1
Фрагмент списка стон-слов русского языка
а
в
всё
для
же
ах
весь
всего
до
за
бы
во
вы
если
и
быть
вот
да
есть
из
будь
все
даже
еще
или
Под свертыванием синонимов понимается замена близких по смыслу слов одним общим понятием (концептом). Например, слова «мама», «мать», «матушка», «мамочка», «маман», «мамуля», «матерь», «родительница» могут быть заменены одним словом «мать».
Этот и следующий примеры мы будем выполнять в среде R с использованием пакета Text Mining. В русскоязычном учебнике по R{, который мы очень рекомендуем для чтения, так описываются компоненты успеха этой системы:
• высокоуровневый язык программирования R, позволяющий одной строкой реализовать различные операции с объектами, векторами, матрицами, списками и т.д.;
• большой набор функций обработки данных, собранных в отдельные пакеты {packages); [3]
• развитая система поддержки, включающая обновление компонентов среды, интерактивную помощь и различные образовательные ресурсы, предназначенные как для начального изучения R, так и последующих консультаций по возникающим затруднениям.
Мы подтверждаем своим опытом работы в этой замечательной системе, что все сказанное — правда. Действительно, R позволяет осуществить легкий, быстрый и (самое главное) эффективный старт исследовательской и экспериментальной работы, связанной с обработкой и анализом данных.
Для того чтобы вы познакомились с возможностями R, мы просим дублировать наши действия с помощью этого языка программирования. Скачайте свободно распространяемый дистрибутив R вместе с базовым набором пакетов с сайта cran.r-project.org. Установите и запустите R. Установите пакеты tm и wordcloud с помощью команды install .packages (с ("tm","wordcloud")) и подключите их с помощью команд library (tm) и library (wordcloud) . В какой-нибудь отдельной пустой папке на диске создайте шесть текстовых файлов (табл. 9.2). Установите путь к этой папке с помощью команды setwd, например setwd («Е: /2016/files") . Обратите внимание, что разделитель директорий в R — это не обратный слэш, как принято, а прямой. Теперь все готово для загрузки в R коллекции текстов, которая в пакете tm называется корпусом, и ее последующей обработки.
Таблица 9.2
Текстовые документы, образующие экспериментальную
коллекцию
№
Название
файла
Содержимое
1
Beijing.txt
Beijing is the last of the 4 great ancient capitals of China. The main parts of the Great Wall of China are mostly located around this city
2
Chinatown.txt
Yokohama’s China Town is the largest China town in Japan. There is unusual atmosphere created by beautiful and narrow streets with plenty of China shops, restaurants and souvenir places
3
Islands.txt
Japan lodged a strong protest with China’s embassy in Tokyo and reiterated its position about contested islands
4
Macau.txt
Macau is one of the two Special Administrative Regions of the People’s Republic of China
5
Shanghai.txt
Despite the fact that Shanghai is not the capital of China, it is a major China metropolis
е
Yokohama.txt
With a population of 3.7 million, Yokohama, south of Tokyo, is Japan’s second largest city
Создайте новый скрипт, введите и выполните команды, приведенные ниже. Чтобы выполнить несколько команд сразу, нужно их выделить и нажать CTRL+R. Приведенные команды формируют корпус из текстовых документов и выводят о нем информацию. Последние две показывают содержимое первого и последнего документа в корпусе.
corpus <- Corpus (DirSource ()) corpus
summary (corpus) corpus [[1]] $content corpus [[6]] $content
Удалите из текстов все притяжательные окончания’s. Очистите тексты от знаков пунктуации, лишних пробелов, чисел, преобразуйте все слова в нижний формат. Снова посмотрите содержимое документов, обратите внимание, как оно изменилось.
removeEndings <- function(x) gsub (" [''] s", x)
corpus <- tm_map (corpus, content_transformer
(removeEndings))
corpus <- tm_map (corpus, removePunctuation)
corpus <- tm_map (corpus, stripWhitespace)
corpus <- tm_map (corpus, removeNumbers)
corpus <- tm_map (corpus, content_transformer
(tolower))
corpus [[1]] $content corpus [[6]] $content
Сформируйте две матрицы: «документы-на-гермины» и «тер- мины-на-документы», которые показывают распределение терминов но документам. В первой матрице строками являются документы, столбцами — термины, во второй матрице — наоборот. Выведите размеры этих матриц. Убедитесь, что эти размеры 6 х 65 и 65 х 6. Выведите полный список терминов, содержащихся в корпусе (табл. 9.3).
dtm <- DocumentTermMatrix (corpus)
tdm <- TermDocumentMatrix (corpus)
nrow (dtm)
ncol (dtm)
nrow (tdm)
ncol (tdm)
dtm$dimnames$Terms
Таблица 9.3
Полный список терминов корпуса
about
administrative
ancient
and
are
around
atmosphere
beautiful
beijing
capital
capitals
china
city
contested
created
despite
embassy
fact
great
islands
its
japan
largest
last
located
lodged
macau
main
major
metropolis
million
mostly
narrow
not
one
parts
people
places
plenty
population
position
protest
regions
reiterated
republic
restaurants
second
shanghai
shops
south
souvenir
special
streets
strong
that
the
there
this
tokyo
town
two
unusual
wall
with
yokohama
Выведите фрагмент матрицы «термины-на-документы» (табл. 9.4). Найдите десять самых высокочастотных терминов корпуса (табл. 9.5).
Очистите корпус от стоп-слов английского языка. Сначала выведите список стоп-слов. После удаления стоп-слов заново постройте матрицы «документы-на-термины» и «термины-на- документы». После этого убедитесь, что теперь таблица высокочастотных терминов выглядит иначе (табл. 9.6). Постройте облако терминов (рис. 9.1).
Десять самых высокочастотных терминов корпуса после удаления стоп-слов
china
japan
city
great
largest
tokyo
town
yokohama
administrative
ancient
9
3
2
2
2
2
2
2
2
1
Сохраните скрипт, он вам еще понадобится.
[1] См.: Новые информационные технологии : учеб, пособие / под ред. В. П. Дьяконова. М.: Солон-Пресс, 2005.
[2] См.: Самарский А. А., Михайлов А. П. Математическое моделирование. Идеи.Методы. Примеры. 2-е изд., испр. М.: Физматлит, 2001.
[3] Мастицкий С. Э., Шитиков В. К. Статистический анализ и визуализацияданных с помощью R // R: Анализ и визуализация данных. 2014. URL: http://r-analytics.blogspot.ru/p/blog-pagc_20.html