我是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返回带有撇号的分隔词时。
问题是当我要向量化(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:预期的字符串或类似字节的对象
您知道这是什么问题吗?
答案 0 :(得分:0)
在输入tfidfVectorizer()
之前,请勿对文本进行标记化,这意味着您必须在代码中删除以下行。
data['campo']= data['campo'].str.split()
TfidfVectorizer在内部进行令牌化。直接尝试以下代码行!
Tfidf_vect = TfidfVectorizer (max_features = 5000)
Tfidf_vect.fit(data ['campo'])