在python中使用TfidfVectorizer时出现TypeError

时间:2019-05-24 02:26:11

标签: python-3.x scikit-learn tfidfvectorizer

我是python的新手,需要您的帮助。

我正在使用NLP,我想对一个字符串字段进行分类。

我阅读了数据集

data = pd.read_csv("dataset.csv",sep=';',encoding='latin-1',error_bad_lines=False)

标记字段

data['campo']= data['campo'].str.split()

输出为:

1- [Su, inexperto, personal] 2- [Atención, al, cliente]

当我查看互联网上存在的教程时,大多数情况下,当tokeniza返回带有撇号的分隔词时。

enter image description here

问题是当我要向量化(TfidfVectorizer)时,出现错误,我想我的问题就在这里。

你能帮我吗?为什么我没有带撇号的令牌?

执行此操作后,我添加了对字段进行矢量化的可能性:

Tfidf_vect = TfidfVectorizer (max_features = 5000)
Tfidf_vect.fit(data ['field'])

从这里,我抛出错误:

  

AttributeError:“ list”对象没有属性“ lower”

我以为我是下级的主题,所以我补充道:

Tfidf_vect = TfidfVectorizer (lowercase = False, max_features = 5000)  

Tfidf_vect.fit (data ['field'])

然后他向我开枪

  

TypeError:预期的字符串或类似字节的对象

您知道这是什么问题吗?

1 个答案:

答案 0 :(得分:0)

在输入tfidfVectorizer()之前,请勿对文本进行标记化,这意味着您必须在代码中删除以下行。

data['campo']= data['campo'].str.split()

TfidfVectorizer在内部进行令牌化。直接尝试以下代码行!

Tfidf_vect = TfidfVectorizer (max_features = 5000)
Tfidf_vect.fit(data ['campo'])