Семантический анализ текста нейросетью и статистическими методами

Содержание
  1. 4gophers
  2. Частота термов
  3. TF-IDF (Term Frequency – Inverse Document Frequency)
  4. Латентно-семантический анализ
  5. Реализация на Go
  6. В результате
  7. Почитать
  8. Как сделать семантический анализ текста + пример SEO анализа | IM
  9. Онлайн-сервисы семантического и SEO-анализа текста
  10. Пример семантического анализа текста
  11. Водность текста
  12. Классическая тошнота документа
  13. Академическая тошнота текста
  14. Семантическое ядро
  15. Частота слов в семантическом ядре
  16. Как доработать текст
  17. 5 методов обработки естественного языка, которые стремительно меняют мир вокруг нас
  18. Что такое обработка естественного языка
  19. Где применяется NLP
  20. Глубокое обучение в NLP
  21. Векторное представление (text embeddings)
  22. Word2Vec
  23. GloVe
  24. Машинный перевод
  25. Семантический анализ текста нейросетью и статистическими методами
  26. Статистические методы
  27. Машинное обучение
  28. Результаты семантического анализа текстов
  29. Результаты обработки семантики текста
  30. Связи между ключевыми словами

4gophers

Семантический анализ текста нейросетью и статистическими методами

Перевод статьи “Semantic analysis of webpages with machine learning in Go”.

Я трачу довольно много времени на чтение статей в интернете. И подумал, что было бы неплохо написать небольшую программу, которая будет автоматически рекомендовать статьи, подходящие под мои интересы. Конечно, это очень обширная тема, но для начала я решил сконцентрироваться на основной проблеме: аналитики и классификации статей.

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

“the cunning creature ran around the canine”

Мы попытаемся использовать эту супер маленькую “статью” в качестве запроса для поиска аналогичных “статей” из набора других строк.

“The quick brown fox jumped over the lazy dog””hey diddle diddle, the cat and the fiddle””the fast cunning brown fox d the slow canine dog “”the little dog laughed to see such fun””and the dish ran away with the spoon”

Подходы, которые мы рассмотрим, могут работать с разными типами запросов. Это могут быть как статьи, так и просто короткие строки. Весь код будет доступен на github.

Частота термов

Один из основных подходов заключается в подсчете частоты встречаемости каждого слова(в нашем случае слово это “терм”) в каждой статье (статьи будем назвать “документами”).

Затем документы можно представить как числовые векторы в которых хранятся значения частот повторения термов. В результате у нас будет большая матрица термов документов в которой каждый элемент tdi, j представлен частотой с которой терм ti встречается в документе dj.

Ниже представлен пример такой матрицы. Для ее составления мы использовали наш набор статей.

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

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

Сразу заметно что в таком случае третья статья “the fast cunning brown fox d the slow canine dog ” имеет больше всего совпадений по термам с нашим запросом.

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

Косинусное сходство это математическая мера схожести двух числовых векторов. По сути, оно вычисляется через разницу между углами сравниваемых векторов.

Для более полного понимания что такое косинусное сходство стоит почитать статью Кристиана Перона.

Схожесть векторов выражается числом от 0 (полностью противоположные векторы) до 1 (абсолютно одинаковые векторы), чем ближе значение к 1 тем больше сходство. Сравнив наш запрос с каждым вектором мы получим результаты, показанные ниже:

По результатам видно, что наиболее близкая к нашему запросу статья как раз та самая “the fast cunning brown fox d the slow canine dog”.

Несмотря на то, что у нас получился неплохой результат, у нашего подхода есть несколько недостатков. Если внимательно посмотреть на результаты и нашу матрицу, то видно что второй документ “hey diddle diddle, the cat and the fiddle” имеет только одно совпадение с нашим запросом (the), а значение схожести аж 0.436436.

