МОДЕЛЮВАННЯ ТЕКСТІВ ПРИРОДНОЮ МОВОЮ

В результаті освоєння даного розділу навчається буде: знати

  • • особливості векторних моделей уявлення текстів; вміти
  • • будувати векторні моделі представлення тексту та застосовувати їх для вирішення завдань, пов'язаних з обробкою текстів;

володіти

• методами латентного семантичного аналізу.

Векторна модель представлення текстів

Моделювання можна розглядати як заміщення реального об'єкта його умовним еквівалентом, що має назву моделлю і забезпечує близьке до реального об'єкту поведінку в рамках прийнятних припущень і обмежень 1 . Моделювання дозволяє зменшити складність реальних об'єктів, так як моделі передають тільки найбільш істотні параметри (властивості) об'єктів. Зокрема, математична модель визначається як еквівалент об'єкта, що відображає в математичній формі його найважливіші властивості [1] [2] .

В даному розділі ми будемо розглядати в якості об'єктів моделювання тексти на природній мові. У більшості випадків ключовими параметрами моделей, що представляють тексти, є слова, що містяться в цих текстах. Векторна, або, як її ще називають, векторно-просторова, модель ( VSM - vector space model) є однією з таких моделей, заснованих на ключових словах. Раніше ми вже виклали в загальних рисах суть цієї моделі при розгляді завдання інформаційного пошуку, зараз дамо її формальний опис.

Нехай є колекція текстових документів D = (d { , d 2 , d m ) і заданий словник термінів цієї колекції Т = (t v t 2 , tf).

Модель VSM представляє кожен документ цієї колекції за допомогою словника Г як я-мірний вектор, координатами якого є частоти входжень термінів словника в цей документ:

У деяких модифікаціях моделі VSM частоти входжень термінів замінюють вагами, які, по суті, являють собою ті ж частоти, тільки не абсолютні, а відносні. Існує кілька стандартних методик зважування термінів.

У методиці Tf вага терміна в документі визначається як його частота, поділена на загальну кількість слів документа. Таким чином, оцінюється важливість терміна в межах одного документа:

У методиці TfIdf вага терміна в документі визначається як добуток частоти входження терміна в документ (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
 
Переглянути оригінал
< Попер   ЗМІСТ   ОРИГІНАЛ   Наст >