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

TfidfVectorizer运行报错first argument must be string or compiled pattern咨询

错误原因
  • 核心触发点:你在analyzer='word'模式下将token_pattern设为None,且未额外指定自定义分词器。TfidfVectorizer的word分析模式默认需要调用token_pattern对应的正则表达式提取词汇,传入None会导致正则调用时参数类型不匹配,直接触发该TypeError。
  • 次要格式问题:你直接将整个DataFrame传入fit_transform方法,该方法要求输入为一维的文本序列,传入二维DataFrame也不符合输入格式要求。
解决方法

如果你的dfff中已经完成分词,每一行对应文本的分词结果为空格分隔的字符串,按以下步骤修改即可:

  1. 修正TfidfVectorizer初始化参数,两种方案二选一:
    方案一:搭配自定义分词器使用token_pattern=None
# 已提前完成分词,直接按空格拆分即可
def dummy_tokenizer(text):
    return text.split()

tfidf_vecer2 = TfidfVectorizer(
    analyzer = 'word',
    tokenizer = dummy_tokenizer,
    token_pattern = None
)

方案二:调整token_pattern适配已分词内容,无需自定义分词器

# 正则匹配所有非空格连续字符串,对应你提前拆分好的词单元
tfidf_vecer2 = TfidfVectorizer(
    analyzer = 'word',
    token_pattern = r'\S+'
)
  1. 传入正确的一维语料序列:假设你存储分词结果的列名为cut_text,修改fit_transform入参:
# 仅传入分词内容列,不要传入整个DataFrame
tfidf_vectorr= tfidf_vecer2.fit_transform(dfff['cut_text'])
# 可直接调用toarray()方法,无需先转dense再转numpy数组
tfidf_array = tfidf_vectorr.toarray()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 16:57:05