SVM - 将字符串传递给 Python 中的 CountVectorizer 以矢量化每个字符?
SVM - passing a string to the CountVectorizer in Python vectorizes each character?
我有一个工作的 SVM,当 transform
函数的输入是一个字符串列表时,CountVectorizer 工作正常。但是,如果我只将一个字符串传递给它,向量化器会遍历字符串中的每个字符并对每个字符进行向量化,即使我在构造 CountVectorizer
时将 analyzer
参数设置为 word
.
for x in range(0,3):
test=raw_input("Type a message to classify: ")
v=vectorizer.transform(test).toarray()
print(v)
print(len(v))
print(svm.predict(vectorizer.transform(test).toarray()))
我可以通过将上面代码中的第二行更改为来解决此问题:
test=[raw_input("Type a message to classify: ")]
但是有一个单项列表似乎很奇怪。有没有更好的方法不用构造列表就可以做到这一点?
它需要一个文档列表或数组,因此当您传入单个字符串时,它假定该字符串的每个元素都是一个文档(即:一个字符)。
尝试将 svm.predict(vectorizer.transform(test).toarray())
更改为 svm.predict(vectorizer.transform([test]).toarray())
PS:当您使用 real-world 语料库时,toarray()
部分无法很好地扩展。 sklearn 中的 SVM 可以在稀疏矩阵上运行,所以我会把那部分放在一起。
我有一个工作的 SVM,当 transform
函数的输入是一个字符串列表时,CountVectorizer 工作正常。但是,如果我只将一个字符串传递给它,向量化器会遍历字符串中的每个字符并对每个字符进行向量化,即使我在构造 CountVectorizer
时将 analyzer
参数设置为 word
.
for x in range(0,3):
test=raw_input("Type a message to classify: ")
v=vectorizer.transform(test).toarray()
print(v)
print(len(v))
print(svm.predict(vectorizer.transform(test).toarray()))
我可以通过将上面代码中的第二行更改为来解决此问题:
test=[raw_input("Type a message to classify: ")]
但是有一个单项列表似乎很奇怪。有没有更好的方法不用构造列表就可以做到这一点?
它需要一个文档列表或数组,因此当您传入单个字符串时,它假定该字符串的每个元素都是一个文档(即:一个字符)。
尝试将 svm.predict(vectorizer.transform(test).toarray())
更改为 svm.predict(vectorizer.transform([test]).toarray())
PS:当您使用 real-world 语料库时,toarray()
部分无法很好地扩展。 sklearn 中的 SVM 可以在稀疏矩阵上运行,所以我会把那部分放在一起。