초봉5센티미터

TIL 37. 딥러닝 - 자연어처리 (NLP) 2 본문

교육/멋쟁이사자처럼 AI School 7기

TIL 37. 딥러닝 - 자연어처리 (NLP) 2

삶은돼지고기 2022. 12. 13. 22:52
728x90

OW : Bag of words

  • 단어들의 순서는 전혀 고려하지 않고, 단어들의 출현 빈도에만 집중하는 텍스트 데이터의 수치화 표현 방법

n-gram 언어 모델

  • 모든 단어를 고려하는 것이 아니라 일부 단어만 고려하는 접근 방법 사용
  • n-gram에서의 n의 의미 : 단어의 수

문서 단어 행렬 DTM

  • Document-Term Matrix
  • 다수의 문서에서 등장하는 각 단어들의 빈도를 행렬로 표현한 것
  • 각 문서에 대한 BOW를 하나의 행렬로 만든 것

 

TF-IDF 

  • 단어 빈도(TF)와 문서 빈도의 역수(IDF)를 곱한 값

단어 카운트 가중치

  • CountVectorizer는 각 단어가 문서에서 몇 번 출현했는지를 기반으로 문서를 벡터화하는 방법이다.
  • 그러나 CountVectorizer를 통해 자연어를 벡터화하는 경우 의미 없이 자주 사용되는 단어의 가중치가 증가한다는 한계점이 있었다.

 

정규표현식으로 문자열 변환

  •  원하는 문자열 치환하기*
  • : re.sub()*
  • 파이썬의 정규표현식 모듈
  • 주어진 문자열(찾을 패턴)에서 일치하는 모든 패턴을 (변경할 내용으로)바꾼다.
  • 두번째 인자는 특정 문자열이거나 함수가 될 수도 있다.

| 정규표현식 | 의미 |

| --- | --- |

| . | 줄바꿈 문자를 제외한 1글자 |

| ^ | 문자열의 시작 또는 not |

| $ | 문자열의 끝 |

| | | or |

| * | 0회 이상 반복 |

| + | 1회 이상 반복 |

| ? | 0회 또는 1회 반복 |

| [] | 문자열의 집합

ex )

[abc] = a or b or c

[a-z] = a ~ z

[^a] = a를 제외한 모든 알파벳 |

| () | 어떤 정규식을 하나의 그룹으로 묶음 |

| {n} | 앞의 문자가 n회 반복 |

| {m,n} | 앞의 문자가 m회 이상 n회 반복 |

| {m,} | 앞의 문자가 m회 이상 반복 |

| \w | (unicode) 숫자, _를 포함하는 모든 문자 |

| \W | (unicode) 숫자, _를 제외한 나머지 문자 |

| \d | (unicode) 숫자 |

| \D | (unicode) 숫자를 제외 |

| \b |

(unicode) 단어의 시작과 끝에 존재하는 공백

|

| \B | (unicode) 단어의 시작과 끝 외에 존재하는 공백 |

 

scikit-learn의 feature extraction

DictVectorizer

  • 각 단어의 수를 세어놓은 사전에서 BOW 인코딩 벡터를 생성
  • 문서에서 단어 빈도를 나타내는 딕셔너리 정보를 입력받아 BOW 인코딩한 수치 벡터로 변환 !

CountVectorizer

  • 단어 토큰을 생성하고 단어의 수를 세어 BOW 벡터 생성
  • stop_words : 불용어 지정
  • token_pattern : 토큰 정의용 정규 표현식
  • ngram_range : n-gram 범위
  • analyzer : 단어 n-gram, 문자 n-gram, 단어 내의 문자 n-gram
  • ‘word’, ‘char’, ‘char_wb’ 혹은 함수
  • max_df, min_df : 단어장에 포함되기 위한 최대 / 최소 빈도
  • min_df : 오타, 희귀 단어 제거
  • max_df : 불용어 제거

-> 텍스트 데이터를 사용할 때 가장 간단하게 시간을 줄일 수 있는 방법은 max_features를 작게 조정하는 것이다

Comments