자연어 처리

[자연어 처리] 시스템 구현 단계, 언어 모델, 신경망

주니코니 2023. 7. 25. 10:59

자연어 처리로 시스템 구현할 때 밟는 단계는 우선 다음과 같다.

 

[데이터 수집]

-DB 사용

-웹 사이트 크롤링

*웹 크롤링 도구 : 파이썬 라이브러리 selenium, BeautifulSoup

-텍스트 증식 고려(권장하지 않음)

-위키피디아, 북스코퍼스 등의 데이터 활용  

 

[데이터 전처리]

-토큰화, 정제, 불용어 처리, 인코딩, 패딩 등


다음 단계인 언어 모델 생성 단계를 조금 자세히 살펴보자면 

 

[언어 모델 생성]

-알고리즘 선택(머신러닝, 딥러닝, 데이터 마이닝 사용)

-크게 두가지:

1.머신러닝 및 딥러닝 : '학습', 신경망 (기반) 모델

2.데이터 마이닝 : '통계' 기반 초창기 때 모델로 단어의 (배열) 순서에 대해 확률 부여

ex1) 나는 자연어 처리를 공부한다 (얘를 추천함)/ 나는 자연어 처리를 먹는다  : 조건부 확률 

-> 번역기에 사용

(but 단점 유사어 감지가  어렵다. 예를 들어 '메뉴' != '메뉴판' 으로 인지)

 

ex2)

n-gram : 문서(문장,문단) 간 유사도 측정 방법 

'오늘 점심 추천 메뉴 : 소고기 볶음밥, 햄볶음밥'

⭐유니그램(n=1) : 오늘, 점심, 추천, 메뉴, 소고기 볶음밥, 햄볶음밥

⭐바이그램(n=2) : 오늘 점심, 점심 추천, 추천 메뉴, 메뉴 소고기 볶음밥, 소고기 볶음밥 햄볶음밥

+trigram(n=3)

 

정리

1.언어모델이란 예를 들어 

'나는 오늘 강의실에서 자연어처리를 ____.' > 단어의 배열을 파악해 빈칸에 들어갈 적절한 말을 완성시켜주는 것


+참고로 

 

[자연어 처리 안에서의 한국어에 대하여]

"한국어는 단어의 순서가 큰 의미가 없다 > 신경망(RNN) 기반 생성 시 어렵다"

*RNN : 시계열 기반 (깊은) 신경망 

*LinearRegression(예측, 회귀), h(x) = wx+b
=> LogisticRegression(이진분류:sigmoid) -> sigmoid(h(x)) = 1 / (1+e^(-h(X)))
=> SOFTMAX : 이진분류가 여러 개 있으면 다중분류임, 이진분류가 여러개 있는 것 중에서 가장 값이 높은 것을 골라서 분류
=> 소프트맥스를 하나의 뉴런으로 생각하고 그거를 연결 지어서 만든 것이 앝은 신경망 : NN => 입력과 출력 계충만 존재
깊은 신경망 : DNN, CNN(콤물루셔널), RNN(시간의 흐름) => 입력 / 출력 / 히든(적어도 1개 이상) 계층 존재 == DNN

 

*얕은 신경망 (NN) : 입출력 계층만 존재, hidden layer 없음 > 성능이 떨어짐

*깊은 신경망 (RNN, DNN, CNN  등) : hideen layer 적어도 1개 있음