要将句子向量化为整数,可以使用transform
函数。此函数的输出是具有每个术语计数的向量-特征向量。
vec = CountVectorizer() vec.fit(a) print vec.vocabulary_ new_sentence = "dolor nulla enim" mapped_a = vec.transform([new_sentence]) print mapped_a.toarray() # sparse feature vector tokenizer = vec.build_tokenizer() # array of words ids for token in tokenizer(new_sentence): print vec.vocabulary_.get(token)
问题的第二部分不是那么简单。CountVectorizer
具有inverse_transform
用于此目的的功能,将稀疏的特征向量作为输入。但是,在您的示例中,您想创建一个句子,在该句子中可能会出现相同的术语,而使用该功能是不可能的。
但是,解决方案是使用词汇(单词到id)并基于其构建逆词汇(单词到单词)。CountVectorizer
默认情况下为no inverse_vocabulary
,您必须基于创建它vocabulary
。
input = [2,9,9] # 1. inverse_transform function # create sparse vector sparse_input = [1 if i in input else 0 for i in range(0, len(vec.vocabulary_))] print vec.inverse_transform(sparse_input) > ['aliquam', 'commodo'] # 2. Inverse vocabulary - custom solution terms = np.array(list(vec.vocabulary_.keys())) indices = np.array(list(vec.vocabulary_.values())) inverse_vocabulary = terms[np.argsort(indices)] for i in input: print inverse_vocabulary[i] > ['aliquam', 'commodo', 'commodo']