카테고리 없음

12/14 형태소 분석기 와 시퀀스방식 인코딩

monawa 2022. 12. 15.
728x90

1104

목적 : KoNLPy 로 한국어 형태소분석기를 사용해 보는 것

대표적인 자연어처리 도구인 NLTK, Spacy 는 한국어를 지원하지 않습니다.

영어를 사용한다면 해당도구를 사용해도 됩니다. 하지만 한국어 형태소 분석 등의 기능을 제공하지 않기 때문에

KoNLPy로 실습합니다.


KoNLPy - 공식문서

다른 프로그래밍 언어(JAVA, C++)로 만들어진 형태소 분석기를 파이썬 인터페이스로 사용할 수 있는 도구 입니다.
JPype1도 파이썬에서 자바를 사용할 수 있도록 하는 도구입니다.
인터페이스가 파이썬이지만 내부는 해당 언어로 동작하여 다른 언어도 함께 설치되어 있어야 합니다.
그러므로 KoNLPy 는 설치가 까다롭습니다.
Java, C, C++로 작성된 도구를 파이썬으로 사용할 수 있도록 연결해 주는 도구이기 때문에 여러 환경 의존성이 있습니다. 이렇듯 환경 의존성을 만족해야 동작하는 도구가 있습니다.
  • Hannanum Class
  • Kkma Class
  • Komoran Class
  • Mecab Class
  • Okt Class
다음의 항목을 만족해야 konlpy를 윈도우나 맥에서 사용할 수 있습니다. 
대부분의 오류는 환경변수나 최신버전의 JDK가 설치되지 않아서 입니다. 
공식문서에서는 1.7 이상의 JDK 를 권장하고 있습니다.


1) 최신 버전의 JAVA(JDK)를 설치
2) JAVA_HOME 환경변수를 추가
3) path 환경변수에 %JAVA_HOME%\bin; 추가

설치와 관련된 사항은 https://konlpy.org/ko/latest/install/ 꼭 참고
단 Google Colab 에서는 아래 pip 구문 만으로 설치할 수 있으나 다른 운영체제 사용시 설치 문서를 참고해 주세요!

!pip install konlpy --upgrade

 


형태소란 ?

뜻을 가진 가장 작은 말의 단위 

자립 형태소 - 체언(명사 수사) 수식언(관형사 부사) 감탄사 

(접사 어미 조사와 상관없이 자립사용가능 - 그자체로 단어를 의미)

의존 형태소 - 접사 어미 조사 언간

( 다른 형태소와 결합하여 사용되는 형태소)

 

형태소 분석기마다 품사를 태깅하는 방법이 다 다릅니다

형태소 태깅목록

https://docs.google.com/spreadsheets/d/1OGAjUvalBuX-oZvZ_-9tEfYD2gQe7hTGsgUpiiBSXI8/edit#gid=0

품사 태깅표에서 명사에는 어떤 공통점이 있을까요?

 N이 들어가요

 

 동사에는 어떤 공통점이 있을까요?

 V

 

tqdm 어디에서 사용했었을까요?

웹 스크래핑

 

tqdm 의 사용목적은 무엇일까요?

오래 걸리는 작업을 할 때 진행상태를 표시해줍니다 => 이것또한 오래걸립니다


okt stem(원형으로 돌려주기)

okt.pos("배고프다", stem=True)
okt.pos("배고플까", stem=True)
okt.pos("배고프자", stem=True)
okt.pos("배고파라", stem=True)

모두 원형인 배고프다로 출력된다


어간 추출과 표제어 표기법의 차이점은

어간추출은 표제어 표기법
단어 형식을 의미가 있거나 무의미할 수 있는 (의사) 줄기로 축소 
=>눈으로 봤을 때는 서로 다른 단어들이지만,
하나의 단어로 일반화 시킬 수 있다면
하나의 단어로 일반화시켜 문서 내의 단어를 축소 
단어 형식을 언어학적으로 유효한 의미로축소
=> 단어의 식별 단일 항목으로 분석 할 수 있도록
단어의 어형 변화 형태를 그룹화
원형 보존 X 원형 보존 O 
creating ⇒ creat creating ⇒ create

어간 추출의 차별점 

  • 원형을 잃을 수 있으나 표제어 표기법은 원형을 보존할 수 있어서 모델 학습에 성능이 더 좋은 것
  • 단어 형식을 의미가 있거나 무의미할 수 있는 줄기로 축소하고, 표제어 표기법은 단어 형식을 언어학적으로 유효한 의미로 축소
  •  

