Auto Categorization of AHD Requests Tickets
===========================================
 NLP Text Multi- class Classification
-------------------------------------
  

  

####  Dr. Nishant Upadhyay
####  Pune
####  05/03/2023

\*\*Table of contents\*\*

\* [Proposed NLP Workflow](#1)
 
\* [Data Importing, filtering and data parsing: Section A\_1 & 2](#2)

 \* [Data import/ sampling](#3)

 \* [Combined EDA plot and feature extraction function & executing it on `filtered\_df\_top3cat` ](#4)
 
 \* [Class object of EDA plot and feature extraction & executing it on `filtered\_df\_top3cat`)](#5)
 
 
 
\* [Tokenization, cleaning and Univariate/Bivariate EDA](#6)
 \* [Testing on a sample dataset with 20 records](#7)
 \* [Text pre-processing/cleaning function](#8)
 \* [Adding the cleaned data back to the dataframe](#9)
 \* [EDA- Univariate/ Bivariate analysis on `Description` variable](#10)
 \* [Function to do EDA analysis](#11)
 \* [EDA- Univariate/ Bivariate analysis on `requests\_cleaned\_joined` variable](#12)
 \* [](#)
 \* [](#)
 \* [](#)
 \* [](#)
 \* [](#)
 \* [](#)
 \* [](#)
 \* [](#)
 \* [](#)
 \* [](#)
 \* [](#)
 \* [](#)
 \* [](#)
 \* [](#)
 \* [](#)
 \* [](#)
 \* [](#)
 \* [](#)
 \* [](#)

\*\*A: Data prep and EDA\*\*

1. Create a python/Jupyter env.(Python Packages imports) to start the Auto-Categorization modelling task.(Input data: AHD\_Data\_Feb2023\_v2)
 + create a small sample by filtering data on top 8 categories of `category` feature 
2. Do EDA on the data (freq/counts of categories, word distribution etc.)
 + Basic EDA 
 + Extracting features (both relevant & non-relevant) from `Description` column using python and regex. Save them as separate new features (new features: `request`, `ip\_address`, `logging\_source`, `contact\_name`,`unit`,`email`)
 + Apply functional programming for better reproducibility (Added bar plots of parsed features)---------> see the attached html file for the descriptive stats/ EDA plots (Auto\_Categorization\_AHD\_RequestTickets-main\_ver1.7\_html)
3. Text pre-processing /cleaning/ tokenization/visualisation etc. (Description column in the data set)
 + Text cleaning function which removes non-important text tile punctuation, stopwords, etc.
 + EDA- Univariate & Bivariate analysis using descriptive statistics and visualizations such as bar plots, word cloud etc. on `Description` and `requests\_cleaned\_joined` variable
4. Embedding (i.e. Vectorization) such as TFIDF/word2vec etc.
5. Any other feature creation 

\*\*B: NLP modelling (Iterative experimentation)- Keep note of model performance improvement for each model:\*\*

6. Initially start with classical ML models like Random Forest/ XGBOOST etc.----> Will form the baseline model on which to improve upon
7. Then proceed to advanced NLP DL seq-to-seq frameworks such as LSTM using Tensorflow etc.
8. Also try to experiment with SOTA transformers model to see if we can further improve the performance (It will require additional steps ;like embedding etc. to conform to the transformers model like GPT/BERT etc.
9. Continuously tracking performance metrics (Accurayc/Precision/Recall) / model perf. comparison/ visualization like heatmap etc.

\*\*C: Improvement/enhancement/automation\*\*

10. Data Augmentation/ Tackling class(category) imbalance to see if further model perf. Improvement can be squeezed.
11. Functionalize the code / Parallelize if possible 
12. To engage a conversation bot too to shape the content and arrive at the right category ----> ??
AHD 요청 티켓 자동 분류=========================================== NLP 텍스트 다중 클래스 분류-------------------------------------    #### 니샨트 우파드야이 박사#### 푸네#### 05/03/2023\*\*목차\*\*\* [제안된 NLP 워크플로](#1) \* [데이터 가져오기, 필터링 및 데이터 구문 분석: 섹션 A\_1 & 2](#2) \* [데이터 가져오기/샘플링](#3) \* [결합된 EDA 플롯 및 특징 추출 기능 & `필터링된\_df\_top3cat`에서 실행하기](#4)  \* [EDA 플롯과 특징 추출의 클래스 오브젝트 & `필터링된\_df\_top3cat`에서 실행](#5)   \* [토큰화, 클리닝 및 단변량/이변량 EDA](#6) \* [20개의 레코드가 있는 샘플 데이터 세트에서 테스트](#7) \* [텍스트 전처리/클리닝 기능](#8) \* [정리된 데이터를 데이터 프레임에 다시 추가](#9) \* [EDA- `Description` 변수에 대한 단변량/이변량 분석](#10) \* [EDA 분석 기능](#11) \* [EDA- `요청\_정제\_합산` 변수에 대한 단변량/이변량 분석](#12) \* [](#) \* [](#) \* [](#) \* [](#) \* [](#) \* [](#) \* [](#) \* [](#) \* [](#) \* [](#) \* [](#) \* [](#) \* [](#) \* [](#) \* [](#) \* [](#) \* [](#) \* [](#) \* [](#)\*\*A: 데이터 준비 및 EDA\*\*1. 자동 분류 모델링 작업을 시작하기 위해 파이썬/주피터 환경(파이썬 패키지 가져오기)을 생성합니다.(입력 데이터: AHD\_Data\_Feb2023\_v2). + '카테고리' 기능의 상위 8개 카테고리에 대한 데이터를 필터링하여 작은 샘플을 생성합니다. 2. 데이터에 대한 EDA 수행 (카테고리의 빈도/개수, 단어 분포 등) + 기본 EDA  + 파이썬과 정규식을 사용하여 '설명' 열에서 특징(관련성 및 비관련성 모두)을 추출합니다. 별도의 새 기능으로 저장합니다(새 기능: 요청`, `IP\_주소`, `로깅\_source`, `연락처\_이름`, `유닛`, `이메일`) + 재현성 향상을 위한 함수형 프로그래밍 적용 (구문 분석된 기능의 막대 그래프 추가)---------> 설명 통계/ EDA 그래프는 첨부된 html 파일 참조 (Auto\_Categorization\_AHD\_RequestTickets-main\_ver1.7\_html)3. 텍스트 전처리/클리닝/토큰화/시각화 등(데이터 세트의 설명 열) 3. + 중요하지 않은 텍스트 타일 구두점, 중지어 등을 제거하는 텍스트 클리닝 기능. + 설명` 및 `요청\_정제\_조인` 변수에 대한 기술통계 및 막대그래프, 워드 클라우드 등의 시각화를 이용한 단변량 및 이변량 분석 기능4. 임베딩 (즉, 벡터화) (예: TFIDF/word2vec 등)5. 기타 기능 생성 \*\*B: NLP 모델링(반복 실험)- 각 모델에 대한 모델 성능 개선 사항 기록하기:\*\*6. 처음에는 Random Forest / XGBOOST 등과 같은 고전적인 ML 모델로 시작하십시오 .----> 개선 할 기준 모델을 형성합니다.7. 그런 다음 텐서플로우 등을 사용하여 LSTM과 같은 고급 NLP DL 시퀀스-투-시퀀스 프레임워크로 진행합니다.8. 또한 SOTA 트랜스포머 모델을 실험하여 성능을 더 향상시킬 수 있는지 확인합니다 (GPT/BERT 등과 같은 트랜스포머 모델을 준수하기 위해 임베딩 등과 같은 추가 단계가 필요합니다).9. 성능 지표(정확도/정확도/리콜)/모델 성능 비교/히트맵 등의 시각화를 지속적으로 추적합니다.\*\*C: 개선/향상/자동화\*\*10. 데이터 보강/ 클래스(카테고리) 불균형 해결을 통해 모델 완성도를 더 높일 수 있는지 확인합니다. 개선이 가능한지 확인합니다.11. 코드 함수화/ 가능하면 병렬화하기 12. 대화 봇도 참여시켜 콘텐츠를 구체화하고 올바른 카테고리에 도달하기 ----> ??