명품콜센터-인디고홀덤 전문
24시간 직통 : 010 9315 8976

명품콜센터-인디고홀덤 전문
24시간 직통 : 010 9315 8976

인디고게임-온라인홀덤캐쉬게임 기반 이메일 분류로 헬프 데스크 대응 속도 높이기

인디고게임-온라인홀덤캐쉬게임 기반 텍스트 분류와 감성 분석을 결합하면 강력한 AI 기반 이메일 분류 시스템을 만들 수 있다. 단계별로 알아보자.

서비스 인디고게임-온라인홀덤캐쉬게임 중심 조직은 매일 수천 통의 고객 이메일을 처리해야 한다. 이는 IT 헬프 데스크, 고객 서비스 부서 등 이메일을 읽고 우선순위를 정하고 응답하는 데 관여하는 부서에 상당한 업무 부담이 된다. 2023년 한 연구에 따르면, 고객 문의를 처리하는 중견 기업과 대기업은 응답 지연으로 인한 고객 만족도 및 고객 유지율 저하를 자주 경험하는 것으로 나타났다.

이메일의 정확한 분류와 우선순위화는 응답 시간과 고객 만족도를 높이는 데 중요하다. 머신러닝, 특히 텍스트 분류와 감성 분석을 활용하면 이메일 분류를 자동화해서 긴급한 문제를 즉각 처리하면서 일상적인 문의의 처리 효율성을 높일 수 있다.

여기서는 기업이 이런 기술을 통합해 헬프 데스크 및 기타 고객 서비스 운영을 최적화하는 방법을 살펴본다.

과제 : 비효율적인 수동 이메일 분류
전통적인 이메일 분류 방법에서는 사람이 이메일을 읽고 분류하고 우선순위를 지정해야 한다. 이 방법에는 다음과 같은 단점이 따른다.

느림 : 직원들이 대량의 이메일을 처리하는 작업에 매몰된다.
비일관성 : 동일한 이메일이라도 담당자에 따라 다르게 분류될 수 있다.
실수 : 중요한 문제가 간과될 수 있다.
AI를 사용해 이메일 분류와 우선순위화를 자동화하면 정확성을 유지하면서 비효율성을 없앨 수 있다.

해결책 : AI 기반 이메일 분류
고객이 헬프 데스크로 보내는 이메일은 일반적으로 다음 6개 범주 중 하나에 속한다.

요구 : 아직 존재하지 않는 새로운 기능이나 기능에 대한 요청
향상 : 기존 기능이나 기능을 개선하기 위한 제안
결함 : 시스템 버그, 장애 또는 예상치 못한 동작에 대한 보고
보안 이슈 : 보안 취약성, 보안 침해 또는 데이터 손실이나 노출과 관련된 우려
피드백 : 제품에 대한 긍정적, 부정적 의견을 모두 포함한 일반적인 제안
구성 이슈 : 시스템 설정 시 경험하는 어려움
과거 데이터로 학습된 텍스트 분류 모델을 사용하면 수신 이메일을 자동으로 분류해서 수동 작업을 줄이고 효율성을 개선할 수 있다.

감성 분석 : 우선순위 필터
감성 분석은 분류를 넘어 이메일에 나타난 감성 상태까지 감지한다. 이메일의 감성을 긍정적, 중립적, 부정적으로 분류해 응답의 우선순위를 정하는 데 도움이 될 수 있다.

감성 분석의 예
긍정적 감성 : “이 기능이 좋기는 한데, X를 추가할 수 있나요?”
기능 개선팀으로 전달
우선순위 낮음 태그 지정
중립적 감성 : “로그인 시스템에서 버그를 발견했습니다.”
버그 수정팀으로 전달
우선순위 중간 태그 지정
부정적 감성 : “앱이 형편없습니다. 로그인도 되지 않아요!”
중대 결함 해결팀으로 전달
우선순위 높음 태그 지정
학습 데이터 집합
모델 학습에 사용된 데이터 집합은 필자가 이 프로젝트를 위해 만든 더미 데이터 집합이다. 이 데이터 집합은 실제 헬프 데스크 이메일 콘텐츠를 시뮬레이션하며, 위에서 소개한 6가지 범주(요구, 향상, 결함, 보안 이슈, 피드백, 구성 이슈) 전반에 걸쳐 레이블이 지정된 예제를 포함한다. 각 이메일에는 감성 레이블(긍정적, 중립적, 부정적)이 지정돼 있으므로 감성 상태에 따른 분류와 우선순위 지정이 가능하다.

