6장. 임베딩을 사용해 센티멘트를 프로그래밍 가능하게 만들기
이 작품은 AI를 사용하여 번역되었습니다. 여러분의 피드백과 의견을 환영합니다: translation-feedback@oreilly.com
5장에서는 단어를 가져와서 토큰으로 인코딩하는 방법을 살펴봤습니다. 그런 다음 단어로 가득 찬 문장을 토큰으로 가득 찬 시퀀스로 인코딩하고 적절하게 덧대거나 잘라내어 신경망을 훈련하는 데 사용할 수 있는 좋은 모양의 데이터 집합을 얻는 방법을 살펴봤습니다. 하지만 그 어느 것도 단어의 의미를 모델링하는 것은 아니었습니다. 그리고 의미를 캡슐화할 수 있는 절대적인 숫자 인코딩은 없지만 상대적인 인코딩은 존재합니다.
이 장에서는 의미를 캡슐화하는 기술, 특히 단어를 표현하기 위해 고차원 공간에 벡터를 만드는 임베딩의 개념에 대해 알아봅니다. 이러한 벡터의 방향은 말뭉치에서 단어의 용도에 따라 시간이 지남에 따라 학습할 수 있습니다. 그런 다음 문장이 주어지면 단어 벡터의 방향을 조사하여 합산하고, 합산된 전체적인 방향에서 단어의 산물로서 문장의 문맥을 파악할 수 있습니다. 또한 이와 관련하여 모델이 문장을 스캔할 때 문장 내 단어의 위치도 적절한 임베딩을 학습하는 데 도움이 될 수 있습니다.
이 장에서는 그 작동 방식에 대해서도 살펴보겠습니다. 5장의 풍자 감지를 위한 뉴스 헤드라인 데이터 세트를 사용하여 모델이 문장에서 풍자를 감지하는 데 도움이 되는 임베딩을 구축합니다. 또한 말뭉치의 단어가 벡터에 매핑되는 방식을 이해하는 데 도움이 되는 몇 가지 멋진 시각화 도구로 작업하여 어떤 단어가 전체 분류를 결정하는지 확인할 수 있습니다.
단어에서 의미 파악하기
임베딩을 위한 고차원 벡터에 대해 알아보기 전에 몇 가지 간단한 예를 통해 숫자에서 의미를 어떻게 도출할 수 있는지 시각화해 보겠습니다. 5장의 풍자 데이터 세트를 사용해 풍자적인 헤드라인을 구성하는 모든 단어를 양수로 인코딩하고 현실적인 헤드라인을 구성하는 단어를 음수로 인코딩하면 어떻게 될까요?
간단한 예제: 긍정과 부정
예를 들어 데이터 세트의 이 비꼬는 헤드라인을 살펴봅시다:
christianbalegivenneuteredmalestatuettenamedoscar
어휘의 모든 단어가 0으로 시작한다고 가정하면, 이 문장의 각 단어의 값에 1을 더하면 다음과 같은 결과가 나옵니다:
{"christian":1,"bale":1,"given":1,"neutered":1,"male":1,"statuette":1,"named":1,"oscar":1}
참고
이것은 지난 장에서 했던 단어의 토큰화와는 다릅니다. 각 단어(예: christian)를 말뭉치에서 인코딩된 해당 단어를 나타내는 토큰으로 대체하는 것을 고려할 수도 있지만, 코드를 더 쉽게 읽을 수 있도록 지금은 단어를 그대로 두겠습니다.
그런 다음 다음 단계에서는 다음과 같이 비꼬는 문장이 아닌 평범한 헤드라인을 생각해 보세요:
garethbalescoreswondergoal
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access