본문 바로가기
프로그래밍/프로젝트

머신러닝(자동화 챗봇 제작) 데이터 전처리 작업 진행

by 숙님 2025. 1. 22.
728x90

챗봇 데이터를 가공할 때

각 카테고리별로 20글자를 넘겨서는 안 된다는 제한사항이 있다

그래서 코드로 삭제할만한 단어를 삭제를 하는 코드를 만들었다

제한 사항

 

[방식]

  1. 우선 글자수 제한 초과하는 단어에 별도 표시하는 코드 작성
  2. 넘는 글자수만 별도 필터해서 확인하기
  3. 삭제해도 괜찮은 단어는 아래 코드로 삭제하기
function highlightLongText() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('카테고리 분류'); // 시트 이름
  var range = sheet.getDataRange(); // 전체 데이터 범위 가져오기
  var values = range.getValues(); // 시트 데이터 가져오기

  // 색상 정의 (연두색 및 기본 흰색)
  var highlightColor = "#CCFF99"; 
  var defaultColor = "#FFFFFF"; 

  // 기존 범위 크기와 동일한 2차원 색상 배열 생성
  var bgColors = range.getBackgrounds();

  // A~E열(1~5열)에 대해 20자 이상이면 연두색, 아니면 흰색
  for (var row = 1; row < values.length; row++) {
    for (var col = 0; col < 5; col++) {
      var cellValue = values[row][col] ? values[row][col].toString().trim() : "";
      bgColors[row][col] = (cellValue.length >= 20) ? highlightColor : defaultColor;
    }
  }

  // 한 번에 색상 업데이트 (속도 향상)
  range.setBackgrounds(bgColors);

  SpreadsheetApp.flush(); // 변경 사항 즉시 적용
}

 

위 1번에 해당하는 코드 

 

function cleanDColumnWithBlacklist() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var lastRow = sheet.getLastRow();
  
  // D열 값 가져오기 (2행부터 마지막 행까지)
  var dValues = sheet.getRange("D2:D" + lastRow).getValues();
  
  // 제거할 단어 목록 (대소문자 구분 없이 처리)
  var blacklist = ['블랙', '화이트'] ;

  for (var i = 0; i < dValues.length; i++) {
    var dText = dValues[i][0] ? String(dValues[i][0]).trim() : "";  // 문자열 변환 후 공백 제거

    if (dText) {
      // 1. 괄호 및 괄호 안의 내용 제거
      var newDText = dText.replace(/\(.*?\)/g, "").trim();
      
      // 2. 특정 단어 제거 (부분적으로 포함된 경우도 삭제)
      blacklist.forEach(function(word) {
        var regex = new RegExp(word, "gi");  // 대소문자 무시
        newDText = newDText.replace(regex, "").trim();  // 단어 제거
      });

      // 3. 여러 개의 공백을 하나로 줄이기
      newDText = newDText.replace(/\s+/g, " ").trim();

      // 수정된 값 업데이트
      sheet.getRange(i + 2, 4).setValue(newDText);
    }
  }
  
  Browser.msgBox('D열에서 블랙리스트 단어 제거 완료!');
}

위 3번 작업에 해당하는 코드이다 

(실제로는 제거할 코드 목록이 엄청 많다)

 

코딩을 활용하여 빠르게 오늘 카테고리 분류 완료했다

총 14,457개 진행 완료하였다

댓글