강의자료/머신러닝

[딥러닝파이썬]문자열의 유사성 판단하기

파아란기쁨 2022. 3. 28. 11:42
목표
  • 문자열을 처리하는 방법에 대해 이해를 하자.
  • 유사한 데이터를 찾아내는 방법에 대해 이해를 하자.

 

 

컴퓨터는 모든 데이터를 숫자로 이해 합니다.

  • 문자를 숫자로 변경
  • 숫자의 유사성 판단 ( 숫자를 벡터화 하여 두 점의 거리를 판단 )

 

문자열을 벡터로 만드는 원핫인코딩

- 하나의 단어를 벡터의 인덱스로 인식하여 단어가 존재하면 1 없으면 0 으로 테이블 생성

위와 같이 setosa는 0번 인덱스에 1, 나머지 인덱스는 0 과 같이 숫자로 데이터를 마킹 합니다.

Bag of Words(BoW) - 단어의 순서는 무시하고 단어의 출현빈도에 집중하는 텍스트 데이터의 수치화 표현 방법

따라서 문자열을 원핫인코딩 후 해당 단어의 인덱스 위치에 단어의 개수를 세어 주면 된다.

예) "철수는 영화를 보는 것을 좋아한다. 영희는 영화도 좋아한다."를 BoW를 만들어 보겠습니다.

- colap 에서 konlpy 를 인스톨 합니다.

- BoW를 만드는 코드(https://wikidocs.net/22650 ) 참고

철수: 1, 는:2, 영화:2, 를:1, 보는:1,것:1,을:1,좋아한다:2,영희:1,도:1 과 같이 출력되는 것을 확인 할 수 있습니다.

그렇다면 유사성은?

그렇다면 문서의 유사성은 어떻게 가까운지를 판단 할 수 있을까요?

1. 유클리드 거리 : 두 점 사이의 직선 거리

2. 코사인 유사도 : 두 점 사이의 각도(https://wondangcom.tistory.com/2137

cosθ = (2<a,b>) / (2 * ||a||2 * ||b||2) = <a,b>/(||a||2 * ||b||2)
<a,b> = ||a||*||b||*cosθ​
단,||a|| 는 a의 유클리드 거리를 의미합니다.

3. 맨하탄 거리

※ 문자열의 유사도는 코사인유사도가 좀 더 많이 사용됩니다.

예를 들어 사랑,배신 이라는 단어만 나오는 문서를 생각해 봅니다.

1번 문서에서는 사랑: 5, 배신 : 0

2번 문서에서는 사랑: 5, 배신 : 1

3번 문서에서는 사랑: 3, 배신: 0

이렇게 나왔다면 (5,0),(5,1),(3.0) 이므로 그래프는 다음과 같이 그려 집니다.

이때 코사인유사도는 1번과 3번이 가깝게 나오고, 유클리드거리나 맨하탄 거리는 1번과 2번이 가깝게 나오게 됩니다.

이때 문서에서 사랑 이야기만 가득한 문서는 대체로 1번과 3번 문서가 될것 입니다. 따라서 문서의 유사도를 찾을때는 코사인 유사도를 좀더 많이 사용합니다.

 

KoNLPy 의 사용법

위에서 실습한 문자열 분석기 KoNLPy의 사용법을 알아 보겠습니다.

출처:&nbsp;https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&amp;blogId=myincizor&amp;logNo=221629109172

morphs는 문장을 형태소 단위로 나누어 줍니다.

출처:&nbsp;https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&amp;blogId=myincizor&amp;logNo=221629109172

nouns는 명사만 추출합니다.

pos는 형태소의 종류 까지 추출 합니다.

 

morphs는 문장을 형태소 단위로 나누어 줍니다.

nouns는 명사만 추출합니다.

pos는 형태소의 종류 까지 추출 합니다.

 

KoNLPy 는 Hannanum(한나눔:KAIST),Kkma(꼬꼬마:서울대학교 연구실개발),Komoran(코모란:Shineware),Okt(Open Korean Text: 오픈 소스 한국어 분석기)를 이용해서 파이썬에서 쉽게 사용할 수 있도록  라이브러리를 제공해 주고 있으며 사용법은 다음과 같습니다.

출처 :&nbsp;https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&amp;blogId=myincizor&amp;logNo=221629109172

morphs,nouns,pos 등은 공통적으로 지원하고 있으며 분석기에 따라 다른 기능을 제공해 주고 있습니다.

 

[참고]

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=myincizor&logNo=221629109172

 

KoNLPy 간단 사용법

지난 시간에는 KoNLPy를 윈도우에 설치하는 방법을 알아보았습니다. 이번 시간에는 KoNLPy 사용법...

blog.naver.com

https://wikidocs.net/22650

 

2) Bag of Words(BoW)

단어의 등장 순서를 고려하지 않는 빈도수 기반의 단어 표현 방법인 Bag of Words에 대해서 학습합니다. ## 1. Bag of Words란? Bag of Wor ...

wikidocs.net

 

사업자 정보 표시
원당컴퓨터학원 | 기희경 | 인천 서구 당하동 1028-2 장원프라자 502호 | 사업자 등록번호 : 301-96-83080 | TEL : 032-565-5497 | Mail : icon001@naver.com | 사이버몰의 이용약관 바로가기