Моделирование текстов на естественном языке
Создайте новый скрипт, введите и выполните команды, приведенные ниже. Чтобы выполнить несколько команд сразу, нужно их выделить и нажать CTRL+R. Приведенные команды формируют корпус из текстовых документов и выводят о нем информацию. Последние две показывают содержимое первого и последнего документа в корпусе. Очистите корпус от стоп-слов английского языка. Сначала выведите список стоп-слов… Читать ещё >
Моделирование текстов на естественном языке (реферат, курсовая, диплом, контрольная)
В результате освоения данной главы обучающийся будет: знать
- • особенности векторных моделей представления текстов; уметь
- • строить векторные модели представления текста и применять их для решения задач, связанных с обработкой текстов;
владеть
• методами латентного семантического анализа.
Векторная модель представления текстов
Моделирование можно рассматривать как замещение реального объекта его условным эквивалентом, именуемым моделью и обеспечивающим близкое к реальному объекту поведение в рамках приемлемых допущений и ограничений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™ и library (wordcloud). В какой-нибудь отдельной пустой папке на диске создайте шесть текстовых файлов (табл. 9.2). Установите путь к этой папке с помощью команды setwd, например setwd («Е: /2016/files»). Обратите внимание, что разделитель директорий в R — это не обратный слэш, как принято, а прямой. Теперь все готово для загрузки в R коллекции текстов, которая в пакете tm называется корпусом, и ее последующей обработки.
Таблица 9.2
Текстовые документы, образующие экспериментальную коллекцию.
№. | Название файла. | Содержимое. |
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. | |
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. | |
Islands.txt. | Japan lodged a strong protest with China’s embassy in Tokyo and reiterated its position about contested islands. | |
Macau.txt. | Macau is one of the two Special Administrative Regions of the People’s Republic of China. | |
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).
as.matrix (tdm [1:12,1:6]).
freq <- sort (rowSums (as.matrix (tdm)), decreasing= TRUE).
head (freq, 10).
Таблица 9.3
Фрагмент распределительной матрицы «термины-на-документы».
Terms/. Docs. | Beijing. txt. | Chinatown. txt. | Islands. txt. | Macau. txt. | Shanghai. txt. | Yokohama. txt. |
about. | ||||||
administrative. | ||||||
ancient. | ||||||
and. | ||||||
are. | ||||||
around. | ||||||
atmosphere. |
Terms/. Docs. | Beijing. txt. | Chinatown. txt. | Islands. txt. | Macau. txt. | Shanghai. txt. | Yokohama. txt. |
beautiful. | ||||||
beijing. | ||||||
capital. | ||||||
capitals. | ||||||
china. |
Таблица 95
Десять самых высокочастотных терминов корпуса.
china. | the. | and. | japan. | with. | city. | great. | largest. | tokyo. | town. |
Очистите корпус от стоп-слов английского языка. Сначала выведите список стоп-слов. После удаления стоп-слов заново постройте матрицы «документы-на-термины» и «термины-надокументы». После этого убедитесь, что теперь таблица высокочастотных терминов выглядит иначе (табл. 9.6). Постройте облако терминов (рис. 9.1).
stopwords («english»).
corpus<-tm_map (corpus, removeWords, stopwords («english»)).
dtm <- DocumentTermMatrix (corpus) tdm <- TermDocumentMatrix (corpus).
freq <- sort (rowSums (as.matrix (tdm)), decreasing= TRUE).
head (freq, 10).
wordcloud (names (freq), freq, min. freq=l, colors = brewer. pal (8," Dark2″)).
Рис. 9.1. Облако терминов корпуса.
Таблица 9.6
Десять самых высокочастотных терминов корпуса после удаления стоп-слов.
china. | japan. | city. | great. | largest. | tokyo. | town. | yokohama. | administrative. | ancient. |
Сохраните скрипт, он вам еще понадобится.
- [1] См.: Новые информационные технологии: учеб, пособие / под ред. В. П. Дьяконова. М.: Солон-Пресс, 2005.
- [2] См.: Самарский А. А., Михайлов А. П. Математическое моделирование. Идеи.Методы. Примеры. 2-е изд., испр. М.: Физматлит, 2001.
- [3] Мастицкий С. Э., Шитиков В. К. Статистический анализ и визуализацияданных с помощью R // R: Анализ и визуализация данных. 2014. URL: http://r-analytics.blogspot.ru/p/blog-pagc20.html