我正在使用scikit-learn进行文本处理,但是CountVectorizer
没有提供我期望的输出。
我的CSV文件如下所示:
"Text";"label"
"Here is sentence 1";"label1"
"I am sentence two";"label2"
...
等等。
我想先使用“词袋”以了解python中的SVM的工作原理:
import pandas as pd
from sklearn import svm
from sklearn.feature_extraction.text import CountVectorizer
data = pd.read_csv(open('myfile.csv'),sep=';')
target = data["label"]
del data["label"]
# Creating Bag of Words
count_vect = CountVectorizer()
X_train_counts = count_vect.fit_transform(data)
X_train_counts.shape
count_vect.vocabulary_.get(u'algorithm')
但是当我执行
print(X_train_counts.shape)
时,我看到的输出只是(1,1)
,而我有1048行带有句子。我做错了什么?我正在关注this教程。
(
count_vect.vocabulary_.get(u'algorithm')
的输出也是None
。) 最佳答案
问题出在count_vect.fit_transform(data)
中。该函数期望产生字符串的可迭代对象。不幸的是,这些是错误的字符串,可以通过一个简单的示例进行验证。
for x in data:
print(x)
# Text
仅列名称被打印;迭代给出列而不是
data['Text']
的值。你应该做这个:X_train_counts = count_vect.fit_transform(data.Text)
X_train_counts.shape
# (2, 5)
count_vect.vocabulary_
# {'am': 0, 'here': 1, 'is': 2, 'sentence': 3, 'two': 4}
关于python - CountVectorizer与Pandas数据框,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44083683/