단어 가방 모형
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
단어 가방 모형(Bag-of-words model)은 텍스트 문서를 단어의 집합으로 표현하며, 각 단어의 빈도수를 중요한 정보로 간주하는 방식이다. 텍스트를 단어 단위로 변환한 후, 각 단어의 등장 횟수를 계산하여 텍스트를 특징화한다. 이 모델은 단어의 순서를 무시하기 때문에, 텍스트의 세부적인 의미를 파악하는 데 한계가 있지만, 문서 분류와 같은 간단한 작업에 유용하게 사용될 수 있다. n-그램 모델은 단어의 순서를 고려하여 이러한 단점을 보완하며, 단어 가방 모델은 n-그램 모델의 특수한 경우로 볼 수 있다. 단어 가방 모형은 파이썬과 같은 프로그래밍 언어를 통해 구현될 수 있으며, 해싱 트릭을 사용하여 메모리 사용량을 최적화할 수 있다.
더 읽어볼만한 페이지
- 자연어 처리 - 정보 추출
정보 추출은 비정형 또는 반구조화된 텍스트에서 구조화된 정보를 자동으로 추출하는 기술로, 자연어 처리 기술을 활용하여 개체명 인식, 관계 추출 등의 작업을 수행하며 웹의 방대한 데이터에서 유용한 정보를 얻는 데 사용된다. - 자연어 처리 - 단어 의미 중의성 해소
단어 의미 중의성 해소(WSD)는 문맥 내 단어의 의미를 파악하는 계산 언어학 과제로, 다양한 접근 방식과 외부 지식 소스를 활용하여 연구되고 있으며, 다국어 및 교차 언어 WSD 등으로 발전하며 국제 경연 대회를 통해 평가된다. - 기계 학습 - 비지도 학습
비지도 학습은 레이블이 없는 데이터를 통해 패턴을 발견하고 데이터 구조를 파악하는 것을 목표로 하며, 주성분 분석, 군집 분석, 차원 축소 등의 방법을 사용한다. - 기계 학습 - 지도 학습
지도 학습은 레이블된 데이터를 사용하여 입력 데이터와 출력 레이블 간의 관계를 학습하는 기계 학습 분야로, 예측 모델 생성, 알고리즘 선택, 모델 최적화, 정확도 평가 단계를 거치며, 회귀 및 분류 문제에 적용되고 다양한 확장 기법과 성능 평가 방법을 활용한다.
단어 가방 모형 |
---|
2. 정의
단어 가방 모델은 텍스트 문서를 단어의 집합으로 표현하며, 각 단어의 빈도수를 중요하게 여긴다. 단어 가방 모델은 주로 특성 생성 도구로 사용된다. 텍스트를 "단어"로 변환한 후에는 텍스트를 특성화하기 위한 다양한 측정값을 계산할 수 있는데, 가장 일반적인 유형은 용어 빈도, 즉 용어가 텍스트에 나타나는 횟수이다.
2. 1. 예시
다음은 단어 가방 모형을 사용하여 텍스트 문서를 모델링하는 예시이다.::(1) John likes to watch movies. Mary likes movies too.
::(2) Mary also likes to watch football games.
이 두 개의 텍스트 문서를 기반으로 각 문서에 대해 다음과 같이 목록이 구성된다.
::"John","likes","to","watch","movies","Mary","likes","movies","too"
::"Mary","also","likes","to","watch","football","games"
각 단어 가방을 JSON JSON 객체로 표현하고, 각 JavaScript 변수에 속성을 부여한다.
::BoW1 = {"John":1,"likes":2,"to":1,"watch":1,"movies":2,"Mary":1,"too":1};
::BoW2 = {"Mary":1,"also":1,"likes":1,"to":1,"watch":1,"football":1,"games":1};
각 키는 단어이고, 각 값은 주어진 텍스트 문서에서 해당 단어가 나타나는 횟수이다.
요소의 순서는 자유로우므로, 예를 들어 {"too":1,"Mary":1,"movies":2,"John":1,"watch":1,"likes":2,"to":1} 역시 BoW1과 동일하다. 이는 엄격한 JSON 객체 표현에서 예상되는 것이기도 하다.
만약 다른 문서가 이 두 문서의 합집합과 같다면,
::(3) John likes to watch movies. Mary likes movies too. Mary also likes to watch football games.
해당 JavaScript 표현은 다음과 같다.
::BoW3 = {"John":1,"likes":3,"to":2,"watch":2,"movies":2,"Mary":2,"too":1,"also":1,"football":1,"games":1};
따라서, 가방 대수에서 볼 수 있듯이, 단어 가방 표현에서 두 문서의 "합집합"은 형식적으로 각 요소의 중복도를 합산하는 서로소 합집합이다.[1]
BoW3|BoW3영어 = BoW1|BoW1영어 ⨄|U+2254영어 BoW2|BoW2영어[2]
2. 2. 단어 순서
단어 가방 모형은 텍스트 내의 모든 단어 순서를 제거한다. 예를 들어, "man bites dog"와 "dog bites man"의 단어 가방 모형 표현은 동일하므로, 텍스트의 단어 가방 모형 표현으로 작동하는 모든 알고리즘은 이를 동일하게 처리해야 한다. 이러한 구문이나 문법이 없다는 특징에도 불구하고, 단어 가방 모형 표현은 빠르며 단어 순서가 필요하지 않은 간단한 작업에 충분할 수 있다. 예를 들어, 문서 분류의 경우, "stocks", "trade", "investors"라는 단어가 여러 번 나타나면 텍스트는 재무 보고서일 가능성이 높지만, 다음과 같은 문장을 구별하기에는 충분하지 않다.> Yesterday, investors were rallying, but today, they are retreating.
> Yesterday, investors were retreating, but today, they are rallying.
따라서 단어 가방 모형 표현은 문서의 자세한 의미를 파악하기에 충분하지 않다.
3. n-그램 모델
단어 가방 모델은 단어 수가 중요한, 순서 없는 문서 표현이다. 예를 들어 "철수는 영화를 보는 것을 좋아한다. 영희는 영화도 좋아한다."라는 문장을 단어 가방 모델로 표현하면 동사 "좋아한다"가 항상 사람 이름을 따른다는 것을 나타내지 않는다. 이러한 단점을 보완하기 위해 ''n-''그램 모델을 사용할 수 있다.[1]
n-그램 모델은 텍스트를 n개의 단어 단위로 구문 분석하고 각 단위의 빈도를 저장한다. 예를 들어, 바이그램(bigram) 모델은 텍스트를 단어 2개 단위로 구문 분석하고 이전과 같이 각 단위의 빈도라는 용어를 저장하여 공간 정보를 저장할 수 있다.[1]
개념적으로 단어 가방 모델은 n-그램 모델의 특수한 경우(n = 1)로 볼 수 있다. n > 1인 경우 모델 이름은 w-shingling(여기서 ''w''는 그룹화된 단어 수를 나타내는 ''n''과 같다)이라고 한다. 자세한 내용은 언어 모델을 참조하면 된다.[1]
4. 구현
단어 가방 모형은 문서 내 단어의 빈도를 사용하여 내용을 나타낸다. 빈도는 tf-idf를 통해 정규화할 수 있다. 또한, 지도 학습을 활용하여 문서의 클래스 레이블을 고려한 개선 방법도 개발되었다.[4] 일부 문제에서는 빈도 대신 단어의 존재 여부를 나타내는 이진 가중치를 사용하기도 한다.
4. 1. 파이썬 구현 예시
python# 먼저 필요한 패키지를 설치해야 합니다.
# pip install --upgrade pip
# pip install tensorflow
from tensorflow import keras
from typing import List
from keras.preprocessing.text import Tokenizer
sentence = ["John likes to watch movies. Mary likes movies too."]
def print_bow(sentence: List[str]) -> None:
tokenizer = Tokenizer()
tokenizer.fit_on_texts(sentence)
sequences = tokenizer.texts_to_sequences(sentence)
word_index = tokenizer.word_index
bow = {}
for key in word_index:
bow[key] = sequences[0].count(word_index[key])
print(f"단어 가방 문장 1:\n{bow}")
print(f"총 {len(word_index)}개의 고유 토큰을 찾았습니다.")
print_bow(sentence)
```
위 코드는 파이썬과 텐서플로, 케라스를 사용하여 단어 가방(Bag of Words) 모델을 구현한 예시이다. 단어 가방 모델은 주로 특성 생성 도구로 사용된다. 텍스트를 "단어"로 변환한 후에는 텍스트를 특성화하기 위한 다양한 측정값을 계산할 수 있는데, 단어 가방 모델에서 계산된 가장 일반적인 유형의 특성 또는 기능은 용어 빈도, 즉 용어가 텍스트에 나타나는 횟수이다.
5. 해싱 트릭
널리 사용되는 방법은 해싱 트릭으로, 단어를 해시 함수를 사용하여 인덱스에 직접 매핑한다.[5] 따라서 사전을 저장하기 위한 메모리가 필요하지 않다. 해시 충돌은 일반적으로 해시 버킷의 수를 늘리기 위해 확보된 메모리를 통해 처리된다. 실제로 해싱은 단어 가방 모형의 구현을 단순화하고 확장성을 향상시킨다.
참조
[1]
문서
McTear et al 2016
[2]
학회
Efficient visual search of videos cast as text retrieval
https://www.di.ens.f[...]
opposition
2009-04
[3]
저널
Distributional Structure
[4]
학회
A study of term weighting schemes using class information for text classification
ACM
[5]
서적
Proceedings of the 26th Annual International Conference on Machine Learning
[6]
문서
McTear et al 2016
[7]
저널
Distributional Structure
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com