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

基于二元标签提取重复字符,实现联盟URL自动检测方案问询

问题概述

现有带人工标注二元标签(affiliate=1为联盟营销URL,affiliate=0为非联盟营销URL)的URL数据集,需完成以下目标:

  1. 提取联盟营销URL中重复出现的特征字符串
  2. 筛选出仅(或基本仅)出现在联盟营销URL中的特征
  3. 基于上述特征实现大规模URL的自动标注
技术解决方案

以下基于R语言实现完整流程,适配你提供的数据集格式:

1. 数据预处理

先合并数据集并提取URL的查询参数部分(联盟营销特征大多集中在?之后的参数中):

# 合并两个数据集
da_combined <- rbind(da_affiliate, da_affiliate_no)

# 加载字符串处理工具包
library(stringr)

# 提取URL中?之后的查询参数部分,无参数则设为空字符串
da_combined$query_part <- str_extract(da_combined$url, "\\?(.*)$")
da_combined$query_part <- ifelse(is.na(da_combined$query_part), "", da_combined$query_part)

2. 提取联盟URL中的高频特征

方法一:提取高频查询参数键

联盟URL的查询参数键(如utm_source、aff_fcid)是最直接的特征:

# 定义函数:从查询字符串中提取所有参数键
extract_query_keys <- function(query_str) {
  if(query_str == "") return(character(0))
  pairs <- str_split(query_str, "&")[[1]]
  keys <- str_remove(pairs, "=.*$")
  return(keys)
}

# 提取所有联盟URL的参数键并统计频率
affiliate_keys <- unlist(lapply(da_affiliate$query_part, extract_query_keys))
key_freq <- table(affiliate_keys)
# 筛选出现次数≥2的高频键
high_freq_keys <- names(key_freq[key_freq >= 2])

方法二:提取重复子字符串(N-Gram)

若需更长的特征组合(如utm_medium=affiliate),可使用N-Gram方法:

library(tm)
library(RWeka)

# 生成3-8长度的子字符串(可根据需求调整长度范围)
tokenizer <- function(x) NGramTokenizer(x, Weka_control(min = 3, max = 8))
# 提取所有联盟URL的N-Gram并统计频率
aff_ngrams <- unlist(lapply(VCorpus(VectorSource(da_affiliate$url)), tokenizer))
ngram_freq <- table(aff_ngrams)
# 筛选出现次数≥2的高频N-Gram
high_freq_ngrams <- names(ngram_freq[ngram_freq >= 2])

3. 筛选专属联盟特征

过滤掉在非联盟URL中出现的特征,保留仅属于联盟URL的部分:

过滤参数键

# 提取非联盟URL的参数键
non_affiliate_keys <- unlist(lapply(da_affiliate_no$query_part, extract_query_keys))
# 找出仅在联盟URL中出现的参数键
unique_aff_keys <- setdiff(high_freq_keys, non_affiliate_keys)

过滤N-Gram特征

# 提取非联盟URL的N-Gram
non_aff_ngrams <- unlist(lapply(VCorpus(VectorSource(da_affiliate_no$url)), tokenizer))
# 找出仅在联盟URL中出现的N-Gram,同时过滤掉随机长数字串
unique_aff_ngrams <- setdiff(high_freq_ngrams, non_aff_ngrams)
unique_aff_ngrams <- unique_aff_ngrams[!str_detect(unique_aff_ngrams, "\\d{5,}")]

4. 构建自动标注函数

基于筛选出的特征,编写函数自动判断URL是否为联盟营销URL:

# 定义标注函数
is_affiliate <- function(url) {
  query_part <- str_extract(url, "\\?(.*)$")
  query_part <- ifelse(is.na(query_part), "", query_part)
  
  # 检查是否包含专属参数键
  has_key <- any(str_detect(query_part, paste0("^|&", unique_aff_keys, "=")))
  # 检查是否包含专属N-Gram特征
  has_ngram <- any(str_detect(url, unique_aff_ngrams))
  
  # 满足任一条件则标记为联盟URL
  return(as.integer(has_key || has_ngram))
}

# 测试示例
test_urls <- c(
  "https://example.com/product?utm_source=affiliate",
  "https://example.com/normal-product"
)
sapply(test_urls, is_affiliate)

5. 优化与迭代

  • 规则补充:可添加联盟跳转域名检测(如t.adcell.com、mydealz.digidip.net),进一步提升准确率
  • 模型增强:若规则标注存在模糊案例,可基于提取的特征训练朴素贝叶斯、随机森林等分类模型
  • 效果验证:用标注集计算混淆矩阵,调整特征筛选阈值(如提高高频特征的出现次数要求)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 00:42:25