美文网首页
词袋(Bag of Words)模型及其 Python 语言实现

词袋(Bag of Words)模型及其 Python 语言实现

作者: 不可能打工 | 来源:发表于2020-08-20 15:00 被阅读0次

词袋模型是一种文本特征的表示方法。

具体地,把词表里的词和我要表示的词作比对,没有画 0,有则画数量具体出现的频次。

例如:
句子 1:我/爱/知乎,知乎/真好。
句子 2:我/爱/微博,微博/真好。
于是有 词表=【'我','爱','知乎','真好','微博'】

且 len(词表)=5,故最后我期待用 5 维向量来表示句子 1 和句子 2

句子 1 表示为[1,1,2,1,0] #第一句中没有'微博'

句子 2 表示为[1,1,0,1,2]#第一句中没有'知乎'

Python 语言实现

import numpy as np
from nltk.corpus import stopwords
#Step 1: Tokenize a sentence
def word_extraction(sentence):
    #提取句子中的词们
    words = sentence.split()
    stop_words = set(stopwords.words('english'))
    cleaned_text = [w.lower() for w in words if not w in stop_words]
    return cleaned_text
#Step 2:Apply tokenization to all sentences
def tokenize(sentences):
    #对所有句子做 step1,生成词表
    words = []
    for sentence in sentences:
        w = word_extraction(sentence)
        words.extend(w)
    words = sorted(list(set(words)))
    return words
#Step 3: Build vocabulary and generate vectors
def generate_bow(allsentences):
    vocab = tokenize(allsentences)
    print("Word List for Document \n{0} \n".format(vocab))
    for sentence in allsentences:
        words = word_extraction(sentence)
        bag_vector = np.zeros(len(vocab))
        for w in words:
            for i, word in enumerate(vocab):
                if word == w:
                    bag_vector[i] += 1

        print("{0}\n{1}\n".format(sentence, np.array(bag_vector)))

allsentences = ["Joe waited for the train", "The train was late", "Mary and Samantha took the bus",
"I looked for Mary and Samantha at the bus station",
"Mary and Samantha arrived at the bus station early but waited until noon for the bus"]

print(generate_bow(allsentences))

Output:
Word List for Document 
['arrived', 'bus', 'early', 'i', 'joe', 'late', 'looked', 'mary', 'noon', 'samantha', 'station', 'the', 'took', 'train', 'waited'] 

Joe waited for the train
[0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 1. 1.]

The train was late
[0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 1. 0. 1. 0.]

Mary and Samantha took the bus
[0. 1. 0. 0. 0. 0. 0. 1. 0. 1. 0. 0. 1. 0. 0.]

I looked for Mary and Samantha at the bus station
[0. 1. 0. 1. 0. 0. 1. 1. 0. 1. 1. 0. 0. 0. 0.]

Mary and Samantha arrived at the bus station early but waited until noon for the bus
[1. 2. 1. 0. 0. 0. 0. 1. 1. 1. 1. 0. 0. 0. 1.]

None

相关文章

  • 词袋(Bag of Words)模型及其 Python 语言实现

    词袋模型是一种文本特征的表示方法。 具体地,把词表里的词和我要表示的词作比对,没有画 0,有则画数量具体出现的频次...

  • [笔记] Introduction to Shallow Lan

    Bag of Words 解释: 搜素引擎用词袋模型这种shallow form理解语言。词袋模型的特征有: 1)...

  • 中文NLP笔记:8. 基于LSTM的文本分类

    序列模型 语言模型 N-gram 前面的词袋模型(Bag-of-Words,BoW),没有考虑每个词的顺序 有...

  • 文本向量化表示方法一(词袋模型)

    词袋(Bag-of-words)模型简介 Bag-of-words模型是信息检索领域常用的文档表示方法。在信息检索...

  • 词袋模型BoW和词集模型SoW

    Bag-of-Words词袋模型,经常用在自然语言处理和信息检索当中.在词袋模型中,一篇文本(文章)被表示成"装着...

  • 词袋模型

    词袋模型(Bag of words,简称 BoW ) 词袋模型假设我们不考虑文本中词与词之间的上下文关系,仅仅只考...

  • 情感分析

    步骤: 数据与输出重排打散 bag-of-words词袋模型词袋模型 n-gram模型将文本里面的内容按照字节进行...

  • Quora句子相似度匹配

    预备知识 NLP基础: 词袋模型(Bag-of-words model): TF-IDF算法(term frequ...

  • word2vec

    将词表征为实数值向量的高效工具,采用的模型有CBOW(Continues bag-of-words连续词袋模型)和...

  • Python + 自然语言 + 分类

    两点前置知识 词袋法(词袋模型,bag of words):忽略文本中的词序、语法等信息,将文本视作词的集合,每一...

网友评论

      本文标题:词袋(Bag of Words)模型及其 Python 语言实现

      本文链接:https://www.haomeiwen.com/subject/nnnsjktx.html