МОДЕЛЮВАННЯ ТЕКСТІВ ПРИРОДНОЮ МОВОЮ
В результаті освоєння даного розділу навчається буде: знати
- • особливості векторних моделей уявлення текстів; вміти
- • будувати векторні моделі представлення тексту та застосовувати їх для вирішення завдань, пов'язаних з обробкою текстів;
володіти
• методами латентного семантичного аналізу.
Векторна модель представлення текстів
Моделювання можна розглядати як заміщення реального об'єкта його умовним еквівалентом, що має назву моделлю і забезпечує близьке до реального об'єкту поведінку в рамках прийнятних припущень і обмежень 1 . Моделювання дозволяє зменшити складність реальних об'єктів, так як моделі передають тільки найбільш істотні параметри (властивості) об'єктів. Зокрема, математична модель визначається як еквівалент об'єкта, що відображає в математичній формі його найважливіші властивості [1] [2] .
В даному розділі ми будемо розглядати в якості об'єктів моделювання тексти на природній мові. У більшості випадків ключовими параметрами моделей, що представляють тексти, є слова, що містяться в цих текстах. Векторна, або, як її ще називають, векторно-просторова, модель ( VSM - vector space model) є однією з таких моделей, заснованих на ключових словах. Раніше ми вже виклали в загальних рисах суть цієї моделі при розгляді завдання інформаційного пошуку, зараз дамо її формальний опис.
Нехай є колекція текстових документів D = (d { , d 2 , d m ) і заданий словник термінів цієї колекції Т = (t v t 2 , tf).
Модель VSM представляє кожен документ цієї колекції за допомогою словника Г як я-мірний вектор, координатами якого є частоти входжень термінів словника в цей документ:
У деяких модифікаціях моделі VSM частоти входжень термінів замінюють вагами, які, по суті, являють собою ті ж частоти, тільки не абсолютні, а відносні. Існує кілька стандартних методик зважування термінів.
У методиці Tf вага терміна в документі визначається як його частота, поділена на загальну кількість слів документа. Таким чином, оцінюється важливість терміна в межах одного документа:
У методиці Tf • Idf вага терміна в документі визначається як добуток частоти входження терміна в документ (Tf) і зворотного документної частоти (Idf). Таким чином, оцінюється важливість терміна в межах всієї колекції документів. Отже, більшу вагу отримують терміни з високою частотою входження в даний документ і з низькою частотою вживання в інших документах:
де | D | - загальне число документів у колекції; Df } - число документів, в яких зустрічається термін t v
Якщо документи сильно розрізняються по довжині (кількістю слів), то ваги термінів нормують відносно один одного. Без нормування вага терміна в документі буде тим менше, чим довше документ. Як правило, нормування ваг здійснюють шляхом ділення на евклидову норму (довжину вектора документа):
Особливий інтерес при побудові векторної моделі представляє формування словника колекції Т = (? 1? ? 2 > •••> t n ). Чим більше колекція текстів, тим вище розмірність словника. Зменшення розмірності словника дозволяє знизити обчислювальну складність алгоритмів обробки текстів. З цією метою словник колекції, по-перше, нормалізується, по-друге, з нього виключаються стоп-слова, по-третє, синоніми згортаються в семантичні концепти.
Нормалізація означає, що замість безлічі словоформ одного і того ж терміну в словник включається тільки одна форма - нормальна, тобто лема. Наприклад, словоформи «він», «його», «йому» включаються в словник один раз - у вигляді леми «він».
Виняток стоп-слів означає, що зі словника виключаються всі службові слова, що не несуть особливої інформативності. Це слова, що зустрічаються у великій кількості в кожному тексті, наприклад союзи і прийменники (табл. 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).
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 |
0 |
0 |
1 |
0 |
0 |
0 |
administrative |
0 |
0 |
0 |
1 |
0 |
0 |
ancient |
1 |
0 |
0 |
0 |
0 |
0 |
and |
0 |
2 |
1 |
0 |
0 |
0 |
are |
1 |
0 |
0 |
0 |
0 |
0 |
around |
1 |
0 |
0 |
0 |
0 |
0 |
atmosphere |
0 |
1 |
0 |
0 |
0 |
0 |
Terms / Docs |
Beijing. txt |
Chinatown. txt |
Islands. txt |
Macau. txt |
Shanghai. txt |
Yokohama. txt |
beautiful |
0 |
1 |
0 |
0 |
0 |
0 |
beijing |
1 |
0 |
0 |
0 |
0 |
0 |
capital |
0 |
0 |
0 |
0 |
1 |
0 |
capitals |
1 |
0 |
0 |
0 |
0 |
0 |
china |
2 |
3 |
0 |
1 |
2 |
0 |
Таблиця 95
Десять самих високочастотних термінів корпусу
china |
the |
and |
japan |
with |
city |
great |
largest |
tokyo |
town |
9 |
9 |
3 |
3 |
3 |
2 |
2 |
2 |
2 |
2 |
Очистіть корпус від стоп-слів англійської мови. Спочатку виведіть список стоп-слів. Після видалення стоп-слів заново побудуйте матриці «документи-на-терміни» і «терміни-на- документи». Після цього переконайтеся, що тепер таблиця високочастотних термінів виглядає інакше (табл. 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 |
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