형태소 분석기(Okt) 불러오기 

  •  ['Josa', 'Eomi', 'Punctuation'] 조사, 어미, 구두점 제거
  •  전체 텍스트에 적용해 주기 위해 함수를 만듭니다.
  1. 텍스트를 입력받습니다.
  2. 품사태깅을 합니다. [('문의', 'Noun'), ('하다', 'Verb'), ('?!', 'Punctuation')]
  3. 태깅 결과를 받아서 순회 합니다. 
  4. 하나씩 순회 했을 때 튜플 형태로 가져오게 됩니다. ('을', 'Josa') 
  5. 튜플에서 1번 인덱스에 있는 품사를 가져옵니다.
  6. 해당 품사가 조사, 어미, 구두점이면 제외하고 append 로 인덱스 0번 값만 다시 리스트에 담아줍니다.
  7. " ".join() 으로 공백문자로 연결해 주면 다시 문장이 됩니다.
  8. 전처리 후 완성된 문장을 반환합니다.
def okt_clean(text):
    clean_text = []
    # 품사태깅을 합니다. [('문의', 'Noun'), ('하다', 'Verb'), ('?!', 'Punctuation')]
    # 태깅 결과를 받아서 순회 합니다. 
    for word in okt.pos(text, norm=True, stem=True):
        # 해당 품사가 조사, 어미, 구두점이면 제외하고 append 로 인덱스 0번 값만 다시 리스트에 담아줍니다.
        if word[1] not in ['Josa', 'Eomi', 'Punctuation']:
            clean_text.append(word[0])
    # " ".join() 으로 공백문자로 연결해 주면 다시 문장이 됩니다.
    return " ".join(clean_text)

okt_clean("사람은 왜 공부를 계속 해야할까? 하기싫다 안하고싶다 안해야지")

 

형태소 분석기 만든것 원래데이터에 적용해주기

# 문자열 전처리를 정규화 한다고 표현하기도 합니다.
# 정규화를 해주게 되면 불필요하게 희소한 행렬이 생성되는것을 방지할 수 있으며,
# 같은 의미를 묶어줄 수 있습니다.
# 학습 속도가 너무느려지는 것을 방지할 수 있습니다.
# tqdm => progress_map()
train['title'] = train['title'].progress_map(okt_clean)
test['title'] = test['title'].progress_map(okt_clean)

전처리하기 

불용어 제거

# 불용어 제거함수 만들기
def remove_stopwords(text):
    tokens = text.split(' ')
    stops = [ '합니다', '하는', '할', '하고', '한다', 
             '그리고', '입니다', '그', '등', '이런', '및','제', '더']
    meaningful_words = [w for w in tokens if not w in stops]
    return ' '.join(meaningful_words)

불용어 제거 적용

train["title"] = train["title"].map(remove_stopwords)
test["title"] = test["title"].map(remove_stopwords)
train["title"]

TF-IDF 벡터화

  • 머신러닝이나 딥러닝 알고리즘은 문자를 이해할 수 없다. 내부에서는 수치 계산이 이루어지기 때문에 문자를 숫자로 변경해 주어야 한다
# TfidfVectorizer 로 벡터화 합니다.
# fit 으로 변환할 어휘를 학습합니다.
from sklearn.feature_extraction.text import TfidfVectorizer

tfidfvect = TfidfVectorizer()
tfidfvect.fit(X_train_text)
X_train = tfidfvect.transform(X_train_text)
X_test = tfidfvect.transform(X_test_text)

X_train.shape, X_test.shape

 transform => 주의해서 볼 것은 열(columns, 어휘)의 수가 같은지 확인해 주세요!


1105

목적 : 시퀀스 방식의 인코딩을 사용해 보겠습니다!

=> Bag of Words 와 TF-IDF 방식과 시퀀스 방식이 어떤 차이가 있는지 알아보겠습니다.

 

시퀀스 방식의 인코딩 연습

=> 시퀀스 방식(문자의 순서를 고려한 방식)은 시퀀스(순서)를 고려하는 알고리즘(RNN)에서 더 나은 성능을 보여줌

=> 머신러닝을 사용할 때는 오히려 TF-IDF가 더 나은 성능을 보이기도 함

 

 

