bag(bag of word)

2024. 2. 28. 17:46자연어처리

 

 

from konlpy.tag import Okt
okt=Okt()

def build_bow(document):
#온점 제거 및 형태소 분석
document=document.replace('.','')
tokenized_document=okt.morphs(document)

word_to_index={}
bow=[]
 
for word in tokenized_document:
if word not in word_to_index.keys():
word_to_index[word]=len(word_to_index)
#bow에 전부 기본값 1을 넣는다
bow.insert(len(word_to_index)-1,1)
 
else:
#재등장하는 단어의 인덱스
index=word_to_index.get(word) #word not in word_to_index.keys():아니라면
#재등장하는 단어는 해당하는 인덱스의 위치에 1일 더한다.
bow[index]=bow[index]+1
 
return word_to_index, bow

document='정부가 발표하는 물가상승률과 소비자가 느끼는 물가상승률은 다르다.'
vocab, bow = build_bow(document)
print(vocab)
print(bow)
 
 
 
-> {'정부': 0, '가': 1, '발표': 2, '하는': 3, '물가상승률': 4, '과': 5, '소비자': 6, '느끼는': 7, '은': 8, '다르다': 9}
-> [1, 2, 1, 1, 2, 1, 1, 1, 1, 1]
 

 

- 2번반복된 '가' - 1번인덱스, '물가상승률' - 4는 1이아닌 2로 출력되었음 

 

 

 

https://wikidocs.net/22650

 

04-02 Bag of Words(BoW)

단어의 등장 순서를 고려하지 않는 빈도수 기반의 단어 표현 방법인 Bag of Words에 대해서 학습합니다. ## 1. Bag of Words란? Bag of Words…

wikidocs.net