Так происходит, потому что слово the встречается дважды и в запросе и в документе. Для сравнения, первый документ “The quick brown fox jumped over the lazy dog” семантически намного ближе к нашему запросу, но оценка схожести отличается очень незначительно.

Мы должны исправить обе эти проблемы и начнем с первой: избавимся от слов, которые портят оценку, но не несут сематической нагрузки, такие как the, a, and и т.д.

TF-IDF (Term Frequency – Inverse Document Frequency)

Одни из вариантов решения этой проблемы – добавить вест нашим термам в зависимости от частоты их встречаемости в матрице. Чем чаше слово встречается в наших документах, тем меньше будет его вес. Соответственно, чем уникальнее слово, тем больше оно весит.

Есть несколько алгоритмов для реализации такого подхода, но самый используемый это tf-idf. В tf-idf используется значение обратное частоте документов с термом умноженное на саму частоту терма из нашей матриц. В результате у нас будет tf-idf матрица с весами.

Формула для расчета будет выглядеть так:

Где dft это частота документов, другими словами количество документов в которых встречается терм. n – количество документов в выборке. К обоим числам добавлены единицы, чтобы избежать проблем с делением на 0. При использовании такой формулы, вест термов, которые встречаются очень часто сразу во всех документах (например как the в нашей выборке), стремится к 0 и они как бы самоликвидируются.

И так, давайте посмотрим на новую матрицу, которую мы получили после использования tf-idf трансформации.

Как мы и рассчитывали, вес слова the практически сошел на нет и теперь равен 0 в нашей матрице. Не забывайте, что все преобразования, которые мы делаем над документами в нашей выборке должны также применятся и к нашему запросу, так чтобы мы могли их сравнить один к одному.

Теперь можно проверить, как использование tf-idf преобразования повлияло на косинусное сходство.

По этим результатам видно, что теперь на результаты влияют только те слова, которые есть исключительно в конкретном документе и в запросе. tf-idf преобразование удаляет лишний шум связанный с словами не несущими семантическую нагрузку и позволяет провести более точные вычисления.

Латентно-семантический анализ

Несмотря на то, что теперь у нас понятная оценка сходства, мы все еще не можем найти все семантически похожие документы. К примеру, первый документ The quick brown fox jumped over the lazy dog семантически очень похож на наш запрос – оба предложения про лис и собак.

Тем не менее, при использовании tf-idf преобразование, оценка схожести косинусов этих векторов равна 0, а все потому что в этих предложениях нет совсем одинаковых слов(за исключением “мусорных”, у которы после tf-idf преобразования вес минимален).

Так как же нам выделить семантический смысл, скрытый за частотой повторения термов? Использовать латентно-семантический анализ!

Латентно-семантический анализ (LSA или LSI)(оно же латентно-семантическое индексирование, когда речь идет про поиск информации) это способ поиска скрытых семантических атрибутов в набора документов на основе совместной встречаемости термов.

Предполагается, что слова которые встречаются в документе вместе(с одинаковой частотой) несут определенную семантическую нагрузку и зависят от темы документа. Это имеет важное значение, когда в анализе участвуют разные слова имеющие одинаковое значение, когда в тексте есть синонимы.

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

Латентно-семантический анализ базируется на математическом преобразовании, которое называется сингулярное разложение(SVD) и используется для уменьшения размерности нашей оригинальной матрицы.

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

Для более полного понимания математических основ SVD можете посмотреть мой код на github и/или походить по ссылкам в конце статьи. Преимущества получаемые после уменьшения размерности:1. После уменьшения размерности, теоретически, мы будем использовать меньше памяти.2.

Мы избавимся от лишнего шума, и получим более правильные результаты.3. У нас появляется возможность учитывать скрытые семантические признаки, которые мы не могли использовать в случае сравнения только по термам.

Для нашего примера я буду использовать 2х размерную матрицу, так как для начало все равно стоит использовать не очень большую размерность, кроме того, такая матрица очень хорошо визуализируется. Как правило, при использовании LSA наилучшие результаты получаются при использовании около 100 значений. Давайте посмотрим как выглядит наша матрица после применения SVD.

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

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

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

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

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

