sklearn:使用CountVectorizer对象获取新字符串

时间:2015-06-07 18:15:35

标签: machine-learning scikit-learn

所以我通过执行以下行来创建一个CountVectorizer对象。

count_vectorizer = CountVectorizer(binary='true')
data = count_vectorizer.fit_transform(data)

现在我有了一个新字符串,我希望将此字符串映射到我从CountVectorizer获得的TDM矩阵。 因此,我期望输入到TDM的字符串是相应的文档术语向量。

我试过了,

count_vectorizer.transform([string]) 

发生错误,AttributeError:未找到转换 添加堆栈跟踪的一部分,它是一个很长的堆栈跟踪,因此我只添加了跟踪的最后几行的相关位。

  File "/Users/ankit/Desktop/geny/APIServer/RUNTIME/src/controller/sentiment/Sentiment.py", line 29, in computeSentiment
    vec = self.models[model_name]["vectorizer"].transform([string])
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/scipy/sparse/base.py", line 440, in __getattr__
    raise AttributeError(attr + " not found")

请指教。

由于

Ankit S

1 个答案:

答案 0 :(得分:5)

您展示的示例无法重现 - 这里的字符串变量是什么? 但是,以下代码似乎完美无缺: -

from sklearn.feature_extraction.text import CountVectorizer

data = ["aa bb cc", "cc dd ee"]
count_vectorizer = CountVectorizer(binary='true')
data = count_vectorizer.fit_transform(data)

# Check if your vocabulary is being built perfectly
print count_vectorizer.vocabulary_

# Trying a couple new string with added new word. new word should be ignored
newData = count_vectorizer.transform(["aa dd mm", "aa bb"])
print newData

# You can get the array by writing  
print newData.toarray()

enter image description here

好吧,count_vectorizer.transform()接受字符串列表 - 而不是单个字符串。如果变换拟合不起作用,它应该提出“ValueError:词汇不适合或是空的!”如果出现此类错误,请粘贴整个回溯堆栈(异常堆栈)。没有人能看到AttributeError的来源 - 你的代码或sklearn中的一些内部错误。