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

如何在两类目标场景下正确使用Scattertext工具?

1. 数据集兼容性说明

这类仅包含词汇、两类标签对应出现频次的预聚合二分类词频数据集完全支持用Scattertext开展分析。
你之前的脚本运行失败核心是三个问题:

  • 代码中从未定义corpus变量就直接传入可视化函数,触发变量不存在的报错
  • 没有将普通的pandas词频表转换为Scattertext要求的专用语料对象,直接传入DataFrame不符合接口参数要求
  • 参数不匹配:你代码中not_category_name填的是'Unos',但数据集第二类标签是Ones,就算语料构建正确也会出现类别匹配错误。
2. 正确实现流程

Scattertext默认接口是面向原始分词文本设计的,针对预聚合的词频表,需要用专门的词频导入接口构建语料,不需要反向构造原始文本,完整步骤如下:

  • 第一步:导入依赖,读取本地CSV词频表,注意pandas 1.3+版本已经移除了error_bad_lines参数,替换为on_bad_lines='skip'避免读文件报错
  • 第二步:实例化词频类别统计对象,逐行录入每个词汇在两个分类下的出现频次
  • 第三步:调用词频语料构建方法,生成Scattertext可识别的Corpus对象
  • 第四步:将合法的Corpus对象传入可视化生成函数,输出HTML结果并保存到本地

可直接运行的参考代码如下:

import pandas as pd
import scattertext as st

# 读取本地词频数据集
df = pd.read_csv(
    "MyResult.csv",
    delimiter=',',
    on_bad_lines='skip'
)

# 构建词汇-类别频次映射
term_cat_freq = st.TermCategoryFrequencies()
for _, row in df.iterrows():
    term_cat_freq.set_term_category_frequency(
        term=row['Words'],
        category='Zeros',
        count=row['Zeros']
    )
    term_cat_freq.set_term_category_frequency(
        term=row['Words'],
        category='Ones',
        count=row['Ones']
    )

# 生成Scattertext专用语料对象
corpus = st.CorpusFromTermCategoryFrequencies(term_cat_freq).build()

# 生成交互式可视化HTML
html = st.produce_scattertext_explorer(
    corpus,
    category='Zeros',
    category_name='Zeros类',
    not_category_name='Ones类',
    width_in_pixels=1000,
    metadata=df['Words']
)

# 将结果写入本地HTML文件,直接用浏览器打开即可查看
with open("词频分类可视化.html", 'wb') as f:
    f.write(html.encode('utf-8'))

如果你需要自定义类别显示名称,可以自行修改category_name和not_category_name的传值,只要保证category参数传入的字符串和你录入频次时用的类别名(即'Zeros')完全一致即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 19:03:49