문자열 전처리를 정규화 한다고 표현하기도 합니다. 정규화를 해주게 되면 불필요하게 희소한 행렬이 생성되는것을 방지할 수 있으며,

같은 의미를 묶어줄 수 있습니다. 학습 속도가 너무느려지는 것을 방지할 수 있습니다.

속도를 개선하고자 한다면 멀티스레드를 만들어서 처리하는 방법을 찾아봐도 좋습니다.

Tokenizer

이 클래스를 사용하면 각 텍스트를 일련의 정수(각 정수는 사전에 있는 토큰의 인덱스임) 또는 단어 수에 따라 각 토큰의 계수가 이진일 수 있는 벡터로 변환하여 텍스트 말뭉치를 벡터화할 수 있다(tf-idf 기반).

  • 데이터에 출현하는 모든 단어의 개수를 세고 빈도 수로 정렬
  • num_words에 지정된 만큼만 숫자로 반환하고, 나머지는 0으로 반환
  • 단어 사전의 크기를 지정해 주기 위해 vocab_size(텍스트 데이터의 전체 단어 집합의 크기) 지정

 

매개변수

num_words  단어 빈도에 따라 유지할 최대 단어 수입니다. 가장 일반적인 단어 만 유지됩니다.
filters  각 요소가 텍스트에서 필터링될 문자인 문자열입니다. 기본값은 문자를 제외한 모든 구두점과 탭 및 줄 바꿈 '입니다.
lower  부울. 텍스트를 소문자로 변환할지 여부입니다.
split  str. 단어 분할을 위한 구분 기호입니다.
char_level  True이면 모든 문자가 토큰으로 처리됩니다.
oov_token  주어진 경우, 그것은 word_index에 추가되고 text_to_sequence 호출 중에 어휘 밖의 단어를 대체하는 데 사용됩니다.

흐름

  • Tokenizer 인스턴스를 생성
  • fit_on_texts와 word_index를 사용하여 key value로 이루어진 딕셔너리를 생성
  • texts_to_sequences를 이용하여 text 문장을 숫자로 이루어진 리스트로 변경
  • 마지막으로 pad_sequences를 이용하여 리스트의 길이를 통일화
from tensorflow.keras.preprocessing.text import Tokenizer

vocab_size = 5
tokenizer= Tokenizer(num_words=vocab_size)

tokenizer.fit_on_texts(corpus)

단어와 숫자의 키-값 쌍을 포함하는 딕셔너리 반환
소문자 자동 변환, 느낌표|마침표 같은 구두점은 자동 제거
word_to_index = tokenizer.word_index

딕셔너리 아이템 확인
word_to_index.items()

딕셔너리 키 확인
word_to_index.keys()

딕셔너리 값 확인
word_to_index.values()

texts_to_sequences : 문장을 숫자로 이루어진 리스트로 변경
corpus_sequences = tokenizer.texts_to_sequences(corpus)

Tokenizer 는 데이터에 출현하는 모든 단어의 개수를 세고 빈도 수로 정렬해서 num_words 에 지정된 만큼만 숫자로 반환하고, 나머지는 0 으로 반환합니다.
단어 사전의 크기를 지정해 주기 위해 vocab_size를 지정합니다.
vocab_size는 텍스트 데이터의 전체 단어 집합의 크기입니다.

단어수를 너무 많이하면 나중에 학습을 할 때 너무 오래 걸릴 수도 있고 문장 길이가 다 제각각입니다.
단어수를 제한하면 어휘에 없는 단어가 등장했을 때 시퀀스에 누락이 되기 때문에 이런 값을 처리하는 방법이 있습니다.
oov 토큰을 사용하면 없는 어휘는 없는 어휘라고 표현해 줍니다.

 

vocab_size = 5 로 지정해서 원래는 8개가 있는데 개수가 많은 5개만 가져왔습니다.

단어가 너무 많으면 커질수 있어서 사용 (안쓰면 전부 가져옴)

EX vocab_size=6으로 하면 5까지 나옵니다

 

*keras texts_to_sequence**

  • keras의 texts_to_sequences를 활용해 각 토큰에 고유한 정수를 부여한다.
    • 그 다음 to_categorical을 활용하여 원-핫 인코딩을 적용해볼 수 있다.
from tensorflow.keras.preprocessing.text import Tokenizer
from tensorflow.keras.utils import to_categorical

