Аннотация

Это моя первая статья о науке о данных из серии об обработке естественного языка для польского языка.

В этой статье я создам контролируемую модель классификации текста. Что отличает эту статью от других, так это то, что я сосредоточусь на польском языке, который относится к группе флективных языков.

В этой статье я не буду описывать алгоритмы для анализа набора документов. Я полагаю, что читатели их уже знают. Будет подготовлена ​​модель данных. На первом этапе я покажу, как должна выполняться предварительная обработка (лемматизация, стемминг, очистка данных, удаление слов из стоп-листа). На следующем шаге для облегчения математических операций текст будет преобразован в векторное представление через ранее созданный словарь. Результаты взаимного сравнения документов будут проиллюстрированы на графиках, описаны и обсуждены.

Несмотря на то, что пример предназначен для польского языка, шаги из процесса и архитектуры решения могут быть использованы для других флективных языков, таких как немецкий, русский.
Характеристика данных
Данные, используемые для Анализ состоит из запросов на основание от ученых из Польши. Один запрос предоставляет информацию:

  • Идентификационный номер — номер, четко идентифицирующий запрос.
  • Заголовок запроса — заголовок запроса.
  • Value — описание запроса.
  • Состояние запроса — состояние запроса, которое сообщает, был ли запрос одобрен или нет.
  • Ключевые слова — ключевые слова из запроса, определенные заявителем.
  • Тип — научная область запроса.

Проблема и вопросы, на которые нужно ответить

В исследовании мы хотим ответить на 2 вопроса:

  • Если области науки из разных классов имеют что-то общее?
  • Как автоматически определить ключевые слова для классов?

на последнем шаге мы также хотим создать модель классификации и оценить ее.

Структура исходного набора данных

ID, TYTUL, WARTOSC,SLOWA_KLUCZE, WI_STATUSWNIOSKU_KOD, TYPE

Пример значения:

104074,”PROJEKT DOTYCZYŁ BADANIA AKTYWNOŚCI ELEKTRYCZNEJ SYMULOWANYCH KOMPUTEROWO SIECI NEURONOWYCH. ZAPROPONOWANY …”, “Modelowanie czynności elektrycznej wybranych struktur kory mózgowej w wielopopulacyjnej sieci neuronowej”,””,183, 1

Как видно из таблицы:

  • От класса №1 запросов в 3 раза больше, чем от классов 2 и 3. Среднее значение в классе 3 — 93, минимальное значение — 1, максимальное — 855.
  • Для класса 3 среднее значение 91, максимальное 517 и минимальное 1
  • Для класса №1 среднее значение 179, минимальное 1 и максимальное 537.

Предварительная обработка данных

Данные из текстовых файлов Данные считывались из файлов последовательно, поэтому запросы из одних и тех же полей группируются. Чтобы избежать этого нежелательного явления, данные были переиндексированы.

Текст перед очисткой:

"‹p class=""MsoBodyTextIndent2" style=""MARGIN:0cm 0cm 0pt 18pt; ТЕКСТ-ОТступ: 0 см; TEXT-ALIGN:justify””›‹strong style=””mso-bidi-font-weight: normal””‹span style=””FONT-FAMILY: Arial; mso-bidi-font-family: 'Times New Roman'””›‹font size=””3”› Odbiorcami wynikw prac jest wiele firm i przedsiębiorstw z branż:rolniczych, przetwrstwa rolniczego, paliwowych jak i produkcyjnych oraz użytkownicy lotnictwa.‹ o:p‹/o:p ‹/шрифт‹/span‹/сильный ‹/p‹/p”

Предварительная обработка текста была выполнена с помощью инструмента NLPRest2Api, созданного консорциумом Clarin.

Для связи используйте REST API с конечной точкой:

http://ws.clarin-pl.eu/nlprest2/base/process

Данные отправляются в формате JSON:

данные = {

«lpmn»: инструмент,

«текст»: текст

}

, где

инструмент — название инструмента CLARIN.

  • текст — значение текста для обработки

Благодаря инструменту данные были токенизированы, отдельные слова из непрерывного текста были отделены.

Пример ответа на предложение «Ала ма кота».