데이터 집합은 필자의 공개 깃허브 리포지토리에서 확인할 수 있다.

1단계 : 필요한 라이브러리 가져오기
데이터 조작에는 판다스(Pandas)를, 자연어 처리는 SentimentIntensityAnalyzer를 통한 감성 분석이 포함된 NLTK를 사용하고, 텍스트 분류의 경우 사이킷-런(Scikit-learn) 라이브러리를 기반으로 한다. 분류 모델로는 다항 나이브 베이즈(Multinomial Naive Bayes) 분류기를 사용했다.

import pandas as pd
import nltk
from nltk.sentiment import SentimentIntensityAnalyzer
from sklearn.naive_bayes import MultinomialNB
2단계 : 학습 데이터 전처리
학습 데이터 전처리에서 특수 문자를 제거하고 “and”, “the”와 같은 불용어를 없애고 단어를 기본형으로 줄이기 위해 표제어 추출(lemmatization)을 적용한다. 이러한 단계를 거치면 데이터 품질이 향상되고 모델 성능이 개선된다.

nltk.download(‘stopwords’)
nltk.download(‘wordnet’)
nltk.download(‘vader_lexicon’)
from nltk.corpus import stopwords
from nltk.stem import WordNetLemmatizer

object of WordNetLemmatizer

lm = WordNetLemmatizer()

def text_transformation(df_col):
corpus = []
for item in df_col:
new_item = re.sub(‘[^a-zA-Z]’,’ ‘,str(item))
new_item = new_item.lower()
new_item = new_item.split()
new_item = [lm.lemmatize(word) for word in new_item if word not in set(stopwords.words(‘english’))]
corpus.append(‘ ‘.join(str(x) for x in new_item))
return corpus

corpus = text_transformation(df_train[‘text’])
텍스트 데이터를 머신 러닝을 위한 수치 데이터로 변환하는 데는 사이킷-런의 CountVectorizer를 사용한다.

cv = CountVectorizer(ngram_range=(1,2))
traindata = cv.fit_transform(corpus)
X = traindata
y = df_train.label
위 코드에서 다음을 볼 수 있다.

CountVectorizer(ngram_range=(1, 2))는 전처리된 이메일 텍스트(코퍼스)를 유니그램(단어)과 바이그램(단어 쌍)을 모두 포함하는 토큰 수 행렬로 변환한다.
X는 모델 학습에 사용되는 특징 행렬이다.
y는 이메일 범주(요구, 향상, 결함 등)를 포함하는 타겟 변수다.
3단계 : 분류 모델 학습
텍스트 분류에 적합한 확률적 알고리즘인 다항 나이브 베이즈 모델을 사용해 학습 벡터를 타겟 변수의 값에 피팅한다.

classifier = MultinomialNB()
classifier.fit(X, y)
다항 나이브 베이즈를 사용하는 이유
다항 나이브 베이즈 모델은 특징이 단어 수나 빈도에 따라 결정되는 텍스트 분류 작업에 특히 적합한데, 바로 여기서 사용하는 데이터 집합에 해당한다. 다항 나이브 베이즈는 다음과 같은 여러 이유로 여기서 사용하는 데이터와 잘 맞는다.

