저자:
(1) Aarav Patel, Amity 지역 고등학교 – 이메일: [email protected];
(2) Peter Gloor, MIT 집단지성센터, 교신저자 – 이메일: [email protected].
이 프로젝트의 생성은 세 단계로 나누어졌습니다. 첫 번째 단계는 다양한 소셜 네트워크에 걸쳐 웹 스크레이퍼를 통한 데이터 수집이었습니다. 이후 텍스트 데이터를 전처리한 후 자연어 처리를 통해 하위 카테고리 점수로 변환했습니다. 마지막으로, 이 데이터를 사용하여 기계 학습 알고리즘을 훈련하여 응집력 있는 ESG 등급을 계산했습니다.
자체 보고된 기업 서류를 사용하는 대신 소셜 네트워크 데이터를 사용하여 ESG를 전체적으로 정량화했습니다. 소셜 네트워크 분석과 웹 스크래핑을 사용하여 추세를 식별할 수 있습니다(Gloor et al., 2009). Twitter, LinkedIn, Google News와 같은 인기 있는 소셜 네트워크에는 거의 모든 주제와 관련된 수많은 데이터가 있습니다. 이 데이터는 회사 ESG 관행에 대한 균형 잡힌 시각을 제공할 수 있으며 단기 및 장기 회사 ESG 추세를 모두 다루는 데 도움이 될 수 있습니다. 또한 서류에 반영되지 않을 수 있는 데이터를 수집할 수도 있습니다. 마지막으로, 이 데이터는 외부인의 우려 사항을 직접적으로 강조할 수 있으며, 이는 회사의 ESG 이니셔티브가 더 영향력이 있도록 더 잘 안내할 수 있습니다.
이를 위해 ESG 관련 키워드의 포괄적인 목록이 작성되었습니다(그림 3). 이 키워드 목록은 현재 ESG 평가 방법론에서 일반적으로 사용되는 하위 범주에서 영감을 받았습니다. 이 목록은 Wikipedia, LinkedIn, Twitter 및 Google News에서 공개적으로 사용 가능한 회사 데이터를 수집하는 데 사용되었습니다. 데이터 수집을 위해 Python으로 웹 스크래퍼를 개발했습니다. Wikipedia 데이터는 Wikipedia API(응용 프로그래밍 인터페이스)를 사용하여 수집되었습니다. Wikipedia는 회사의 관행에 대한 일반적인 개요를 제공하는 역할을 합니다. Google 뉴스 데이터는 Google 검색을 기반으로 주요 뉴스 기사를 식별하여 수집되었습니다. 이 기사에 대한 링크가 저장되었습니다. 이 뉴스는 주목할만한 ESG 발전에 대한 전반적인 업데이트를 제공합니다. 트위터 데이터는 Snscrape 라이브러리의 도움으로 수집되었습니다. Snscrape는 사용자가 거의 모든 시간대에서 거의 무제한에 가까운 트윗(시간당 수집할 수 있는 개수에 대한 특정 제한이 있음)을 수집할 수 있는 경량 API입니다. 트위터는 주로 회사의 관행에 대한 소비자 측 피드백을 제공하기 위해 선택되었습니다. LinkedIn API는 LinkedIn 게시물 수집을 지원하지 않으므로 대신 이를 수행하는 알고리즘이 처음부터 만들어졌습니다. 알고리즘은 Selenium Chromedriver를 활용하여 LinkedIn 쿼리를 통해 사람이 스크롤하는 것을 시뮬레이션했습니다. 이를 바탕으로 BeautifulSoup을 통한 HTML 요청을 통해 각 게시물의 텍스트를 수집하고 저장했습니다. LinkedIn은 회사의 관행에 대한 보다 전문적인 정보를 제공하는 역할을 합니다. 이 데이터 수집 아키텍처를 사용하면 필요에 따라 등급을 실시간으로 새로 고치고 생성할 수 있습니다. 이후 각 하위 카테고리에 대한 데이터를 CSV 파일로 저장했습니다.
이 4개의 소셜 네트워크는 광범위한 회사 ESG 데이터를 다루고 있습니다. 데이터는 대부분의 S&P 500 기업(부동산 제외)에 대해 수집되었습니다. 부동산은 주로 ESG 문제와 관련된 많은 보도를 받지 못했기 때문에(표면적 수준 분석 기준) 제외되었으므로 제안된 시스템에서 실행 가능해 보이지 않았습니다. 이를 통해 수집된 회사가 부문과 산업 전반에 걸쳐 균형을 잘 이루도록 보장합니다. 웹 스크레이퍼는 소셜 네트워크의 각 키워드에 대해 최대 100개의 게시물/기사를 수집하려고 시도했습니다. 그러나 API 속도 제한과 잘 알려지지 않은 회사의 제한된 데이터 가용성으로 인해 수집되는 데이터의 양이 더 적은 경우도 있습니다. 수집 속도를 높이기 위해 여러 스크립트가 동시에 실행되었습니다. 처음에는 프로그램이 이렇게 짧은 시간 내에 너무 많은 데이터를 수집하기 때문에 속도가 제한되는 경우가 많았습니다. 이 문제를 해결하기 위해 이 문제가 발생할 경우 프로그램을 일시 중지하는 안전 장치가 추가되었습니다. 모든 데이터 수집은 각 사이트의 이용 약관에 따라 수행되었습니다. 전체적으로 약 937,400개의 총 데이터 포인트가 ~470개의 회사에서 수집되었으며, 소셜 네트워크 키워드당 평균 ~37개의 포인트가 수집되었습니다. 이 데이터의 대부분은 2021년에 집중되었습니다. 그러나 이미 충분한 정보를 수집하는 데 어려움을 겪고 있는 잘 알려지지 않은 회사의 데이터 포인트를 제거하기 때문에 엄격한 날짜 범위가 부과되지 않았습니다.
모든 데이터가 수집되면 추가 분석을 위해 스프레드시트로 내보냈습니다. RegEx(정규 표현식)를 사용하여 데이터를 전처리했습니다. 첫째, URL과 링크가 제거되었습니다. 이름을 추상화하기 위해 언급은 일반적인 단어로 대체되었습니다. 마지막으로, 일반적이지 않은 문자와 구두점이 제거되었습니다. 이는 NLP 분석을 방해할 수 있는 단어/문자를 필터링하는 데 도움이 되었습니다.
데이터를 정리하고 정리한 후 분석을 위해 NLP 알고리즘을 구축했습니다. 첫째, 결과를 방해할 수 있는 ESG 관련성 없는 데이터를 필터링하기 위해 ESG 관련성 알고리즘이 생성되었습니다. 이를 위해 게시물/기사에서 현재 회사와 하나 이상의 ESG 하위 카테고리에 대해 논의했는지 확인하기 위해 키워드 감지가 사용되었습니다. 다음으로, 의도하지 않은 데이터를 제거하기 위해 Python의 NLTK(Natural Language Toolkit) Named Entity Recognition 라이브러리를 사용하여 해당 게시물이 조직과 관련된 것인지 확인했습니다. 예를 들어 '사과기후'라는 검색어를 검색하면 '사과나무가 자라기 가장 좋은 시기는 봄기후'라는 게시물이 나올 수도 있다. 그러나 Named Entity Recognition은 "Apple"이 형용사로 사용되므로 이 문장이 ESG와 관련이 없음을 식별할 수 있습니다. 따라서 알고리즘은 이를 분석에서 무시합니다. 반면, 게시물에 "Apple은 기후 변화를 위한 계획에 5억 달러를 쏟아 붓고 있습니다"라고 적혀 있으면 알고리즘은 게시물이 Apple 조직에 대해 이야기하고 있다고 판단합니다. 이 필터링 단계는 관련 없는 정보를 제거하여 데이터 품질을 향상시키는 데 도움이 됩니다.
필터링 후 NLP 감정 분석을 사용하여 게시물이 ESG에 긍정적인지 부정적인지 점수를 매겼습니다. 이를 위해 두 가지 NLP 알고리즘이 만들어졌습니다. 짧은 게시물 NLP 알고리즘은 짧은 텍스트 본문(트윗, LinkedIn 게시물)을 분석하고 긴 기사 NLP 알고리즘은 긴 기사(뉴스 기사, Wikipedia 기사)를 분석했습니다.
다양한 Python 감정 분석 라이브러리에 대한 문학적 분석이 수행되었습니다. TextBlob, VADER, FastText 및 Flair와 같은 다양한 감정 분석 라이브러리를 비교한 결과 Flair가 다른 분류기보다 성능이 뛰어난 것으로 나타났습니다. 이는 VADER 또는 TextBlob과 같은 간단한 단어 모음 분류자가 서로 다른 단어가 서로 갖는 관계를 식별하지 못했기 때문일 수 있습니다. 반면 Flair는 문맥별 단어 벡터를 사용하여 문장의 단어 수준 및 문자 수준 관계를 분석했습니다. 이는 영화 리뷰 감정을 1~5점 척도로 평가하기 위해 SST(Stanford Sentiment Treebank)에서 이러한 알고리즘을 테스트했을 때 Flair 알고리즘이 49.90%의 F1 점수로 가장 좋은 성능을 보인 것으로 나타났습니다(Akbik). 등, 2018) (Rao 등, 2019) (그림 4). 그래서 Flair 감정 분석 라이브러리를 사용하여 short-post 알고리즘을 구축했습니다. 긴 기사 알고리즘은 기본적으로 짧은 게시물 알고리즘이지만 기사의 모든 관련 본문 단락(즉, 회사 이름이 포함된 단락) 전체에 걸쳐 평균을 냅니다.
이러한 우산 알고리즘은 각 특정 소셜 네트워크에 더욱 최적화되었습니다. 예를 들어 LinkedIn 알고리즘은 LinkedIn 게시물 작성자의 프로필을 분석하여 자기 보고를 제거했습니다. 이는 경영진이 자신의 긍정적인 이니셔티브와 목표에 대해 논의하는 경우가 많아 편견 없는 관찰이 희석되어 결과가 해석될 수 있기 때문입니다. 또한 Twitter 및 LinkedIn 알고리즘의 경우 텍스트 내에서 링크 주소가 발견되면 알고리즘은 평가를 위해 해당 기사를 분석합니다.
처음에는 Flair가 게시물 하나를 분석하는 데 3~4초가 걸리기 때문에 분석 알고리즘이 매우 느렸습니다. 그래서 "Flair Sentiment-Fast"라는 변형이 설치되었습니다. 이를 통해 Flair는 여러 게시물을 동시에 분석하는 일괄 분석을 수행할 수 있었습니다. 이는 정확도를 약간 희생시키면서 분석 시간을 크게 줄였습니다.
모든 원시 데이터의 점수가 매겨지면 점수는 응집력 있는 스프레드시트로 평균화되었습니다. 누락된 하위 점수 데이터를 채우기 위해 평균 대체가 사용되었습니다. 이러한 하위 범주 점수는 경영진에게 주요 문제에 대한 사회적 정서 분석을 제공하여 개선할 영역에 대한 구체적인 정보를 제공합니다. 그림 4: SST-5 데이터베이스의 다양한 정서 분석 알고리즘의 정확도 비교. 이러한 점수는 이니셔티브를 안내하는 데 원시적으로 사용되거나 기계 학습을 통해 추가로 컴파일되어 ESG 예측을 제공할 수 있습니다.
데이터를 수집한 후 다양한 기계 학습 모델을 테스트했습니다. 이 모델의 목표는 0에서 100까지의 ESG 점수를 예측하는 것이었습니다. 0은 최악이고 100은 최고입니다. 이러한 지도 학습 모델의 대부분은 제한된 데이터로 비선형 패턴을 학습할 수 있는 경량 회귀 알고리즘이었습니다. 이러한 알고리즘 중 일부에는 Random Forest Regression, Support Vector Regression, K-Nearest Neighbors Regression 및 XGBoost(Extreme Gradient Boosting) Regression이 포함됩니다. Random Forest Regression은 훈련 시간 동안 여러 결정 트리를 구성하고 평균 예측을 출력하는 방식으로 작동합니다(Tin Kam Ho, 1995). 지원 벡터 회귀는 값의 임계값 내에서 가장 적합한 선을 식별합니다(Awad et al., 2015). K-Nearest Neighbors Regression은 인접한 데이터 포인트의 평균값을 기반으로 값을 예측합니다(Kramer, 2013). XGBoost(Extreme Gradient Boosting) 회귀는 간단한 회귀 트리의 추정/예측을 결합하여 그래디언트 부스팅을 사용합니다(Chen et al., 2016).
이러한 회귀 알고리즘은 19가지 특성을 사용하여 학습되었습니다. 이러한 기능에는 Wikipedia에 대한 추가 카테고리와 함께 18개 키워드 각각에 대한 평균 감정이 포함됩니다. 기존 솔루션과 크게 다르지 않도록 공개 S&P Global ESG 등급에 맞게 조정되었습니다. GitHub에서 공개 라이센스를 받은 ESG 등급 스크레이퍼를 사용하여 분석된 모든 기업에 대한 S&P Global ESG 점수를 검색했습니다(Shweta-29). 정확도를 높이기 위해 과적합을 방지하기 위해 정규화와 같은 최적화 기술이 사용되었습니다.
알고리즘을 생성하기 전에는 ESG 하위 카테고리당 기사/게시물이 5개 미만인 회사를 필터링했습니다. 분석을 위해 ~320개 회사가 남았습니다. 알고리즘을 생성하고 테스트하기 위해 256개 기업이 훈련 데이터로 사용되었고, 64개 기업이 테스트 데이터로 사용되었습니다. 이러한 결과는 알고리즘의 예측 기능을 결정하는 데 사용되었습니다.
이 문서는 CC BY-NC-ND 4.0 DEED 라이센스에 따라 arxiv에서 볼 수 있습니다.