词集模型 Set Of Words(SOW)和词袋模型 Bag Of Words(BOW)
2018-03-04 14:25
627 查看
SOW和BOW都是将所有文本中单词形成一个字典,然后根据字典来统计单词出现频数。不同的是:
SOW是单个文本中单词出现在字典中,就将其置为1,而不管出现多少次。
BOW是单个文本中单词出现在字典中,就将其向量值加1,出现多少次就加多少次。
注意SOW和BOW都是基于词之间保持独立性,没有关联为前提。这使得其统计方便,但同时也丢失了文本间词之间关系的信息。现有Word Embedding在将单词向量化的同时,一定程度表现单词间距离。
SOW是单个文本中单词出现在字典中,就将其置为1,而不管出现多少次。
BOW是单个文本中单词出现在字典中,就将其向量值加1,出现多少次就加多少次。
注意SOW和BOW都是基于词之间保持独立性,没有关联为前提。这使得其统计方便,但同时也丢失了文本间词之间关系的信息。现有Word Embedding在将单词向量化的同时,一定程度表现单词间距离。
texts = [['a', 'b', 'c', 'd', 'e'], ['a', 'a', 'b', 'c', 'a']]
vocabulary = set() for text in texts: # 取并集 vocabulary |= set(text) vocabulary = list(vocabulary) print(vocabulary) # ['e', 'd', 'a', 'c', 'b']
SOW = [] for text in texts: vec = [0]*len(vocabulary) # 从字典开始遍历 for i, word in enumerate(vocabulary): if word in text: # SOW统计方式,如果文本中单词出现在字典中就将向量置为1 vec[i] = 1 SOW.append(vec) print(SOW) # [[1, 1, 1, 1, 1], [0, 0, 1, 1, 1]]
BOW = [] for text in texts: vec = [0]*len(vocabulary) # 从文本开始遍历 for word in text: if word in vocabulary: # BOW统计方式,如果文本中单词出现在字典中就将向量值加11 vec[vocabulary.index(word)] += 1 BOW.append(vec) print(BOW) # [[1, 1, 1, 1, 1], [0, 0, 3, 1, 1]]
相关文章推荐
- 计算机视觉中的词袋模型(Bow,Bag-of-words)
- Bag of Words(BOW)模型
- Bag of Words(BOW)模型
- Bag of visual words(Bag of Words(BOW)模型)
- Bag of visual words(Bag of Words(BOW)模型)
- Bag of Words(BOW)模型
- 基于BOW模型的图像分类Bag Of Visual Words model for image classification
- 基于Bow模型的图像检索 Image Retrieval with Bag of Visual Words
- 基于BoW模型的场景识别 Scene recognition with bag of words
- 基于BoW模型的图像分类 Image Classification with Bag of Visual Words
- 第九章三续:SIFT算法的应用--目标识别之Bag-of-words模型
- SIFT算法的应用--目标识别之Bag-of-words模型
- Bag-of-words模型
- 第九章三续:SIFT算法的应用--目标识别之Bag-of-words模型
- 第九章三续:SIFT算法的应用--目标识别之Bag-of-words模型
- SIFT算法的应用--目标识别之Bag-of-words模型(转)
- 机器视觉-词袋模型Bag-of-words model
- 一篇给力的Bag-of-words模型入门介绍
- 文本表示(Text Representation)之词集模型(SOW)&词袋模型(BOW)&TF-IDF模型
- 第九章三续:SIFT算法的应用--目标识别之Bag-of-words模型