토큰화
문장 토큰화와 단어토큰화
단어 토큰화에서 한글을 반드시 품사를 고려한 토큰화가 이루어져야한다
특수문자.. 무조건 지우는건 아니다. 데이터를 보고 결정하는것
띄어쓰기는 연어의 문제.
품사 부착
한국은행에서는 5개의 품사만 부착하고 나머지는 안썼음
개체 유형 (자료형) - 텍스트 안에서 타입이라고 생각하면 된다. 개체명 인식
원형 복원 매우 중요
각 특징에 대한 이해도 필요
각토큰 원형 복원해서 토큰을 표준화, 연산을 줄인다.
1.(스테밍)어간 추출 - '품사를 무시하고' 규칙에 기반해서 어간 추출
가독성 딸림
2.(레마타이제이션) 표제어 추출 -품사정보를 유지하여 표제어 추출 (사전에 기반)
사전에 없으면 할수 없음. 품질은 좋지만 사전에 없으면 할수없어서 ... 어간추출과 상호보완
불용어
불필요한 토큰 제거하는 작업
단어의 표현이 필요 - 숫자화 벡터화 필요하다
1.가장 간단한 방법 - 원 핫 인코딩
차원크기의 문제. 너무 차원이 커진다.
의미를 담지 못하는 문제 - 유사도로 판단 해볼수 있다. 유사도로 그룹 그룹 ,,
코사인 유사도를 적용해보면 0이여서 어떤 의미도 담지 못한다.
유사도 계산
1.유클리디언 거리
벡터간 점과 점사이
2.자카드 유사도 텍스트랭크
겹치는 토큰 전체토큰 비율로 계산해서 문장의 유사도 판단의 기준으로 삼을 수 있다.
3. 코사인 유사도 (가장 많이 사용한다)
워딩 임베딩
자연어 처리에서 보편적으로 이 코사인 유사도를 사용한다.
1에가까울수록 유사함 -1에 가까울수록 유사도가 낮다
n- gram
단어 하나씩 토큰화를 한다음 단어 연속된 뭉치를 토큰화 한다.
엔이 높을수록 모델성능이 높아지지만 너무 높으면 유니크해져서 등장 수가 낮아진다.
유니 바이 트라이 5를 넘지 않도록 권장한다.
-분야에 따른 코퍼스 수집
분야(도메인) 에 따른 코퍼스의 수집이 필요하다.
언어모델에서 분야에 적합한 코퍼스가 중요하지만 또 이게 단점이 될 수 있다.
-원핫 인코딩의 한계점
벡터의 차원이 너무 커져서 모델 학습이 불리함
의미 분석이 어려워 분석이 어렵다.
단어 임베딩 - 밀집 벡터로 표현
차원 축소 - 거리를 통한 유사도 판단 가능
-밀집 벡터 만드는 방법
분포가설을 통해 만든다. 같은 문맥에서 등장하는 단어는 유사한 의미를 갖는다.
같은 등장하면 그룹화
-LSA (잠재 의미 분석)
단어 표현의 방법 이기도 하면서 토픽 모델의 방법 이기도 하다.
동일한 의미를 공유하는 단어들은 같은 텍스트에서 발생한다고 가정하는 벡터기반 방법
(BoW에 기반한 TDM 내에 잠재된 의미를 이끌어 내는 방법이다.)
-bow
단어의 순서를 고려하지 않다. 스팔스 하다.(벡터공간 낭비)
빈도수가 중요도와 비례하지 않는다.
이걸 행렬화한게 TDM DTM
-TDM
단어의 순서를 고려 안함
빈도수가 중요도를 의미하지 않는다
해결방법 으로 나온게 TF-IDF
TF 가 TDM
이게 높게 나온건 무슨 의미인가???
단어빈도가 높고 (TF) IDF가 높고(DF 낮고) 즉 다른문서에는 많이 등장하지 않은 ...
핵심 키워드로 특정 문서에 많이 나타다고 다른 문서에 많이 나타나지 않은 걸 의미한다.
로그가 기본적으로 가지고있는 성질 로그1이 0이기 때문에
단어가 전체에 나오면 0이되어서 중요하지않은 단어로 바로 판별이 될거고
두번째 이유는 같이 한 단위가 증가 했을때 빈도수 차이는 1인데 변화율 차이는 줄어든걸 볼수 있다.
직접 코드로 구현할수있어야 한다.
-핵심 키워드 추출 (분석모델로 넘어가자)
중요한 단어를 자동을 추출하는 방법 (어떻게 할건가?)
1.TF_IDF
2.TextRank 그래프에 기반해서 (각 vertex)중요도를 계산하여 판단
(구글 페이지 랭크 알고리즘에서 나왔다. 많이 모일수록 가중치가 더해진다.)
중요한 vertex 기준이 얼마나 다른 vertex가 추천하는가
텍스트랭크 수식 의미 알아놓자.
로컬 컨텍스트(윈도우로 하기 때문)와 전체 컨텍스트(전체 문장의 그래프) 고려해서 성능이 좋다.
구조적 접근이여서 언어에 상관없다. (도메인 별 코퍼스 corpors 필요없다. 도메인 장르 언어)
-문서요약
중요한 문장을 추출 -
1. 룬 서머라이져 (정보검색의 아버지 )
단어중요도는 사용빈도로 측정( 완전비례는 아니다 중요단어 그래프 참조)
그래프에서 특정 구간에 속해있을때 중요하다고 볼수 있다.
문장 중요도
각 단어 토큰하고 윈도우내 포함된 단어 갯수
2.textrank 활용해서 문서요약
기본틀은 비슷한데 그래프를 만든 방법이 조금 다르다.
문장간의 모든 유사도를 계산하고 엣지를 계산한다.
유사도가 있는 문장끼리 엣지로 연결
--키워드 추출과 문서요약의 차이점 숙지
문서분류
문서를 사전에
1.나이브 베이즈 분류 (베이즈 모델)
사후확률과 우도로 계산
2.서포트 벡터 머신
구분짓는 서포트 벡터머신을 찾아낸다. 분류를 잘하는 많은 SVM 을 찾아내야하는 단점
3.딥러닝 CNN RNN 간단하게 시퀀스
베이즈 클래스파이어
1.이그젝트 베이즈 / 2.나이브 베이즈
1은 확률을 계산할수 없는 경우 못 쓴다.
2.는 그걸 편의성
2 피쳐들간의 독립을 가정함으로서 계산과정을 단순화 시켰다.
2장점 번주형 변수 처리가능 단순하고 효율적 데이터만 많으면 좋은 분류 성능
단점은 많은 데이터 필요
값이 0일 때 라플라스 스무딩 필요
라플라스 스무딩 .. 하나라도 빈도가 0인 단어가 있다 할 경우 0이 되는것을 막으려고 한다.
상수값... (분자 분모에 일정값을 더해준다)
확률값이 너무 많이 작아진다. 언더플로우 문제
로그를 적용한다. 곱을 덧셈으로 표현해서 확률의 곱을 덧셈으로 표현하고 마지막에 익스퍼덴셜을 취하므로 확률값을 계산해낸다.
두가지를 보면 좋을것 같다.
감정분석
문서 단락 문장 내에서 극성을 감지한다.
사용자의 생각 감정을 블로그나 리뷰같은 비정형 데이터로 나타내는것을 반영할수있다.
1감정 감지
다양한 감정을 감지.
2특정기반 감정분석
특성에 대해서 감정을 분석하게 된다. ( 가격대가 높다.)
사전기반 감정분석 이미정의된 사전을 기반으로 분석
사전의 질이 성능을 좌우한다.
어려운이유 : 문맥에 따른 감정분석이 어려움
해결방안 : 1. ngram 2.sequence 딥러닝
범용적 사전적용이 어려움
한글은 감정사전이 매우 부족
나이브 베이즈 분류기; 활용 감정 분석
결국에 감정분석도 분류 문제 중 하나다.
실습
1.TDM 코드로 구현
2.TF-IDF 코드로 구현
3.유사도 코드로 구현
'개발자_SHINBAK > 인공지능 김신박' 카테고리의 다른 글
맥 ffmpeg 설치 (homebrew 이용) (0) | 2020.12.28 |
---|---|
맥북 프로나 리눅스에서 아나콘다 환경실행 하기 (0) | 2020.12.28 |
mac os conda activate 커맨드 오류 해결 방법 (0) | 2020.11.23 |
NLP 캐글 경진대회 (0) | 2020.08.06 |
논문검색 사이트 RISS (0) | 2020.07.29 |
problem solver 개발자, 맛있는 음식이 행복한 남자
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!