본문 바로가기
자연어(LLM)

[AI활용 자연어처리 챗봇프로젝트] OOV란? oov인덱스 번호는?

by 바다의 공간 2024. 12. 6.

OOV란? (Out Of Vocbulary)

- 단어 집합에 존재하지 않는 단어

- 이것 또한 정수인코딩을 할 필요가 있을 수 있다!

 


숫자 0과 oov토큰을 고려하여 단어 집합의 크기를 +2함

oov_token = 단어집합에 없는 단어들을 OOV로 간주하여 보존합니다.

vocab_size = 5
tokenizer =Tokenizer(num_words = vocab_size + 2, oov_token='OOV')
tokenizer.fit_on_texts(preprocessed_sentences)

Keras의 Tokenizer은 'OOV'를 인덱스 1로 합니다.

그래서 한번 출력해보자면

tokenizer.word_index
출력결과
{'OOV': 1,
'barber': 2,
'secret': 3,
'huge': 4,
'kept': 5,
'person': 6,
'word': 7,
'keeping': 8,
'good': 9,
'knew': 10,
'driving': 11,
'crazy': 12,
'went': 13,
'mountain': 14}

로 이렇게 나옵니다.

tokenizer.texts_to_sequences(preprocessed_sentences)

것 또한 

이렇게 표현이 됩니다. 그러면 즉 

barber person 이런식으로 되는거죠~

 

맨 마지막으를 보면 barber OOV huge OOV를 의미하고 

oov는 훈련된 단어가 아니기때문에 어떤 단어인지 알 수 없습니다!

 

 

그래서 즉 빈도수 상위 5개 단어는 2~6까지 인덱스! 즉 2가 가장 많은거!

단어 집합 밖의 단어들은 전부 인덱스 1의 'OOV'로 인코딩이 됩니다.