범주형 데이터 : 데이터 집합은 레이블이 지정된 이메일 텍스트로 구성되며, 여기서 특징(단어와 구문)은 자연스럽게 개별적인 개수 또는 빈도로 표현된다.
고차원 희소 특징 : CountVectorizer 또는 TfidfVectorizer의 출력은 단어 발생에 대한 대형 희소 행렬을 생성한다. 다항 나이브 베이즈는 과적합 없이 효율적이고 효과적으로 이러한 종류의 입력을 처리한다.
다중 클래스 분류 : 이메일을 6가지 클래스로 분류한다. 다항 나이브 베이즈는 기본적으로 다중 클래스 분류를 지원하므로 이 문제를 해결하는 데 적합하다.
속도와 효율성 : 다항 나이브 베이즈는 계산 측면에서 가볍고 학습 속도가 빨라 특히 특징 엔지니어링을 반복하거나 더미 데이터 집합을 다룰 때 유용하다.
강력한 기준 성능 : 다항 나이브 베이즈는 최소한의 튜닝만으로도 텍스트 분류 작업에서 대체로 뛰어난 성능을 발휘하므로 다른 모델을 비교하기 위한 강력하고 신뢰할 수 있는 기준이 된다.
그 외에 로지스틱 회귀, 서포트 벡터 머신, 랜덤 포레스트/결정 트리, LSTM 및 BERT와 같은 딥 러닝 모델도 텍스트 분류 작업에서 좋은 성능을 낸다. 다항 나이브 베이즈는 단순하면서도 효과가 뛰어난 만큼 좋은 출발점이지만 일반적으로 여러 알고리즘을 테스트하면서 성능을 비교하는 것이 좋다.

다양한 모델의 성능을 비교하기 위해 다음과 같은 평가 지표를 사용한다.

정확도 : 전체 예측 중 정확한 예측의 비율. 정확성은 클래스가 균형을 이룰 때 가장 높다.
정밀도 : 모델이 특정 범주로 레이블을 지정한 모든 이메일 중에서 실제로 올바른 비율.
재현율 : 실제로 범주에 속한 모든 이메일 중에서 모델이 정확히 식별한 비율.
F1-점수 : 정밀도와 재현율의 조화 평균. F1은 거짓 양성과 거짓 음성을 모두 고려할 때 성능에 대한 균형 잡힌 지표를 제공한다.
서포트 : 각 클래스에 실제로 존재하는 샘플의 수를 나타낸다. 서포트는 클래스 분포를 이해하는 데 유용하다.
4단계 : 분류 모델 테스트 및 성능 평가
아래 코드 예시에는 테스트 데이터 전처리, 테스트 데이터에서 타겟 값 예측하기, 혼동 행렬을 작성하고 정확도, 정밀도, 재현율을 계산해 모델 성능 평가하기와 같은 여러 단계가 결합돼 있다. 혼동 행렬은 모델의 예측을 실제 레이블과 비교한다. 분류 보고서는 각 클래스에 대한 평가 지표를 요약한다.

Reading Test Data

test_df = pd.read_csv(test_Data.txt’,delimiter=’;’,names=[‘text’,’label’])

Applying same transformation as on Train Data

X_test,y_test = test_df.text,test_df.label

pre-processing of text

test_corpus = text_transformation(X_test)

convert text data into vectors

testdata = cv.transform(test_corpus)

predict the target

predictions = clf.predict(testdata)

evaluating model performance parameters

mlp.rcParams[‘figure.figsize’] = 10,5
plot_confusion_matrix(y_test,predictions)
print(‘Accuracy_score: ‘, accuracy_score(y_test,predictions))
print(‘Precision_score: ‘, precision_score(y_test,predictions,average=’micro’))
print(‘Recall_score: ‘, recall_score(y_test,predictions,average=’micro’))
print(classification_report(y_test,predictions))
출력
Accuracy Precision Recall
IDG

Confusion Matrix
IDG

허용 가능한 임계값은 사용 사례에 따라 달라지지만 다중 클래스 텍스트 분류에서 매크로 평균 F1 점수가 0.08 이상이면 일반적으로 양호한 것으로 간주된다. F1 점수 0.8409는 이 모델이 6가지 이메일 범주 전체에서 안정적으로 작동하고 있음을 나타낸다.

경험 법칙
정확도와 F1 점수가 모두 0.80보다 높으면 일반적으로 많은 비즈니스 시나리오에서 프로덕션 준비 상태로 간주된다.
재현율이 낮으면 모델이 중요한 사례를 놓치고 있을 가능성이 있으며, 이는 우선순위가 높은 이메일 분류에 있어 중대한 문제다.
정밀도가 낮으면 이메일에 대한 모델의 플래그가 잘못되었을 가능성이 있으며, 이는 보안 이슈와 같은 민감한 범주에서 문제가 될 수 있다.

Share the Post:

관련기사보러가기

대한민국 NO.1 홀덤사이트를 소개하는 명품콜센터입니다.

저희 명품콜센터는 검증되고 안전한 사이트만을 소개하는 곳입니다