Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 허깅페이스
- 감성분석
- 분류모델평가
- sequential data
- 임베딩
- Min-Max 알고리즘
- hugging face
- 구글클라우드플랫폼
- GCP
- word2vec
- Enriching Word Vectors with Subword Information
- sensibleness
- sbert
- 의미연결망
- Google Cloud Platform
- degree centrality
- topic modeling
- ROC-AUC Curve
- 알파베타가지치기
- QANet
- 머신러닝
- Meena
- dynamic topic modeling
- 동적토픽모델링
- 토픽모델링
- 사회연결망분석
- semantic network
- type-hint
- word representation
- Holdout
Archives
- Today
- Total
Dev.log
Bag of Words 본문
Bag of Words에 대해서
Bag of Words
Bag of Words는 단어들의 sequence에 대해서는 고려하지 않고 단어들의 frequency에 집중하여 텍스트 데이터를 수치화 시키는 방법을 의미합니다. 예를 들어 "나는 포켓몬빵을 사러 편의점에 갔다" 라는 문장이 주어졌다 가정해 봅시다. 이를 형태소 분석기를 사용해서 형태소 단위로 나눈후 해당 문장에 대해 Bag of Words를 만들어 보겠습니다.
from konlpy.tag import Okt
okt = Okt()
def build_bag_of_words(document):
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.insert(len(word_to_index) - 1, 1)
else:
index = word_to_index.get(word)
bow[index] = bow[index] + 1
return word_to_index, bow
doc1 = "나는 포켓몬빵을 사러 편의점에 갔다"
vocab, bow = build_bag_of_words(doc1)
print('vocabulary :', vocab)
print('bag of words vector :', bow)
vocabulary : {'나': 0, '는': 1, '포켓몬빵': 2, '을': 3, '사러': 4, '편의점': 5, '에': 6, '갔다': 7}
bag of words vector : [1, 1, 1, 1, 1, 1, 1, 1]
위의 코드에서 BoW 벡터를 살펴보면 형태소 단위로 토큰화한 값들에 중복된 요소가 없어서 전부 1로 구성되는것을 확인 할 수 있습니다. 만약 "나는 포켓몬빵을 사러 편의점에 갔다" 가 아닌 "나는 포켓몬빵이 먹고 싶어 포켓몬빵을 사러 편의점에 갔다" 라는 문장에서 BoW를 구하게 되면 "포켓몬빵"이라는 단어의 값은 2를 가지게 됩니다. 즉, BoW는 각 단어가 등장한 횟수를 수치화시키는 통계적 방법으로 주로 어떠한 단어가 얼마나 등장했는지를 기준 표현하는 방법입니다.
'자연어처리' 카테고리의 다른 글
Graph centrality를 통한 금융 자연어 데이터 분석 (0) | 2022.06.10 |
---|---|
Sentence BERT (0) | 2022.05.11 |
문서간 유사도: Jaccard Similarity & Cosine Similarity (0) | 2022.04.29 |
How to write a spelling corrector (0) | 2022.04.29 |
SentiwordNet (0) | 2022.04.23 |
Comments