[Программирование, Анализ и проектирование систем, Визуализация данных] Построение графов с помощью библиотеки PyViz на основе текстового анализа ESG стратегий отдельных компаний
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
В настоящее время многие страны мира сконцентрировались на таком важном направлении как экологическое, социальное и корпоративное управление организациями (ESG). Под этим сложным понятием чаще всего подразумевают то, каким образом деятельность компаний влияет на решение экологических проблем окружающей среды, поведенческие настроения в обществе, а также насколько эффективно ведется управление. Проведем анализ нескольких российских компаний и выясним, как применяются принципы ESG. Для этого нам потребуются: данные новостных источников по выбранной тематике, инструменты для построения графов и текстового анализа.Анализ огромного потока неструктурированной текстовой информации является одним из постоянных действий любого человека. Для того, чтобы провести быстрый обзор ключевых моментов существуют современные технологичные инструменты, такие как графы знаний или knowledge graph. Графы знаний используются для наглядного представления взаимосвязей между людьми, событиями, предметами и т.д.Данные для обработки были предварительно собраны из новостных источников с веб-сайтов организаций, а также дополнительно проведены простые манипуляции:
- местоимения заменены на наименования компаний;
- предложения разделены в список.
Чтобы построить knowledge graph необходимо в предложении определить несколько основных сущностей, а именно: субъекта, объекта и отношения между ними. В качестве субъектов и объектов чаще всего выступают следующие части речи: простые или составные имена существительные, а также связанные с ними прилагательные в отдельных случаях. Функцию построения отношений между частями речи в русском языке могут выполнять как глаголы, так и существительные. Подготовленный набор данных выглядит следующим образом:
Процесс построения графа знаний состоит из нескольких этапов: анализ текстовой информации, затем построение графической интерпретации. Для работы с текстовой информацией используется библиотека spacy, а для построения графов – связка Networkx и PyViz. · подключение необходимых библиотек:
import re
import pandas as pd
import spacy
import networkx as nx
from pyvis.network import Network
nlp = spacy.load("ru_core_news_sm")
df = pd.DataFrame(list_, columns=['Предложения'])
df.head(4)
· выделение основных сущностей с помощью библиотеки spacy и загруженной модели, обученной для русского языка:
def get_object_subject(str_):
object_,subject_ = "", ""
prefix, postfix = "", ""
flag1, flag2 = False, False
for token in nlp(str_):
if token.dep_ != "punct":
if token.dep_=="nsubj":
subject_ = token.text
flag1 = True
if token.dep_=="obj":
object_ = token.text
flag2 = True
if token.dep_.endswith("mod") == True:
prefix = token.text
if token.dep_.endswith("ppos") == True:
postfix = token.text
if prefix != "" :
if flag1:
subject_ = prefix +" "+ subject_
flag1 = False
if flag2:
object_ = prefix +" "+ object_
flag2 = False
prefix = ""
if postfix != "" :
if flag1:
subject_ = subject_ + " " + postfix
flag1 = False
if flag2:
object_ = object_ + " " + postfix
flag2 = False
postfix = ""
return [subject_.strip(), object_.strip()]
object_subject = [get_object_subject(i) for i in df["Предложения"]]
relations = [get_relation(i) for i in df['Предложения']]
· формируем набор данных для построения графа:
result_df = pd.DataFrame({'subject_':[i[0] for i in object_subject], 'object_':[i[1] for i in object_subject], 'relation_':relations})
· обработанные данные выглядят следующим образом:
· построение графа на основе выделенных из предложений параметров:
G=nx.from_pandas_edgelist(result_df, "subject_", "object_",
edge_attr=["relation_"], create_using=nx.MultiDiGraph())
nt = Network(height='750px', width='100%')
nt.from_nx(G)
for node in nt.nodes:
if node['label'] == 'Компания Магнит':
node['color'] = 'red'
elif node['label'] == 'Компания Роснефть':
node['color'] = 'yellow'
elif node['label'] == 'Компания Норникель':
node['color'] = 'blue'
else :
node['color'] = 'grey'
nt.show('nx.html')
Полученный граф выглядит:
Таким образом, с помощью построения графа знаний мы определили на примере отдельно взятых компании, каким основным направлениям ESG уделяется пристальное внимание. Аналогичную процедуру можно провести и для других российских компаний.
===========
Источник:
habr.com
===========
Похожие новости:
- [Системное администрирование, PHP, MySQL, Программирование, Cisco] Автоматический и автоматизированный способы блокировки ресурсов по поисковой выдаче
- [Разработка веб-сайтов, JavaScript, Программирование] Redux Vs Vuex. Часть 1
- [Программирование, Управление персоналом, Карьера в IT-индустрии, Читальный зал, 1С] Знакомьтесь: Слесарь 1С. Профессия, которая уже захватила рынок
- [Открытые данные, Визуализация данных, Транспорт, IT-компании] В столичном Дептрансе рассказали о карте поездок на такси «ПРОдвижение»
- [Информационная безопасность, Программирование, Производство и разработка электроники, Процессоры] Как ускорить шифрование по ГОСТ 28147-89 на процессоре Baikal-M
- [Программирование, Промышленное программирование, Инженерные системы] Укрощение строптивого или Reverse Engineering французского паллетайзера на Simatic S7-300
- [Python, Программирование, Accessibility, Здоровье] Эксперимент для сотрудника с нарушением слуха, ч. 2, проверка на себе
- [Программирование, Совершенный код, C, Rust, Браузеры] Tor Project планирует заменить код C на Rust
- [Анализ и проектирование систем, Микросервисы] Когда стоит выбирать микросервисы
- [Программирование, .NET, C#] Даты, время и часовые пояса: улучшения в .NET 6
Теги для поиска: #_programmirovanie (Программирование), #_analiz_i_proektirovanie_sistem (Анализ и проектирование систем), #_vizualizatsija_dannyh (Визуализация данных), #_esg, #_pyviz, #_programmirovanie (
Программирование
), #_analiz_i_proektirovanie_sistem (
Анализ и проектирование систем
), #_vizualizatsija_dannyh (
Визуализация данных
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 25-Ноя 19:22
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
В настоящее время многие страны мира сконцентрировались на таком важном направлении как экологическое, социальное и корпоративное управление организациями (ESG). Под этим сложным понятием чаще всего подразумевают то, каким образом деятельность компаний влияет на решение экологических проблем окружающей среды, поведенческие настроения в обществе, а также насколько эффективно ведется управление. Проведем анализ нескольких российских компаний и выясним, как применяются принципы ESG. Для этого нам потребуются: данные новостных источников по выбранной тематике, инструменты для построения графов и текстового анализа.Анализ огромного потока неструктурированной текстовой информации является одним из постоянных действий любого человека. Для того, чтобы провести быстрый обзор ключевых моментов существуют современные технологичные инструменты, такие как графы знаний или knowledge graph. Графы знаний используются для наглядного представления взаимосвязей между людьми, событиями, предметами и т.д.Данные для обработки были предварительно собраны из новостных источников с веб-сайтов организаций, а также дополнительно проведены простые манипуляции:
Процесс построения графа знаний состоит из нескольких этапов: анализ текстовой информации, затем построение графической интерпретации. Для работы с текстовой информацией используется библиотека spacy, а для построения графов – связка Networkx и PyViz. · подключение необходимых библиотек: import re
import pandas as pd import spacy import networkx as nx from pyvis.network import Network nlp = spacy.load("ru_core_news_sm") df = pd.DataFrame(list_, columns=['Предложения']) df.head(4) def get_object_subject(str_):
object_,subject_ = "", "" prefix, postfix = "", "" flag1, flag2 = False, False for token in nlp(str_): if token.dep_ != "punct": if token.dep_=="nsubj": subject_ = token.text flag1 = True if token.dep_=="obj": object_ = token.text flag2 = True if token.dep_.endswith("mod") == True: prefix = token.text if token.dep_.endswith("ppos") == True: postfix = token.text if prefix != "" : if flag1: subject_ = prefix +" "+ subject_ flag1 = False if flag2: object_ = prefix +" "+ object_ flag2 = False prefix = "" if postfix != "" : if flag1: subject_ = subject_ + " " + postfix flag1 = False if flag2: object_ = object_ + " " + postfix flag2 = False postfix = "" return [subject_.strip(), object_.strip()] object_subject = [get_object_subject(i) for i in df["Предложения"]] relations = [get_relation(i) for i in df['Предложения']] result_df = pd.DataFrame({'subject_':[i[0] for i in object_subject], 'object_':[i[1] for i in object_subject], 'relation_':relations})
· построение графа на основе выделенных из предложений параметров: G=nx.from_pandas_edgelist(result_df, "subject_", "object_",
edge_attr=["relation_"], create_using=nx.MultiDiGraph()) nt = Network(height='750px', width='100%') nt.from_nx(G) for node in nt.nodes: if node['label'] == 'Компания Магнит': node['color'] = 'red' elif node['label'] == 'Компания Роснефть': node['color'] = 'yellow' elif node['label'] == 'Компания Норникель': node['color'] = 'blue' else : node['color'] = 'grey' nt.show('nx.html') Таким образом, с помощью построения графа знаний мы определили на примере отдельно взятых компании, каким основным направлениям ESG уделяется пристальное внимание. Аналогичную процедуру можно провести и для других российских компаний. =========== Источник: habr.com =========== Похожие новости:
Программирование ), #_analiz_i_proektirovanie_sistem ( Анализ и проектирование систем ), #_vizualizatsija_dannyh ( Визуализация данных ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 25-Ноя 19:22
Часовой пояс: UTC + 5