sparsity: 영단어는 무수히 많은데 비해 사용하는 단어 갯수는 적어서 처리를 하면 [1, 1, 1, 0, 0, ... 0, 0] 리스트 겁나 커짐 머신러닝 돌리기 힘듦
frequent words has more power : 자주 나오는 단어가 더 큰 힘을 가짐
ignore word orders : 문장의 순서를 무시함
보지못한 단어는 처리 못함 : 오타, 줄인말.
딥러닝 자연어 처리
각 단어 별로 문서의 연관성을 알고 싶을 때
단어의 문서 연관성 : 단어 별로 문서의 정보를 얼마나 가지고 있을까
term frequency
어떤 문제가 주어졌을 때 이 단어가 몇 번 출현했는지
가설 전제: 문서가 있을 때 단어가 여러 번 출현하면 그 단어는 문서와 연관성이 높다.
문제
조사(ex, a, the)는 연관성이 없음에도 자주 등장하지만 tf score는 연관성이 높다고 판단
log ( total # of Docs / # of Docs with the term in it)
총 문장의 개수 / 단어가 출현한 문장의 개수로 나눠 줌.
가끔 0으로 나누는 것을 방지하기 위해 분모에 +1을 하기도 함(smoothing)
어느 문장에서나 자주 나오는 단어
자연어 이해(NLU, Natural Language Understanding)
분류(Classification) : 뉴스 기사 분류, 감성 분석(Positive/Negative)
Ex) "This movie is awesome!" -> Positive or Negative?
자연어 추론(NLI, Natural Langauge Inference)
Ex) 전제 : "A는 B에게 암살당했다", 가설 : "A는 죽었다" -> True or False?
기계 독해(MRC, Machine Reading Comprehension), 질의 응답(QA, Question&Answering)
Ex) 비문학 문제 풀기
품사 태깅(POS tagging), 개체명 인식(Named Entity Recognition) 등
Ex) POS Tagging :POS Tagging을 알아보자!
Ex) NER : NER을 알아보자!
자연어 생성(NLG, Natural Language Generation)
텍스트 생성 (특정 도메인의 텍스트 생성)
Ex) 뉴스 기사 생성하기, 가사 생성하기
NLU & NLG
기계 번역(Machine Translation)
요약(Summerization)
추출 요약(Extractive summerization) : 문서 내에서 해당 문서를 가장 잘 요약하는 부분을 찾아내는 Task => (NLU에 가까움)
생성 요약(Absractive summerization) : 해당 문서를 요약하는 요약문을 생성 => (NLG에 가까움)
챗봇(Chatbot)
특정 태스크를 처리하기 위한 챗봇(Task Oriented Dialog, TOD)
Ex) 식당 예약을 위한 챗봇, 상담 응대를 위한 챗봇
정해지지 않은 주제를 다루는 일반대화 챗봇(Open Domain Dialog, ODD)
기타
TTS(Text to Speech) : 텍스트를 음성으로 읽기 (Ex) 유튜브 슈퍼챗)
STT(Speech to Text) : 음성을 텍스트로 쓰기 (Ex) 컨퍼런스, 강연 등에서 청각 장애인을 위한 실시간 자막 서비스 제공)
Image Captioning : 이미지를 설명하는 문장 생성
어간 추출과 표제어 추출에서 한국어도 지원 되나요
한국어가 좀 더 까다로워용 형태소 단위로 해야됨
라이브러리의 문제. spacy는 한국어 지원xx konlpy 한국어 지원
전처리 진행 순서
정해져있는 건 없지만
내장 메서드를 사용한 전처리 (lower, replace, ...)
정규 표현식(Regular expression, Regex)
통계적 트리밍(Trimming)
어간 추출(Stemming) 혹은 표제어 추출(Lemmatization)
불용어(Stop words) 처리
표제어같은 건 연산처리가 많아질 것 같아서 느릴 것 같은데 빠르게 연산처리를 할 수 있나요?
표제어 추출/ 어간 추출
a. 표제어 -> wolf/ wolves 구분 가능, 성능 ㄱㅊ
b. 근데 의외로 어간 추출도 성능 그렇게 안나쁨
c. 타임 어택 있을 땐 어간 추출 유용함.
통계적 트리밍 과정 중에 해당문제를 대표하는 단어들이 삭제될 가능성도 있을까요?
가능성 있다. 분석하는 사람의 도메인 아주 중요
표제어 추출된 뒤에는 시점이 모두 현재가 되는건가요?
a. 기본형
countvectorizer()와 TfidfVectorizer()의 차이는 int와 float으로 출력되는 차이 뿐인가여?
a. count -> Bag of words
b. TF-idf -> 빈도수 * 패널티
자연어처리에는 정규표현식 필수?
필수는 아닌데 있으면 유용~ 식이 마이 짧아. 편함..
오후 QnA
벡터화
자연어를 컴퓨터가 이해 할 수 있게 바꿔주는 것.
불용어
a. 많이 쓰이지만 의미가 없는 단어
b. is, the, a, it's
왜 전처리를 하는가?
a. 차원의 저주를 피하기 위해서
b. 성능 향상을 위해서
c. 차원의 저주?
feature가 커지면 instance 많이 요구, 모델이 복잡해지면 과적합 될 수 있음
DTM
문서-단어 행렬 row에는 문서, column에는 단어로 나타낸 행렬
a. dtm만들기 위한 방법: Bag of Words, TF -IDF
Bag-of-Words
a. 단어의 빈도만 고려
b. 문법, 순서 무시
TF-IDF
a. iDF: 패널티 부여
b. 모든 문서에 등장하는 단어: 문서 구별에 도움x 패널티 부가
c. 어떤 문서에서만 등장: 가중치 부여 ex) 급식표의 랍스터
어간 추출
a. 어간만을 남겨서 원형을 보존할 수 있도록 추출하는 것
b. ing, es, s, ed 삭제
표제어 추출
a. 사전에 등재되어 있는 기본형을 추출
b. 정확도는 높지만, 시간이 오래 걸림
corpus(말뭉치)
a. 텍스트 데이터
b. 특정한 목적을 가지고 수집
문서
a. 문장들의 집합
문장
a. 단어들의 집합
b. 토큰으로 구성된 문자열
토큰화
a. 토큰 단위로 나누는 것
b. 토큰: 의미를 가진 가장 작은 단위 (영어: 단어, 한국어: 형태소)
Vocab(단어 집합)
a. 중복되지 않은 토큰들
b. (1, apple), (2,cat)