본문 바로가기

AI 인공지능/NLP8

바이트 페어 인코딩 (BPE - Byte Pair Encoding) 기본 개념 UNK : 단어 사전에 없는 단어란 의미에서 해당 토큰을 UNK(Unknown Token)라고 표현한다. OOV : 모르는 단어로 인해 문제를 푸는 것이 까다로워지는 상황을 OOV(Out-Of-Vocabulary) 문제라고 한다. 서브워드 분리(Subword segmenation) 작업은 하나의 단어를 더 작은 단위의 의미있는 여러 서브워드들(Ex) birthplace = birth + place)의 조합으로 구성하여 OOV나 희귀 단어, 신조어와 같은 문제를 완화시킬 수 있는 방법이다. BPE (Byte Pair Encoding) BPE(Byte pair encoding) 알고리즘은 1994년에 제안된 데이터 압축 알고리즘 BPE은 기본적으로 연속적으로 가장 많이 등장한 글자의 쌍을 찾아서 .. 2022. 9. 8.
fairseq를 활용한 기계 번역 데이터 준비 root@server:~# ls -al /home/data -rw-rw-r-- 1 data data 175393 8월 30 08:40 test.en -rw-rw-r-- 1 data data 247383 8월 30 08:40 test.ko -rw-rw-r-- 1 data data 15706983 8월 30 08:40 train.en -rw-rw-r-- 1 data data 21556330 8월 30 08:40 train.ko -rw-rw-r-- 1 data data 184784 8월 30 08:40 valid.en -rw-rw-r-- 1 data data 252103 8월 30 08:40 valid.ko 데이터 전처리 바이너리로 변환, 딕셔너리 구축한다. root@server:~# fairse.. 2022. 8. 31.
한글 형태소 분석기 종류 한글 형태소 분석기 (KoNLPy) 1. Okt (Open Korea Text) from konlpy.tag import Okt okt = Okt() text = "가장 유명한 100가지 명언. 하루에 3시간을 걸으면 7년 후에 지구를 한바퀴 돌 수 있다. " print(okt.morphs(text)) print(okt.pos(text)) print(okt.nouns(text)) # ['가장', '유명한', '100', '가지', '명언', '.', '하루', '에', '3시간', '을', '걸으면', '7년', '후', '에', '지구', '를', '한', '바퀴', '돌', '수', '있다', '.'] # [('가장', 'Noun'), ('유명한', 'Adjective'), ('100', 'Numbe.. 2022. 8. 31.
NLP 토큰화 (Tokenization) 처리 방법 토큰화란? 토큰(token)이라 불리는 단위로 나누는 작업을 토큰화(tokenization)라고한다. 토큰의 단위가 상황에 따라 다르지만, 보통 의미있는 단위로 토큰을 정의한다. 단어 토큰화 (Word Tokenization) 토큰의 기준을 단어(word)로 하는 경우, 단어 토큰화(word tokenization)라고 한다. 다만, 여기서 단어(word)는 단어 단위 외에도 단어구, 의미를 갖는 문자열로도 간주되기도 한다. from nltk.tokenize import word_tokenize text = "God is Great! I won a lottery." print(word_tokenize(text)) ['God', 'is', 'Great', '!', 'I', 'won', 'a', 'lotte.. 2022. 8. 31.
기계 번역 - 오픈 소스 벤치마킹 기계 번역이란? NLP는 컴퓨터가 사람의 언어를 이해하는 목표를 가진다. 자연어는 생략과 중의성이 많아 컴퓨터가 이해하기 어렵다. 기계 번역 오픈 소스 이름 회사 언어 및 프레임워크 Transformers HuggingFace Pytorch, Tensorflow Fairseq Facebook Pytorch Tensor2tensor Google Tensorflow OpenNMT-py OpenNMT Pytorch Sockeye Amazon MXNet Marian Microsoft C++ 2022. 8. 9.
트랜스포머 (Transformer) 정의 RNN을 사용하지 않고 오직 어텐션의 기술을 활용하여 인코더-디코더를 구현한 구조 시퀀스투시퀀스 (seq2seq) 한계 각 단어간의 유의미한 관계를 분석하는데 어려움 문장이 긴 경우 은닉상태에서 정보가 손실 트랜스포머 (Transformer) 구조 인코더와 디코더라는 단위가 N개로 구성되는 구조 포지셔널 인코딩 (Positional Encoding) 인베딩 벡터 + 단어의 위치 정보 수식 : 인덱스가 짝수인 경우에는 사인 함수의 값을 사용하고 홀수인 경우에는 코사인 함수의 값을 사용 순서 정보가 보존 : 임베딩 값에 포지셔널 인코딩 값을 더하면 같은 단어라고 하더라도 입력값이 달라진다. 어텐션 (Attention) 인코더의 셀프 어텐션 : Query = Key = Value 디코더의 마스크드 셀프 .. 2021. 1. 19.
Attention (어텐션) 정의 입력 단어를 예측하는 매 시점(time step)마다, 인코더에서의 전체 입력 문장을 다시 한 번 참고하는 기술 사용이유 첫째, 하나의 고정된 크기의 벡터에 모든 정보를 압축하려고 하니까 정보 손실이 발생 둘째, RNN의 고질적인 문제인 기울기 소실(Vanishing Gradient) 문제가 존재 즉, 결국 이는 기계 번역 분야에서 입력 문장이 길면 번역 품질이 떨어지는 현상으로 나타나서 이를 위한 대안으로 입력 시퀀스가 길어지면 출력 시퀀스의 정확도가 떨어지는 것을 보정해주기 위한 등장한 기법인 등장 2021. 1. 15.
시퀀스-투-시퀀스 (Sequence-To-Sequence, seq2seq) 정의 입력된 시퀀스로부터 다른 도메인의 시퀀스를 출력하는 모델 활용 챗봇 (Chatbot) 기계 번역 (Machine Translation) 내용 요약(Text Summarization) STT(Speech to Text) 용어정리 - 임베딩 벡터 기계는 텍스트보다 숫자를 잘 처리합니다. 그래서 자연어 처리에서 텍스트를 벡터로 바꾸어 처리를 하는데 단어들을 벡터화 한 것을 말합니다. - 컨텍스트 벡터 입력 받은 모든 단어 정보들을 압축해서 하나의 벡터로 만드는데, 이를 컨텍스트 벡터(context vector)라고 합니다. - 인코딩 입력받은 문장의 단어들을 압축해서 하나의 컨텍스트 벡터로 만드는 역할을 합니다. - 디코딩 입력받은 문장의 단어들을 압축해서 하나의 컨텍스트 벡터로 만드는 역할을 합니다.컨.. 2021. 1. 12.
728x90
반응형