我正在对文本数据进行数据清理和预处理。
在标记化和必要的步骤之后,我现在正试图用sklearnCountVectorizer
从数据生成一个矩阵,但是当我运行代码时,它只输出零
这是我在阻止它之后处理的实际文本
# Stemming
from nltk.stem import PorterStemmer
ps = PorterStemmer()
stemmed_words=[]
for w in filtered_sent:
stemmed_words.append(ps.stem(w))
print("Filtered Sentence:",filtered_sent[0:50])
print("Stemmed Sentence:",stemmed_words[0:50])
这是文本stemmed_words
的输出
print("Stemmed Sentence:",stemmed_words[0:50])
Stemmed Sentence: ['0', 'crack', 'adam', 'disco', 'cooki', 'ecstasi', 'discard', 'travel', '...', '1', 'o.k', '.', 'o.k', '.', 'o.k', '.', 'o.k', '.', 'lar', 'play', 'joke', 'joke', 'joke', 'jo', '...', '2', 'free', 'peopl', 'introduct', 'record', 'entranc', 'entra', '...', '3', 'brawl', 'caus', 'doctor', 'osteopathi', 'unreal', '...', '4', 'nobelium', 'nobelium', 'brawl', 'act', 'doctor', 'osteop', '...', '5', 'freemsg']
这是生成矩阵的代码
from sklearn.feature_extraction.text import CountVectorizer, TfidfVectorizer
cv = CountVectorizer(analyzer='word', ngram_range=(2, 2))
text_counts = cv.fit_transform(stemmed_words)
print(text_counts[0:10].toarray())
这是我的输出
print(text_counts[0:10].toarray())
[[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]]
我想知道为什么我只得到零而没有混合值。谢谢
您需要将未发音的句子输入到
CountVectorizer
或TfidfVectorizer
,否则它会将每个单词理解为一个单独的句子。因此,只有零,因为它无法在您的输入中找到bi-gram更简单的方法是更改向量器的
build_analyzer
方法(在self.analyzer == 'word':
之后),这样您就不必单独执行相关问题 更多 >
编程相关推荐