tokens = ['자연어 처리 는 정말 정말 즐거워', '즐거운 자연어 처리 다 같이 해보자']

1) 각 토큰에 고유의 정수 부여

t = Tokenizer()
t.fit_on_texts(tokens)
print(t.word_index)

{'자연어': 1, '처리': 2, '정말': 3, '는': 4, '즐거워': 5, '즐거운': 6, '다': 7, '같이': 8, '해보자': 9}

2) 부여된 정수로 표시

s1=t.texts_to_sequences(tokens)[0]
s2=t.texts_to_sequences(tokens)[1]

부여된 정수로 표시된 문장 s1
----------------------
[1, 2, 4, 3, 3, 5]

부여된 정수로 표시된 문장 s2
----------------------
[6, 1, 2, 7, 8, 9]

3) 문장의 One-Hot Encoding

s1_one_hot = to_categorical(s1)
s2_one_hot = to_categorical(s2)

문장1의 one-hot-encoding
----------------------
[[0. 1. 0. 0. 0. 0.]
 [0. 0. 1. 0. 0. 0.]
 [0. 0. 0. 0. 1. 0.]
 [0. 0. 0. 1. 0. 0.]
 [0. 0. 0. 1. 0. 0.]
 [0. 0. 0. 0. 0. 1.]]

문장2의 one-hot-encoding
----------------------
[[0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]
 [0. 1. 0. 0. 0. 0. 0. 0. 0. 0.]
 [0. 0. 1. 0. 0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0. 0. 1. 0. 0.]
 [0. 0. 0. 0. 0. 0. 0. 0. 1. 0.]
 [0. 0. 0. 0. 0. 0. 0. 0. 0. 1.]]

 

기존 BOW 방식과 시퀀스 방식의 차이는 무엇일까요?

순서를 아는지 모르는지

 

word_index

tokenizer.word_index
  • 단어와 숫자의 키-값 쌍을 포함하는 딕셔너리를 반환
  • 반환 시 자동으로 소문자로 변환되어 들어가며, 느낌표나 마침표 같은 구두점은 자동으로 제거된다

word_counts

wc = tokenizer.word_counts
pd.DataFrame(wc.items()).set_index(0).T

  • 단어별 빈도수 확인
  • countVectorizer로 빈도를 세고 sum()을 했던 것과 같은 결과

texts_to_sequences()

text 문장을 숫자로 이루어진 리스트로 변경

corpus_sequences = tokenizer.texts_to_sequences(corpus)
corpus_sequences
>>> [[3, 4, 1], [2, 1], [2, 1]]

 

oov_token 

가끔나오는 단어는 결측치로 간주하는데 그걸 결측치라고 알려주는 것

 

길이가 맞지 않아서 제대로 numpy array 가 만들어지지 않는다. 원했던 것은 shape(3,5) 로 만들어지길 기대했지만 그렇지 않다. 그래서 패딩을 사용한다.

 

oov_token 값으로 넣어줄 수 있는 값은 어떤것들이 있나요?

마스크값, 종결, 패딩 등으로 사용하기도 합니다.

"<oov>" 를 사용하지 않고 다른 문자를 사용해도 상관은 없습니다.

tokenizer = Tokenizer(num_words=10, oov_token="?모름?")
tokenizer.fit_on_texts(corpus)
print(tokenizer.word_index)
print(corpus)
corpus_sequences = tokenizer.texts_to_sequences(corpus)
corpus_sequences

(시퀀스 - 순서를 고려한다!)

머신러닝에서 사용했을 때는 오히려 TF-IDF 가 더 나은 성능을 보여주기도 합니다.

 

우리가 자연어, 말을 이해할 때 어순이 중요하듯이 시퀀스 방식도 마찬가지입니다!

전처리를 해주면 하다, 했다, 했어요 했을까 등의 단어를 정규화 할 수 있습니다.

정규화=> 일관되게 전처리 해서 불필요하게 토큰을 생성하지 않고 같은 의미를 부여하게 됩니다.

 


konlpy에서도 순서를 따졌나요?

형태소 분석기 입니다. 순서와는 무관해요. 주로 품사태깅, 스테밍, 정규화 등에 사용합니다. 목적이 달라요.

 


Padding

자연어 처리를 하다보면 각 문장 또는 문서는 서로 길이가 다를 수 있음 :

병렬 연산을 위해서 여러 문장의 길이를 임의로 동일하게 맞춰주는 작업이 필요