‹?xml версия=”1.0 кодировка=”UTF-8?› ‹!DOCTYPE chunkList SYSTEM “ccl.dtd”›‹chunkList‹chunk id=”ch1 type=”p”›‹sentence id=”s1›‹tok‹ orthAla/orth‹lex disamb=”1›‹baseAl/base‹ctagsubst:sg:gen:m1/ctag‹/lex‹lex disamb=”1›‹baseAlo/base‹ctagsubst:sg:gen:m1ctag‹/lex ‹ /tok‹tok> ‹orthma/orth ‹lex disamb=”1›‹basemieć/base‹ctagadj:sg:nom:f:pos /ctag‹/lex‹/tok‹tok‹orthkota/orth ‹lex disamb=”1› ‹basekot/base‹ctagsubst:sg:gen:m1 /ctag‹/lex‹/tok‹ns/›‹tok‹орт,/orth‹lex disamb=”1‹base,/base‹ctaginterpctag‹/lex‹/tok ‹tok> ‹ortha/orth‹lex disamb=”1›‹basea/base‹ctagconj ctag‹/lex‹/tok‹tok‹orthkot/orth ‹lex disamb=”1›‹basekot/base‹ctagsubst:sg:nom: m1 ctag‹/lex‹/ток‹ток‹orthma/orth‹lex disamb=”1›‹basemieć/base‹ctagadj:sg:nom:f:pos ctag‹/lex‹/ток‹ток‹orthAle/орт‹lex disamb=”1›‹baseAl/base‹ctagsubst:sg:gen:m1ctag‹/lex‹lex disamb=”1›‹baseAlo base‹ctagsubst:sg:gen:m1 ctag‹/lex‹/tok‹/предложение‹/ чанк‹/chunkList

Текст после очистки:

HTML-теги текста формы были удалены.

odbiorcami wyników prac jest wiele firm i przedsiębiorstw
z branż:
rolniczych, przetwórstwa rolniczego, paliwowych jak
i produkcyjnych oraz użytkownicy lotnictwa.
In the next step lemmatisation was done.

Лемматизация

Польский язык относится к группе флективных языков, поэтому одно слово может иметь много форм (разные окончания слов). Однако, если мы получаем слово только по тому, что оно означает, нам не нужно его изменять. Благодаря инструменту, созданному консорциумом Clarin, этот процесс был осуществлен. Обычно это сложно (с использованием классических алгоритмов), поэтому было использовано много алгоритмов машинного обучения.

Текст перед лемматизацией:

badawczego było opracowanie kompendium które przystępny
sposób prezentowało niespecjalistom zakresu kryptografii
kwantowej wykorzystanie technik kwantowych do bezpiecznego
przesyłu przetwarzania informacji.

Текст после лемматизации:

głównym planować efekt wymierny proponować projekt
badawczy być by opracowanie kompendium które w przystępny
sposób prezentować by niespecjalista z zakres kryptografia
kwantowy
wykorzystanie technik kwantowy do bezpieczny przesył
przetwarzanie informacja

Этапы исследования схожести запросов

Задача исследования запросов решалась в следующие этапы:

  1. Данные предварительной обработки — показано в предыдущих абзацах
  2. Сгенерировать корпус, где каждый запрос сохраняется в представлении Bag of words
  3. Создайте словарь из уникальных слов и присвойте каждому уникальный индекс. Эта процедура позволяет четко идентифицировать каждое конкретное слово.
  4. Сгенерируйте матрицу TF-IDF и специальный объект, позволяющий измерить сходство в пространстве TF-IDF.
  5. Сгенерируйте матрицу сходства с для всех запросов и на основе этой матрицы создайте матрицу наиболее похожих запросов для текущего обрабатываемого запроса. Функция, которая его реализует, перебирает запросы и находит вектор сходства. Далее получает k старших значений и индексы этих значений. Для этих объектов возвращаются классы полей, которые они представляют.
  6. Подсчитайте количество объектов для определенных классов.

Примеры данных для каждого шага.

Bag of words
[(0, 5), (2, 1), (3, 1), (6, 5), (9, 1), (17,1), (24, 1),
(26, 1),(31, 1), (36, 5), (40, 5), (49, 2), (94, 2),
(95, 2), (96, 2),(97, 1),(98, 1), (99, 1), (100, 1),
(101, 2), (102, 1), (103, 1),(104, 2), (105, 1),(106, 1),
(108, 1), (109, 1),(110, 1),(111, 1),(112, 1),(113, 2),
(115, 1), (116, 2),(117, 1),(118, 1),(119, 2), (120,1),
(122, 2), (123, 1), (124, 2),(125, 1), (126, 3), (127, 5),
(129, 1), (130, 1), (131, 1),(132, 1), (133, 1), (134, 3),
(136, 1), (137, 1),(138, 1),(139, 1), (140, 1), (141, 1),
(142, 1), (143, 1), (144, 1), (145, 1),(146, 1), (147, 1),
(150, 1), (151, 2), (152, 1),(153, 2), (154, 4), (155, 1),
(157, 1), (158, 1), (159, 4),(160, 1),(161, 6), (162, 1)]
Part of corpus in Bag of Words form

Пример словаря

(11, u’algade’)
(12, u’analiza’)
(13, u’badanie’)
(14, u’badawczy’)
(15, u’barasol’)
(16, u’by\u0107’)
(17, u’cel’)
(18, u’certyfikat’)
(19, u’dana’)
(20, u’da\u0107’)
(21, u’do’)

TF-IDF

Часть матрицы TF-IDF для всего корпуса.

[(0, 0.06611237305437137), (1, 0.061966402010427406),(2,0.026339323816802818),(3, 0.012470645898541044),(4,0.001121632601866529),(9, 0.01835872816098923),
(25, 0.05654424280044664),(27, 0.014036485369073176),
(34, 0.008100408628758774),(39, 0.027943034121296603),
(45, 0.003460412910099044),(56, 0.058515572836563376),
(63, 0.005649496320072668),(66, 0.044948569541710046),
(73, 0.014985592944874932),(74, 0.04468111003529216),
(75, 0.007254138867130227),(79, 0.038234128536094245),
(87, 0.012208932093890575),(90, 0.015173458635243402)

Матрица сходства запросов

Благодаря шагам, описанным в разделе «Шаги исследования схожести запросов», была составлена ​​матрица схожести запросов.

ID, STAT, KLASA_OBIEKTU

0 Счетчик({2: 4, 3: 3}) 2

1 Счетчик({1:6, 2:1}) 1

2 Счетчик({2: 4, 3: 3}) 2

3 Счетчик({1: 7}) 1

4 Счетчик({1: 7}) 1

5 Счетчик({1: 7}) 1

6 Счетчик({1: 7}) 1

7 Счетчик({3: 5, 2: 2}) 3

8 Счетчик({1: 7}) 1

9 Счетчик({1:4, 3:3}) 3

10 Счетчик({1: 7}) 1

11 Счетчик({2:4, 3:3}) 2

12 Счетчик({1: 7}) 1

В таблице выше у нас есть первые 30 запросов. Столбец «STAT» представляет имена первых 7 запросов, которые наиболее похожи на исследуемые в настоящее время. Например, класс первого элемента равен 2, а первые 4 наиболее похожих запроса относятся к одному классу. В случае запроса номер 12 все 7 относятся к тому же классу, что и запрос.

Визуализация сходства запросов

Для формирования более точных выводов результаты исследования были проиллюстрированы на диаграммах.

Тепловая карта — описание подготовки диаграммы

На основе матрицы подобия, созданной на предыдущем шаге, была создана тепловая карта. Чтобы сделать диаграмму более наглядной, все сходства, близкие к 1, были изменены на 0. Благодаря этому были устранены скачки данных и цвета стали более четкими. Данные также были умножены на 100, потому что сходства очень малы, ниже 1. Эти процедуры не мешают отношениям данных, но оправдывают разговор о них.

Тепловая карта — выводы

На тепловой диаграмме мы видим, что выделяются два ярких прямоугольника в левом и правом углах. Первый прямоугольник — из класса номер 1. Запросы из этого класса аналогичны в интервале 4–6.

Второй прямоугольник, представляющий запросы из 2 и 3 класса, более интересен для подведения итогов. Класс № 2 представляет «Точные и технические науки», такие как химия, физика, математика, 3 класс - «науки о жизни», такие как биология, ветеринария, медицина, сельское хозяйство. Эти области науки пересекаются. Например, в медицине у нас есть слова из физики, химии, а в биологии есть слова из физики и химии. Диаграмма лишь подтверждает наши предположения.

Диаграммы частотности слов в классах

Диаграммы частотности слов в классах — подготовка

Данные считывались из файлов и благодаря библиотеке CountVectorizer слова подсчитывались для всего корпуса класса. Также были определены имена для функций. Визуализация выполнена благодаря библиотеке YellowBrick.

Диаграммы частотности слов в классах — выводы

Для иллюстрации частотности слов в классах использовались первые 50 самых популярных слов из каждого класса. По вертикальной оси показаны слова, по оси уровней мы видим их количество.

Для класса № 1 самые популярные слова: бычь, баданье, метод, практика, модель, процесс. Для класса номер 1 наиболее важными словами являются: metoda praca, модель. Они наиболее популярны и не пробуются в корпусах для других классов.

Для класса № 2 самые важные слова: «конференция, проект, зостач».

Для класса 3 импортируются следующие слова: czasopismo, publikacja, krajowy.

На последней диаграмме были проиллюстрированы самые популярные слова для всего корпуса.

Классификация

Классификация — входные данные

Данные для классификации были подготовлены в соответствии с этапами, описанными в параграфе предварительной обработки данных.

Данные для классификации:

  • Без HTML-тегов
  • Слова начинаются с одного падежа
  • Без знаков препинания
  • Без стоп-слов
  • Без белых тегов
  • В объединенной форме UTF-8
  • Слова лемматизированы

Этапы создания модели классификации

  1. Чтение данных из файла.
  2. Отдельные данные, используемые для классификации.
  3. Разделите данные для обучения и набора тестов.
  4. Создайте представление Term-Frequency данных
  5. Создайте модель с помощью метода логистической регрессии.
  6. Классифицировать данные
  7. Оцените модель.

Отчет о классификации

Отчет о классификации доказывает, что наша модель работает. Для класса № 1 показатели точности и полноты превышают 98%.

Для класса № 2 баллы выше 60%. Это очень низко. Это связано с тем, что запросов на этот класс в 3 раза меньше, чем на предыдущий.

Класс номер 3 имеет точность и полноту на уровне 67%-70%. Это вызвано низким количеством обучающих данных.

Диаграмма ошибки предсказания класса

На диаграмме показана ошибка классификации для логистической регрессии. На основании этой диаграммы мы можем сказать, что классификация работает идеально для класса № 1. Хуже результаты мы получили для класса 2. Около 30% запросов из класса 3 были классифицированы как из класса № 2. Но все же больше данных классифицируется должным образом. . Для класса 3 более 70% данных классифицируются ошибочно и интерпретируются как из класса 2.

Матрица путаницы

Из матрицы мы можем сказать, что наименьшее количество ошибочно классифицированных запросов относится к классу 1. У нас есть самый большой объем данных для этого набора. Всего 2 запроса из класса 1 были классифицированы, как из класса 2.

33 запроса из класса 2 были отнесены к классу 3. Такая низкая точность вызвана очень малым набором данных для этого класса.

68 запросов из класса 3 были правильно классифицированы. 26 были интерпретированы как из класса 2.

Заключительные выводы.

Целью данной статьи был анализ данных научных запросов. Это очень специфические данные из-за содержания документов и того, какие у них отношения.

В целях правильного анализа результаты были проиллюстрированы на диаграммах. Диаграммы частоты слов были созданы, чтобы получить самые популярные и важные слова. Благодаря тепловой карте было исследовано сходство между полями данных.

Можно с уверенностью сказать, что представление текстов векторами для исследования отношений между ними работает нормально.

Мы исследовали, похожи ли документы из одного класса в модели векторного пространства. Во-вторых, мы исследовали, характеризуются ли запросы из одних и тех же областей науки более высоким фактором сходства, чем из разных областей.

Я надеюсь, что эта статья покажет, какие проблемы приходится решать при обработке флективных языков. Обычно они похожи.