Bag of Words
문자를 숫자로 표현하는 방법 중 하나
great thank you 라고 대답할 때
가방 안에 이렇게 들어감
출현 빈도로 본다면 다음과 같음
수치로 표한함
첫 번째, 유사도
이 수치로 표현한 것은 문장의유사도를 구할 수 있음
How?
awesome 문장과 great 문장의 유사도는?
-> 각각의 인데스를 곱하고 다 더해줌 -> 2
=> 두 문장의 유사도는 2
great 문장과 not bad 유사도는?
-> 0
두 번째, 머신러닝 입력값
감성분석 예제의 문제
제한
문장이 백만개가 넘어감 -> 차원이 백만개가 넘어 -> 실제 문장하나를 표현할 때 무수히 많은 0이 있음-> 계산량이 높아짐 -> 메모리 사용량 높음
많이 출현한 단어는 힘이 세짐
단어의 순서를 철저히 무시함
-> 문장의 의미를 무시함
-> home run과 run home이 똑같은 벡터로 표현됨
새로운 단어를 표현할 수 없음
ex) 오타가 많음
----
n-그램
연속적으로 n개의 토큰으로 구성됨
단어, 캐릭터를 의미함
unigram
n이 1이면 유니그램이라고 함
bigram
n이 2일 때는 바이그램이라고 함
bigram
fine you는 토큰이 안 됨 -> 서로 붙있지 않기 대문임
trigram
트라이그램
trigram
3개의 캐릭터가 하나의 토큰이 됨
Why n-gram?
1. bag of words의 문제를 극복할 수 있음
단어의 순서가 철저히 무시됨
machine learning is fu and is not boring 문장
not이 어디에 속하는지 모름
순서가 무시됐기 때문임
binary 사용시는!?!?
not boring임을 확실하게 알 수 있음
문맥적인 것을 확실히 할 수 있음
2. next word prediction
input에 넣을 때 다음 단어를 예측할 수 있음
Navie 한 방법 사용
how are 다음에 어떤 것을 추천해야 하는가?
you가 2번 나옸으니까 you 추천!
qwal을 검색했다면?
qw가 없음
하지만 qu라고 3번 ua라고 2번 발생됨
qwql을 검색시 -> gu 가능성이 높
3. misspelling
오타를 발견해서 다른 단어 추천할 수 있음