그러므로 문장의 길이를 맞춰주기 위해 부족한 길이만큼 뒤쪽에 0을 채우는 것

  • pad_sequences [파라미터]
    • maxlens : 최대 문자 길이 지정
    • padding : 어디에 값을 채울 지 지정
    • trucating : maxlen보다 문자열이 길 때, 어디를 자를 지 지정
    • value : 빈 곳을 채울 값 [Code] pad_sequences(corpus_sequences, maxlen=10, padding='post', value=-1)

 

from tensorflow.keras.preprocessing.sequence import pad_sequences

pads = pad_sequences(corpus_sequences, maxlen=10)
pads = pad_sequences(tk_corpus, maxlen=10, padding='post')

print(corpus)
print(word_to_index)
print(pads)
np.array(pads)


텍스트는 신경망에 주입하기 전에 텐서로 변환되어야(=배열)하는데 변환방법 2가지 

원핫 인코딩

  • 정수 배열을 0과 1로 이루어진 벡터로 변환
  • 실수 벡터 데이터를 다룰 수 있는 층-Dense 층-을 신경망의 첫 번째 층으로 사용
  • num_words \* num_reviews 크기의 행렬이 필요하기 때문에 메모리를 많이 사용

패딩(Padding)

  • 정수 배열의 길이가 모두 같도록 패딩(padding)을 추가
  • max_length \* num_reviews 크기의 정수 텐서를 만듦
  • 이런 형태의 텐서를 다룰 수 있는 임베딩(embedding) 층을 신경망의 첫 번째 층으로 사용

 

실습

pad_sequences(sequences, maxlen=None, dtype='int32', padding='pre', truncating='pre', value=0.0)


>>> sequence = [[1], [2, 3], [4, 5, 6]]
>>> tf.keras.preprocessing.sequence.pad_sequences(sequence)
array([[0, 0, 1],
       [0, 2, 3],
       [4, 5, 6]], dtype=int32)

>>> tf.keras.preprocessing.sequence.pad_sequences(sequence, value=-1)
array([[-1, -1,  1],
       [-1,  2,  3],
       [ 4,  5,  6]], dtype=int32)

>>> tf.keras.preprocessing.sequence.pad_sequences(sequence, padding='post')
array([[1, 0, 0],
       [2, 3, 0],
       [4, 5, 6]], dtype=int32)

>>> tf.keras.preprocessing.sequence.pad_sequences(sequence, maxlen=2)
array([[0, 1],
       [2, 3],
       [5, 6]], dtype=int32)

 

순서, 맥락, 시퀀스 가 중요한 데이터는 어떤 데이터가 있을까요

순서가 중요한 시계열 데이터(주가 데이터 등)는 섞지 않고 순서대로 나누기도 합니다.

 

 

 


딥러닝 RNN  - 공식문서

시퀀스 데이터 (squence data)

  • 연속된 연속의 데이터로 순서가 있는 자료
    (대표) 시계열 자료, 텍스트 자료
  •  실제 사용하는 데이터들 중에는 시퀀스 데이터가 대부분을 차지 (음성인식, 자연어, 주가 등)
  •  연속된 데이터이므로 순서가 매우 중요하게 적용하며, 과거의 영향을 받기 때문에 과거 정보의 맥락을 고려하는 새로운 모델이 필요

 

예시 

  • 주가 변동 데이터를 확인하고, 다음 분기의 주가 흐름을 예측 
  • 유로 위기 사이클을 참고하여 다음 달 수출할 상품의 시기를 확인 
  • 심전도(ECG)에 나타나는 이상 패턴을 자동으로 탐지 
  • 당뇨병환자의 혈당 스파이크를 예상하기 위해 혈당 그래프 
  • DNA, 유전자 및 염기서열(Sequence)을 이용한 단백질 구조 예측

시계열 데이터

정의

  • 일정한 시간동안 수집 된 일련의 순차적으로 정해진 데이터 셋의 집합  

 

특징

  • 시간에 관해 순서가 매겨져 있음.
  • 연속한 관측치는 서로 상관관계를 갖고 있음.
  • 순서가 있기 때문에 shuffle 하면 안됨.

 

 RNN (Recurrent Neural Network, 순환 신경망)

인공 신경망의 한 종류로, 유닛간의 연결이 순환적 구조를 갖는 특징을 갖고 있다.

