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

如何在Pandas中通过对比另一列删除某列的冗余词汇

自动清理关键词中的冗余词汇

我用机器学习算法自动生成关键词时,发现输出里存在冗余词汇——也就是那些未出现在输入文本中的词,需要通过算法将这些无用词汇从输出列中移除。

示例数据

参考query_text列生成的关键词存储在auto generated keywords列中,其中存在不必要的词汇(第1行的diamond、第3行的ring),corrected keywords列为筛选后的有效词汇:

序号输入文本(query_text)自动生成关键词(auto generated keywords)清理后关键词(corrected keywords)
1I want ringdiamond|ringring
2I want wedding bandband|weddingband|wedding
3I look for sapphire collectionring|sapphiresapphire
4I want diamond earringdiamond|earringdiamond|earring
5I am looking for stackable ringring|stackablering|stackable
6I need gold braceletbracelet|goldbracelet|gold
7I look for gold ringgold|ringgold|ring
8I need sapphire ringring|sapphirering|sapphire

高亮冗余词汇的数据:
高亮冗余词汇的数据

算法化实现方案

通过对比输入文本列与自动生成关键词列,按以下步骤实现清理:

  • 统一格式:将输入文本和生成的关键词都转为小写,避免大小写差异导致匹配失败;将生成的关键词按分隔符(如|)拆分为单个词汇列表。
  • 完整单词匹配:对每个生成的关键词,检查它是否作为完整单词存在于对应的输入文本中(避免部分匹配,比如输入里的ring不会误匹配ringing)。
  • 重组结果:将筛选出的有效关键词用原分隔符拼接,得到清理后的关键词列。

Python代码示例

使用Pandas处理表格数据,实现上述逻辑:

import pandas as pd
import re

def clean_keywords(row):
    # 统一转为小写,去除多余空格
    query_content = row['query_text'].lower()
    generated_keywords = [key.strip() for key in row['auto generated keywords'].split('|')]
    
    # 筛选有效关键词:仅保留在输入文本中作为完整单词存在的词汇
    valid_keywords = []
    for keyword in generated_keywords:
        keyword_lower = keyword.lower()
        # 正则\b匹配完整单词,re.escape处理特殊字符
        if re.search(rf'\b{re.escape(keyword_lower)}\b', query_content):
            valid_keywords.append(keyword)
    
    # 用|拼接结果
    return '|'.join(valid_keywords)

# 加载数据(实际场景可从CSV/Excel读取)
df = pd.DataFrame({
    '序号': [1,2,3,4,5,6,7,8],
    'query_text': [
        'I want ring',
        'I want wedding band',
        'I look for sapphire collection',
        'I want diamond earring',
        'I am looking for stackable ring',
        'I need gold bracelet',
        'I look for gold ring',
        'I need sapphire ring'
    ],
    'auto generated keywords': [
        'diamond|ring',
        'band|wedding',
        'ring|sapphire',
        'diamond|earring',
        'ring|stackable',
        'bracelet|gold',
        'gold|ring',
        'ring|sapphire'
    ]
})

# 生成清理后的关键词列
df['corrected keywords'] = df.apply(clean_keywords, axis=1)

# 输出结果
print(df[['序号', 'query_text', 'auto generated keywords', 'corrected keywords']])

代码说明

  • 使用re.search(rf'\b{re.escape(keyword_lower)}\b', query_content)确保关键词是输入文本中的完整单词,避免部分匹配问题。
  • 转小写和去除空格处理,保证匹配的鲁棒性,避免因格式差异漏判或误判。
  • 兼容不同的分隔符,只需修改split('|')中的分隔符即可适配其他格式的关键词输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 20:22:09