В современном мире цифровая трансформация проводится во всех отраслях, и аналитика, основанная на данных, находится в ее центре. Данные генерируются и собираются в различных формах каждую секунду, и все организации стремятся обеспечить полное представление своих данных, чтобы предоставлять аналитические данные в режиме реального времени, а также возможность предпринимать действия, основанные на данных. Сложной частью любого процесса, управляемого данными, является получение необходимой и желаемой информации в короткие сроки. Для получения информации, которую вы ищете, разработано множество алгоритмов и технологий. В этой статье мы исследуем один из популярных методов в области обработки естественного языка, известный как тематическое моделирование, и специальный пакет, расширяющий эту область.
Что такое тематическое моделирование?
Тематическое моделирование - это процесс определения тем в документе. С увеличением количества оцифрованного текста, такого как электронные письма, твиты, книги, журналы, статьи и многое другое, тематическое моделирование остается одним из наиболее важных методов идентификации и автоматизации классификации таких документов по категориям или темам, где это необходимо. Существует множество стандартных методов подхода к тематическому моделированию, среди которых самые популярные: Скрытое распределение Дирихле (LDA) и Неотрицательная матричная факторизация (NMF).
И LDA, и NMF являются стандартными реализациями в библиотеке python scikit и широко используются в сообществе специалистов по науке о данных. Эти методы представляют собой алгоритмы обучения без учителя, которые генерируют множество взаимосвязанных тем и сильно зависят от предположений, которые он делает о наборе данных. Однако у этих методов есть ограничения, когда дело доходит до обобщения основных деталей и сложных предположений, касающихся процесса генерации данных. В некоторых случаях из-за большой размерности данных, вводимых людьми, эти модели приводят к неверным предположениям.
В этой статье мы исследуем пакет CorEx, который позволяет в некоторой степени контролировать темы, создаваемые моделью.
Объяснение корреляции (CorEx)
Correlation Explanation (CorEx) - это гибкая структура, разработанная Грегом Вер Стигом для тематического моделирования для определения тем, которые максимизируют информацию, доступную в корпусе текста. Модель CorEx позволяет включать знания предметной области с помощью специфичных для пользователя якорных слов, которые направляют модель к интересующим темам. Это позволяет модели представлять темы, которые не возникают естественным образом, и дает возможность разделять ключевые слова, позволяя идентифицировать отдельные темы.
Например, в таблице ниже показаны некоторые ключевые слова, связанные с темами в новой группе, и якорные слова, которые будут использоваться для идентификации этих тем.
Как использовать CorEx?
Реализация CorEx на Python доступна на Github.
Вы можете установить CorEx на свой питон с помощью команды pip.
pip install corextopic
Ниже приведены примеры тематического моделирования с использованием стандартного неконтролируемого метода, такого как LDA и NMF.
Тематическое моделирование с использованием LDA
from sklearn.decomposition LatentDirichletAllocation as LDA no_of_topics = 4 tfidf = TF-IDF matrix of your documents # Run LDA lda = LDA(n_topics=no_of_topics).fit(tfidf) # Display top n words for each topic identified def display_topics(model, features, words_count): for topic_no, topic in enumerate(model.components_): print("Topic %d:" % (topic_no)) print(" ".join([features[i] for i in topic.argsort()[:-words_count - 1:-1]]) words_count = 10 # Display top 10 words for each topic display_topics(lda, tfidf_feature_names, words_count)
Тематическое моделирование с использованием NMF
from sklearn.decomposition import NMF no_of_topics = 4 tfidf = TF-IDF matrix of your documents # Run NMF nmf = NMF(n_components=no_of_topics).fit(tfidf) # Display top n words for each topic identified def display_topics(model, features, words_count): for topic_no, topic in enumerate(model.components_): print("Topic %d:" % (topic_no)) print(" ".join([features[i] for i in topic.argsort()[:-words_count - 1:-1]]) words_count = 10 # Display top 10 words for each topic display_topics(nmf, tfidf_feature_names, words_count)
Оба приведенных выше примера не требуют от пользователя каких-либо действий для определения тем. Темы выбираются исключительно на основе базовых концепций и могут не отражать каких-либо отношений между ключевыми словами, которые всегда связаны или всегда используются в отдельных концепциях по темам в сложном наборе данных.
Тематическое моделирование с использованием объяснения корреляции преодолевает это ограничение с помощью ключевых слов привязки, как показано в примере ниже:
from corextopic import corextopic as ct no_of_topics = 4 anchor_strength = 3 tfidf = TF-IDF matrix of your documents # Anchor Keywords keywords = [ ["congress", "clinton", "trump"], ["bible", "christian", "muslim", "hindu"], ["circuit"], ["pitching","goal"] ] # Run Anchored CorEx topic_model = ct.Corex(n_hidden=no_of_topics) topic_model.fit(tfidf, anchors = keywords, anchor_strength = anchor_strength); # Display top n words for each topic identified def display_topics(model, words_count): for i, topic_words in enumerate(model.get_topics(n_words = words_count)): topic_words = [words[0] for words in topic_words if words[1] > 0] print("Topic #{}: {}".format(i+1, ", ".join(topic_words))) words_count = 10 # Display top 10 words for each topic display_topics(topic_model,words_count)
Ключевые слова привязки - это наборы ключевых слов, назначенных каждой теме. В приведенном выше примере ключевые слова используются для обозначения таких тем, как политика, религия, спорт и Электричество (коммунальные услуги). Модель CorEx также имеет параметр силы, который определяет смещение тем, сгенерированных к ключевым словам привязки. Это значение всегда должно быть больше 1, и более высокие значения указывают на более сильное смещение в сторону ключевых слов привязки.
Образец записной книжки для CorEx от Райана Галлахера доступен по этой ссылке.
Что мы делаем в версии 1?
В версии 1 мы получаем представление о том, насколько довольны наши клиенты, с помощью ежеквартального опроса. Это помогает нам понять, что нужно нашим клиентам, область, которую можно улучшить, а также определить возможные возможности для инноваций и повышения ценности.
Corex Topic Modeller помогает выявить темы среди клиентов в ключевых областях, что позволяет нам совершенствоваться, а также гарантирует, что мы постоянно предоставляем отличные услуги.