이러한 구조는 시변적 동적 특징을 모델링 할 수 있도록 신경망 내부에 상태를 저장할 수 있게 해주므로,

  • 순방향 신경망과 달리 내부의 메모리를 이용해 시퀀스 형태의 입력을 처리할 수 있다. 
  • 필기 인식이나 음성 인식과 같이 시변적 특징을 지니는 데이터를 처리하는데 적용할 수 있다. 

RNN 활용 분야

  • 언어 모델링(language modeling)
  • 음성 인식(speech recognition)
  • 기계 번역(machine translation)
  • 대화 모델링/질문 답변(conversation modeling/question answering)
  • 이미지/비디오 캡션(image/video captioning),
  • 이미지/음악/동작 생성(image/music/dance generation)
  • 실생활에서 보는 활동내용
    • 음성 인식, 번역모델, 사용자의 감성 분석, 텍스트 분류 작업(스팸 메일 분류, 뉴스 기사 카테고리 분류), 질의 응답 시스템, 챗봇

RNN의 유형

입력 갯수와 출력 갯수에 따른 유형으로, 입력과 출력의 길이에 따라서 달라지는 RNN의 다양한 형태

One to one 가장 기본적인 모델(simpleRNN)
One to many 하나의 이미지를 문장으로 표현할 수 있음
ex) 앉아있는 고양이 등
Many to one 단어 시퀀스에 대해서 하나의 출력을 하는 구조로
감정 분류, 주가 등락을 통한 회사의 파산 여부 분류 등
Many to many 입력 시퀀스가 다른 시간 단계에서 비디오의 각 프레임의 기능 표현인 비디오 분류에도 사용

여러 개의 단어를 입력받아 여러 개의 단어로 구성된 문장을 명사, 동사, 형용사 등으로 구분 반환하는
번역기, 주가 예측, 인코더-디코더

http://cs231n.stanford.edu/slides/2017/cs231n_2017_lecture10.pdf

입력 갯수와 출력 갯수에 따른 유형으로, 입력과 출력의 길이에 따라서 달라지는 RNN의 다양한 형태

입력 갯수 출력 갯수에 따라서 one to many, many to one, many to many 로 나눠지지만

핵심은 타임스텝으로 이전 hidden state 의 아웃풋과 현시점의 인풋이 함께 연산된다

 


 


kkma(꼬꼬마)에서 품사태깅을 하는 메서드

kkma.pos()

 

to_categoricla()는 정수 인코딩 결과를 입력으로 받아 바로 원-핫 인코딩 과정을 수행하는 방법입니다.

시퀀스 인코딩시 빈도수가아니라 단어사전에 번호다


 

단어와 숫자의 키-값 쌍을 포함하는 딕셔너리 값에 유일한 단어 개수인 7개(중복단어 제외)로 7번이 아닌 8번으로 나타나는 이유는?

Tokenizer에 oov_token(보통 1번)이 주어졌기 때문이다.


 

다음은 Tokenizer 클래스를 사용하여 텍스트를 단어 기반으로 토큰화함으로써 신경망(Neural Network)에 사용하기 적합한 형태로 변환하는 과정입니다. 다음과 같은 결과값을 생성하기 위해 빈칸에 알맞은 파라미터를 선택해주세요.

행 = 문장개수

열 = maxlen → 5개

 


sparse_categorical_crossentropy

오디널 인코딩

 

categorical_crossentropy

원핫인코딩

 


TensorFlow 텍스트 소개

텍스트 전처리 엔드 투 엔드 사전 처리
텍스트에서 엔드 투 엔드 BERT 사전 처리를 실행하는 방법을 알아봅니다.
보조 단어 토큰화
텍스트에서 보조 단어를 생성하는 방법을 알아봅니다.
텍스트 분류 BERT를 사용한 텍스트 분류
BERT 모델을 사용하여 텍스트를 분류하는 방법을 알아봅니다.
RNN을 사용한 텍스트 분류
순환 신경망(RNN)을 사용하여 텍스트를 분류합니다.
텍스트 생성 변환 모델을 사용한 텍스트 번역
변환 모델을 사용하여 텍스트를 번역합니다.
seq2seq 모델을 사용한 텍스트 번역
시퀀스-시퀀스 모델을 사용하여 텍스트를 번역하는 방법을 알아봅니다.

 

 

참고자료 :

멋쟁이 사자처럼 AI School 7기 수업내용

728x90

댓글