Результаты проверки косинусного сходства подтверждают наши догадки на основе графиков.

Так же, видно, что к нашему запросу “the cunning creature ran around the canine” больше всего подходит документ “The quick brown fox jumped over the lazy dog”, несмотря на то, что нет никаких достаточно основательных общих термов. LSA также решает проблему семантической связи нашего запроса с лисами и собаками.

Реализация на Go

Я запрограммировал описанные в статье алгоритмы и опубликовал их на github. Реализация основана на разичных опубликованных вайт-пеперах и туториалах, сама структура позаимствована из питоновского проекта scikit-learn.

Я привел небольшой пример как пользоваться моей библиотекой для расчета косунусного сходства между нашим запросом и документами из нашего набора, с использованием частот векторов, tf-idf преобразования и SVD факторизации.

package main import ( “fmt” “github.com/gonum/matrix/mat64” “github.com/james-bowman/nlp”) func main() { testCorpus := []string{ “The quick brown fox jumped over the lazy dog”, “hey diddle diddle, the cat and the fiddle”, “the fast cunning brown fox d the slow canine dog “, “the little dog laughed to see such fun”, “and the dish ran away with the spoon”, } query := “the cunning creature ran around the canine” vectoriser := nlp.NewCountVectoriser() transformer := nlp.NewTfidfTransformer() // указываем размерность k = 2 reducer := nlp.NewTruncatedSVD(2) // Заполняем и преобразовываем набор документов в матрицу для // для дальнейшей обработки mat, _ := vectoriser.FitTransform(testCorpus…) // Приводим наш запрос к такой же размерности – // любой терм в запросе и не в оригинальных обучающих данных // модели будет игнорироваться queryMat, _ := vectoriser.Transform(query) calcCosine(queryMat, mat, testCorpus, “Raw TF”) tfidfmat, _ := transformer.FitTransform(mat) tfidfquery, _ := transformer.Transform(queryMat) calcCosine(tfidfquery, tfidfmat, testCorpus, “TF-IDF”) lsi, _ := reducer.FitTransform(tfidfmat) queryVector, _ := reducer.Transform(tfidfquery) matched, score = calcCosine(queryVector, lsi, testCorpus, “LSA”)} func calcCosine(queryVector *mat64.Dense, tdmat *mat64.Dense, corpus []string, name string) { // Итерируемся по всем полученным векторам(колонкам) полученным после LSI // и сравниваем с вектором нашего запроса. Схожесть векторов о зависит // от угла между ними, это еще называется косинусной схожестью _, docs := tdmat.Dims() fmt.Printf(“Comparing %s”, name) for i := 0; i < docs; i++ { similarity := nlp.CosineSimilarity(queryVector.ColView(0), tdmat.ColView(i)) fmt.Printf("Comparing '%s' = %f", corpus[i], similarity) }}

В результате

Мы рассмотрели работу с моделями документа для “добывания” некоторой информации о этих документах. Эти модели строятся одна поверх другой. Мы начали работу с документами, представляя их в виде векторов, в которых были записаны значения частот по каждому терму. Затем мы расширили эту модель, использовали tf-idf преобразование.

С его помощью мы выяснили как использовать значения частот встречаемости термов не только в рамках одного документа, а с учетов всех документов для конкретного терма, что позволило избавится от “мусорных” слов.

И в конце-концов мы применили латентно-семантический анализ и сингулярное разложение для вычленения семантического смыла предложения, скрытого за частотой встречаемости термов.

Я многому научился как за время реализации алгоритмов машинного обучения(и сопутствующей математики), так и приложений, которые используют эти алгоритмы.

Я планирую реализовать много различных дополнений к моей библиотеке для расширения моих познаний в машинном обучении. Тем не менее, в этой библиотеке уже реализована LDA (Latent Dirichlet Allocation) для эффективного извлечения темы из документов.

И эта библиотека уже может использоваться в алгоритмах классификации и кластеризации, таких как нахождение к-средних и типа того.

Если у вас есть опыт в использовании описанных мною алгоритмов или аналогичных, то приходите в комментарии и делитесь опытом.

Почитать

1 апрель 2017

Источник: https://4gophers.ru/articles/semanticheski-analiz-webstranic-na-go/

Как сделать семантический анализ текста + пример SEO анализа | IM

Семантический анализ текста нейросетью и статистическими методами

Семантический анализ текста показывает, из каких слов и словосочетаний состоит контент и какие из них встречаются чаще всего.

Преимущественно его используют для SEO-текстов с ключевыми словами и LSI-шлейфами: анализ позволяет примерно представить, как на контент отреагирует поисковая система.

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

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

Как раскручивать множество аккаунтов без блокировок?

Рекомендуем: Proxy-Sale — сервис приватных прокси-серверов для профессионалов.

  • Создание аккаунтов с реальным IP-адресом при помощи прокси.
  • Приватные и бесплатные прокси, инструменты для проверки работоспособности.
  • Выбор прокси из более чем 24-х стран, более 100 городов.
  • Мгновенная поддержка и помощь в настройке.

Купить приватные прокси >> Реклама

Онлайн-сервисы семантического и SEO-анализа текста

Advego.com. Семантический анализ от биржи контента Адвего — один из самых популярных сервисов у SEO-специалистов. Он бесплатен, доступен всем незарегистрированным и зарегистрированным пользователям. Показывает:

  • Академическую тошноту;
  • Классическую тошноту;
  • Количество стоп-слов;
  • Показатель «воды»;
  • И другие менее значимые параметры.

Istio.com. Это — сервис, разработанный специально для семантического анализа текста. Доступен всем, регистрация не обязательна. Не требует оплаты подписки. Показывает:

  • Показатель водности;
  • Тошноту;
  • Топ-10 самых используемых слов;
  • Тематику текста;
  • Другие параметры.

Miratext.ru. Это — еще один сервис от биржи копирайтинга. Тоже бесплатный, доступный зарегистрированным и незарегистрированным пользователям. Показывает:

  • Тошноту;
  • «Водянистость»;
  • Качество по закону Ципфа;
  • Облако частотности слов;
  • Другие менее значимые цифры.
Внимание! У каждого сервиса свой алгоритм, поэтому единых цифр, на которые стоит ориентироваться, нет. Например, наш текст показал тошноту 4,12/8,7%, 4,79% и 4,8% на трех разных сервисах. Цифры похожи, но не совпадают. Поэтому обязательно читайте описание самого сервиса проверки и ориентируйтесь на рекомендованные им показатели.

Проверка текста на уникальность

Пример семантического анализа текста

Давайте разберем показатели на примере анализа текста по семантическому анализатору от Адвего. Первые несколько строк — количество знаков с пробелами и без, количество слов, уникальных и значимых слов — не так важны. Важны следующие показатели:

  • Вода — 67,7%;
  • Классическая тошнота документа — 4,12%;
  • Академическая тошнота документа — 8,7%;
  • Семантическое ядро;
  • Частота слов в семантическом ядре.

Давайте остановимся на каждом показателе подробнее.

Водность текста

Семантический анализатор Адвего показывает самую высокую водность — на других сервисах при проверке нашего текста она 44% и 5%. Показатель водности — это соотношение незначимых слов к общему количеству слов. Чем больше в тексте стоп-слов, не несущих смысловой нагрузки, тем выше процент воды.

Слова, которые сервис считает «водой», выводятся в отдельной таблице «Стоп-слова». Чаще всего в нее попадают предлоги и местоимения. Кстати, нормальный показатель, упомянутый в описании семантического анализа по Адвего — 55-75%. Значит, в нашем тексте уровень воды нормальный.

: Как повысить уникальность текста

Классическая тошнота документа

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

Определенные нормы по классической тошноте в описании анализатора не указаны. Создатели лишь рассказали, что она зависит от длины текста — например, для статьи длиной в 20 000 символов тошнота 5% нормальная, а для заметки в 1 000 символов — слишком высокая. Многие агентства и SEO-специалисты придерживаются мнения, что тошнота не должна быть выше 4-6%.

SEO-оптимизация страниц сайта

Академическая тошнота текста

Она определяется как соотношение самых частотных и значимых слов ко всему тексту. Саму формулу подсчета не раскрывают.

В описании указано, что нормальный процент академической тошноты — 5-15%. Это косвенно подтверждено самим Яндексом: в его блоге привели пример переоптимизированного текста, и академическая тошнота этой заметки составила 19%. На практике многие SEO-специалисты требуют писать статьи с тошнотой не больше 10%.

Семантическое ядро

Блок семантического ядра показывает самые часто встречающиеся слова в тексте. Именно они задают тематику материала. Поэтому на первом месте должны быть слова, релевантные теме — иначе поисковая система не поймет, о чем вы пишете, и понизит сайт в выдаче или вообще не будет показывать страницу по нужным ключевым словосочетаниям.

В нашем примере в семантическом ядре на первом месте стоит слово «вебинар». Понятно, что статья о вебинарах — это подтверждают следующие позиции ядра из тематических слов.

Частота слов в семантическом ядре

Этот показатель рассчитывается по самым распространенным в тексте словам. Чем выше процент — тем чаще встречается слово. Этот показатель тесно связан с процентом самой тошноты.

В описании семантического анализа Адвего нет рекомендуемых параметров. Многие SEO-специалисты и агентства требуют не превышать показатель в 3-4%. А в переоптимизированной заметке Яндекса максимальная частота слова в семантическом ядре превысила 8%.

В Istio.com также показывают семантическое ядро, а в анализаторе Miratext.ru его заменяет облако слов. Самые часто встречающиеся слова написаны крупным шрифтом. Семантический анализ Miratext.ru такжп показывает качество текста по Ципфа.

Точный алгоритм анализа по Ципфа неизвестен, но его создатели утверждают, что он проверяет «естественность» текста, а нормальный показатель начинается от 50%. Проверка нашего текста на анализаторе выдала показатель в 34%. А при проверке на самом сервисе Ципфа — 77%.

Поэтому на эту строчку при проверке на Miratext.ru можно не обращать внимания — цифры не совпадают.

Золотые правила написания продающего текста

Как доработать текст

Если показатели вашего текста не совпадают с рекомендуемыми параметрами, его желательно доработать. Сделать это просто, и мы подготовили небольшую шпаргалку:

  • Если «вода» высокая, удалите малозначимые слова и словосочетания, переформулируйте предложения так, чтобы в них встречалось меньше предлогов; если показатель низкий, разбавьте текст или не трогайте его
  • Если классическая тошнота высокая, удалите несколько вхождений самого часто встречающегося слова, если низкая — добавьте вхождения ключевых слов
  • Если академическая тошнота текста высокая, удалите несколько вхождений ключевых слов, если низкая — добавьте вхождения главного ключа
  • Если в семантическом ядре находятся нетематические слова, добавьте в текст вхождения ключей и других тематических слов
  • Если частота слов в семантическом ядре слишком высокая, удалите несколько вхождений

Не забывайте о том, что в первую очередь текст должен нравиться людям. Поэтому не стоит воспринимать семантический анализ текста как истину в последней инстанции — даже далеко не идеальные в плане SEO статьи попадают в топ. Например, в первой в выдаче по запросу «что такое инфляция» статье показатель воды по Адвего приближается к верхней планке, составляет 72,6%.

А на странице со второго места показатель академической тошноты превышает рекомендованную многими SEO-специалистами отметку в 10%, а частота слова в семантическом ядре превысила 5%.

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

Источник: https://postium.ru/kak-sdelat-semanticheskij-analiz-teksta/

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

Семантический анализ текста нейросетью и статистическими методами

Собираетесь изучать NLP и заниматься разработкой приложений, основанных на обработке естественного языка? Хотите создать свое приложение или программу для ого помощника Amazon Alexa или Яндекс Алиса? В статье мы расскажем о направлениях развития и техниках, которые применяются для решения задач NLP, чтобы вам стало проще ориентироваться.

Что такое обработка естественного языка

Обработка естественного языка (далее NLP — Natural language processing) — область, находящаяся на пересечении computer science, искусственного интеллекта и лингвистики. Цель заключается в обработке и “понимании” естественного языка для перевода текста и ответа на вопросы.

С развитием ых интерфейсов и чат-ботов, NLP стала одной из самых важных технологий искусственного интеллекта. Но полное понимание и воспроизведение смысла языка  — чрезвычайно сложная задача, так как человеческий язык имеет особенности:

  • Человеческий язык  — специально сконструированная система передачи смысла сказанного или написанного. Это не просто экзогенный сигнал, а осознанная передача информации. Кроме того, язык кодируется так, что даже маленькие дети могут быстро выучить его.
  • Человеческий язык  — дискретная, символьная или категориальная сигнальная система, обладающая надежностью.
  • Категориальные символы языка кодируются как сигналы для общения по нескольким каналам: звук, жесты, письмо, изображения и так далее. При этом язык способен выражаться любым способом.

Где применяется NLP

Сегодня быстро растет количество полезных приложений в этой области:

  • поиск (письменный или устный);
  • показ подходящей онлайн рекламы;
  • автоматический (или при содействии) перевод;
  • анализ настроений для задач маркетинга;
  • распознавание речи и чат-боты,
  • ые помощники (автоматизированная помощь покупателю, заказ товаров и услуг).

Глубокое обучение в NLP

Существенная часть технологий NLP работает благодаря глубокому обучению (deep learning) — области машинного обучения, которая начала набирать обороты только в начале этого десятилетия по следующим причинам:

  • Накоплены большие объемы тренировочных данных;
  • Разработаны вычислительные мощности: многоядерные CPU и GPU;
  • Созданы новые модели и алгоритмы с расширенными возможностями и улучшенной производительностью, c гибким обучением на промежуточных представлениях;
  • Появились обучающие методы c использованием контекста, новые методы регуляризации и оптимизации.

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

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

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

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

Недавно я закончил исчерпывающий курс по NLP с глубоким обучением из Стэнфорда.

Этот курс — подробное введение в передовые исследование по глубокому обучению, примененному к NLP.

Курс охватывает представление через вектор слов, window-based нейросети, рекуррентные нейросети, модели долгосрочной-краткосрочной памяти, сверточные нейросети и некоторые недавние модели с использованием компонента памяти.

 Со стороны программирования, я научился применять, тренировать, отлаживать, визуализировать и создавать собственные нейросетевые модели. 

Замечание:  доступ к лекциям из курса и домашним заданиям по программированию находится в этом репозитории.

Векторное представление (text embeddings)

В традиционном NLP слова рассматриваются как дискретные символы, которые далее представляются в виде one-hot векторов. Проблема со словами — дискретными символами — отсутствие определения cхожести для one-hot векторов. Поэтому альтернатива — обучиться кодировать схожесть в сами векторы.

Векторное представление —  метод представления строк, как векторов со значениями. Строится плотный вектор (dense vector) для каждого слова так, чтобы встречающиеся в схожих контекстах слова имели схожие вектора.

Векторное представление считается стартовой точкой для большинства NLP задач и делает глубокое обучение эффективным на маленьких датасетах.

Техники векторных представлений Word2vec и GloVe, созданных Google (Mikolov) Stanford (Pennington, Socher, Manning) соответственно, пользуются популярностью и часто используются для задач NLP. Давайте рассмотрим эти техники.

Word2Vec

Word2vec принимает большой корпус (corpus) текста, в котором каждое слово в фиксированном словаре представлено в виде вектора.

Далее алгоритм пробегает по каждой позиции t в тексте, которая представляет собой центральное слово c и контекстное слово o.

Далее используется схожесть векторов слов для c и o, чтобы рассчитать вероятность o при заданном с (или наоборот), и продолжается регулировка вектор слов для максимизации этой вероятности.

Для достижения лучшего результата Word2vec из датасета удаляются бесполезные слова (или слова с большой частотой появления, в английском языке —  a,the,of,then).

Это поможет улучшить точность модели и сократить время на тренировку.

Кроме того, используется отрицательная выборка (negative sampling) для каждого входа, обновляя веса для всех правильных меток, но только на небольшом числе некорректных меток.

Word2vec представлен в 2 вариациях моделей:

  1. Skip-Gram: рассматривается контекстное окно, содержащее k последовательных слов. Далее пропускается одно слово и обучается нейронная сеть, содержащая все слова, кроме пропущенного, которое алгоритм пытается предсказать. Следовательно, если 2 слова периодически делят cхожий контекст в корпусе, эти слова будут иметь близкие векторы.
  2. Continuous Bag of Words: берется много предложений в корпусе. Каждый раз, когда алгоритм видим слово, берется соседнее слово. Далее на вход нейросети подается контекстные слова и предсказываем слово в центре этого контекста. В случае тысяч таких контекстных слов и центрального слова, получаем один экземпляр датасета для нашей нейросети. Нейросеть тренируется и ,наконец, выход закодированного скрытого слоя представляет вложение (embedding) для определенного слова. То же происходит, если нейросеть тренируется на большом числе предложений и словам в схожем контексте приписываются схожие вектора.

Единственная жалоба на Skip-Gram и CBOW —  принадлежность к классу window-based моделей, для которых характерна низкая эффективность использования статистики совпадений в корпусе, что приводит к неоптимальным результатам.

GloVe

GloVe стремится решить эту проблему захватом значения одного word embedding со структурой всего обозримого корпуса.

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

Такая схема в достаточной степени позволяет отождествлять схожесть слова с векторным расстоянием.

Помимо этих двух моделей, нашли применение много недавно разработанных технологий: FastText, Poincare Embeddings, sense2vec, Skip-Thought, Adaptive Skip-Gram.

Машинный перевод

Машинный перевод (Machine translation) — преобразование текста на одном естественном языке в эквивалентный по содержанию текст на другом языке. Делает это программа или машина без участия человека.

В машинном переводе использутся статистика использования слов по соседству. Системы машинного перевода находят широкое коммерческое применение, так как переводы с языков мира — индустрия с объемом $40 миллиардов в год.

Некоторые известные примеры:

  • Google Translate переводит 100 миллиардов слов в день.

Источник: https://neurohive.io/ru/osnovy-data-science/5-metodov-v-nlp-kotorye-izmenjat-obshhenie-v-budushhem/

Семантический анализ текста нейросетью и статистическими методами

Семантический анализ текста нейросетью и статистическими методами

Все это ставит большой вопрос, каким образом можно анализировать в автоматическом режиме большие объемы данных и позже использовать полученные данные.

Рассмотрим один из перспективных текстовых процессоров на базе Paraphraser.ru. Разработчики сервиса утверждают, что Сервис идеален для анализа:

  • Диалогов с клиентами (логов общения).
  • Внутренней базы знаний.
  • Входящих текстовых запросов.
  • Результатов парсинга: соцсетей, прессы и тд.
  • Текстов для чат-ботов.

Сервис представлен в виде нескольких модулей, которые способны обрабатывать большие массивы текстов. Анализ текста в модулях реализован статистическими методами с использованием нейронных сетей.

Если коротко, то сравнение 2-х методов обработки текстов можно представить вот таким образом:

Статистические методы

Плюсы:

  • Быстрее быстрый и простой метод
  • Прозрачность и интерпретируемость результатов

Минусы:

  • Необходимость ручной настройки параметров, пороговых значений.
  • Менее качественный результат.

Машинное обучение

Плюсы:

  • Более высокое качество результата.
  • Не требуется ручная настройка.

Минусы:

  • Нужны размеченные и обучающие данные.
  • Более трудозатратый метод.
  • Чёрный ящик (непрозрачность результатов).

При этом полученные результаты можно разделить по таким видам.

Результаты семантического анализа текстов

1. Кластеризация вопросов и ответов:

a. выделение ключевых слов и синонимов,b. выделение одинаковых по смыслу словосочетаний,c. выделение однотипных вопросов,d. выделение однотипных ответов.e. выделение частотных ключевых слов и синонимов,f. выделение смысловых сочетаний ключевых слов с другими словами,

g. расчет корреляции (морфологической, семантической, векторной) между словами и словосочетаниями.

2. Определение понятий и смысла в вопросах и ответах:

a. выделение понятий с разными уровнями обобщения (центроиды),b. расчет корреляционной связи между понятиями в вопросе и понятиями в ответе,c. построение семантического ряда смыслов

d. расчет кратчайшего пути от вопроса к ответу, корреляция вопросов и уточнений в диалоге и последним или последней группой ответов.

3. Классификация вопросов и ответов.

a. Определение сущностей, определение субъекта, объекта и предмета.

4. Статистический анализ текста:

a. Количество синонимов, семантическое ядро, частотность ключевых слов.

5. Автореферирование текста.

6. Определение пропущенных частей речи.

7. Построение карт смыслов.

8. Классификация текстов исходя из данных WikiPedia.

9. Перефразирование текста.

10. Определение тональности текста.

Со слов разработчиков сервиса – сервис абсолютно не привязан к определенной тематике и не имеет ограничений в части объемов и формата данных.

Когда речь идет о статистическом анализе, то здесь все просто – используются комплексные алгоритмы, но, главное, что результат всегда может быть предсказуем. А вот, что касается машинного обучения, то здесь получается «черный ящик». Никогда не известно заранее, что получится на выходе.

Внедрение CRM-системы для увеличения прибыли компании

Кроме того, для машинного обучения очень важно иметь размеченные тексты. Иными словами, если текст не имеет оценки: верно / неверно или заранее не был классифицирован пользователем, то система сама сделать классификацию не сможет – ей необходимо показать примеры, только после этого нейросеть начинает работать.

Вот пример обработки текста чата одного коммерческого банка.

Используем статистический метод обработки текста, получаем:

Самые частотные словосочетания (с весами):

  • Открытие счета – 41%;
  • Закрытие счета — 34%.

Словосочетания (без весов) ТОП 10:

  • счет + открытие
  • счет + закрытие
  • платеж + не уходит
  • платеж + завис
  • платеж + ошибка
  • платеж + на обработке
  • поручение + не исполнено
  • поручение + на исполнении
  • поручение + на обработке
  • поручение + отозвать

Вот так может выглядеть графический интерфейс выдачи результатов анализа.

Результаты обработки семантики текста

Топ 30 клиентских запросов

Топ 30 клиентских ключевых слов

ТОП 30 ответов менеджера

Связи между ключевыми словами

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

Со слов разработчиков все задачи могут быть вынесены в контур безопасности клиента, что, безусловно, очень важно, когда речь идет о большом массиве данных, особенно, содержащих персональные данные.

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

Источник: https://promdevelop.ru/semanticheskij-analiz-teksta-nejrosetyu-i-statisticheskimi-metodami/

Об успешном бизнесе
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: