You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

文本挖掘与分类中列表转字符串遇TypeError错误求助

解决CountVectorizer处理单词列表的TypeError问题

我一眼就看出你遇到的问题根源了:X_train里的每个元素都是单词列表(甚至可能是spaCy的Token对象列表),而" ".join()只能拼接字符串组成的序列,直接用它处理列表序列肯定会触发TypeError。另外你生成FilteredArticle时,存的是Token对象而非字符串,这也会给后续处理埋下隐患。

下面给你两种直接可行的解决方案:

方案一:提前将单词列表转换为空格分隔的字符串(推荐)

先修正FilteredArticle的生成逻辑,把spaCy Token转成文本字符串,再将每个列表拼接成单个字符串:

Data['FilteredArticle'] = 0.0
for i in range(Data.shape[0]):
    DS = nlp(Data['Titre-Article'][i])
    # 提取Token的文本内容,过滤后拼接成字符串
    filtered_text = " ".join([w.text for w in DS if w.is_alpha and not w.is_stop and not w.is_punct and len(w)>3])
    Data['FilteredArticle'][i] = filtered_text

之后再进行数据集划分和CountVectorizer的拟合,此时X_train的每个元素都是标准字符串,完全符合CountVectorizer的要求:

from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import CountVectorizer

X_train, X_valid, y_train, y_valid = train_test_split(Data.FilteredArticle, Data.classe)

count_vect = CountVectorizer(analyzer='word', token_pattern=r'\w{1,}')
count_vect.fit(X_train)

# 转换训练集和验证集为词频矩阵
X_train_counts = count_vect.transform(X_train)
X_valid_counts = count_vect.transform(X_valid)

方案二:自定义Tokenizer直接处理单词列表

如果想保留单词列表的形式(比如已经提前完成了分词,不想再重复处理),可以给CountVectorizer自定义一个tokenizer,直接返回输入的列表:

# 先确保FilteredArticle里的元素是字符串列表(而非Token对象)
Data['FilteredArticle'] = 0.0
for i in range(Data.shape[0]):
    DS = nlp(Data['Titre-Article'][i])
    filtered_words = [w.text for w in DS if w.is_alpha and not w.is_stop and not w.is_punct and len(w)>3]
    Data['FilteredArticle'][i] = filtered_words

# 自定义tokenizer,直接返回输入的单词列表
def custom_tokenizer(doc):
    return doc

# 初始化CountVectorizer时关闭默认的预处理和小写转换(因为已经提前处理过了)
count_vect = CountVectorizer(
    analyzer='word',
    tokenizer=custom_tokenizer,
    preprocessor=None,
    lowercase=False
)

count_vect.fit(Data.FilteredArticle)

关键提醒:

你原来的代码里还有一个隐藏问题:生成FilteredArticle时存的是spaCy的Token对象,而非字符串。就算你解决了join的问题,CountVectorizer默认会把Token对象转换成"<Token 'word'>"这样的文本,完全不是你想要的单词内容,所以一定要先转成w.text!

内容的提问来源于stack exchange,提问作者MKD

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:32:55