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

如何对CountVectorizer生成的词汇按语义分组得到新词向量表示

实现自定义词条合并的解决方案

你可以通过先定义语义分组映射,再对原词频矩阵按分组聚合计算的方式完成需求,具体实现代码和步骤如下:

步骤1:定义语义分组映射

首先把你要合并的同类词汇整理成字典格式,key为新自定义词条,value为对应要合并的原有词汇列表:

# 自定义语义分组规则
group_map = {
    'color': ['blue', 'brown', 'red'],
    'body': ['fat', 'thin', 'tall'],
    'animal': ['cat', 'dog', 'horse']
}

步骤2:按分组计算新词频

可以选择保留未分组的词汇,也可以只保留自定义分组的词条,两种实现方式如下:

方式一:保留所有词汇(未分组的词汇原样保留)

# 初始化结果字典
new_df_dict = {}
# 先处理分组词条
for new_col, old_cols in group_map.items():
    # 对属于同一分组的词频求和
    new_df_dict[new_col] = df[old_cols].sum(axis=1)
# 处理不需要分组的词汇
grouped_old_cols = [col for cols in group_map.values() for col in cols]
other_cols = [col for col in df.columns if col not in grouped_old_cols]
for col in other_cols:
    new_df_dict[col] = df[col]
# 生成新的词频矩阵
new_df = pd.DataFrame(new_df_dict)

得到的new_df结果如下:

colorbodyanimalandhairyis
111101
111011
111101

方式二:仅保留自定义分组词条

如果不需要保留其他无关词汇(比如示例里的and、is、hairy),可以直接只计算分组后的词频:

new_df = pd.DataFrame()
for new_col, old_cols in group_map.items():
    new_df[new_col] = df[old_cols].sum(axis=1)

得到的结果仅包含你自定义的3个词条:

colorbodyanimal
111
111
111

额外说明

如果你需要得到分组后的词嵌入表示,只需要把新生成的词频矩阵new_df作为输入,传入对应的词嵌入模型训练即可,不需要再重新走CountVectorizer的流程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 23:54:05