Skip to content

XinSong/Variant_Detect

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

1.背景
我国《商标法》第七章第五十二条规定:未经商标注册人的许可,在同一种商品或类似商品上使用与其注册商标相同的商标的行为,属于侵犯注册商标专用权。
目前风控系统内已经已有的商标检测模块,能够检测出创意内包含的商标,从而拒绝该创意。部分广告主为了规避商标检测模块,采用了同注册商标字音/字形相近的字词来伪装成目标商标,这违反了我国《商标法》第七章第五十二条,不仅使得公司承担了法律上的风险,而且低劣的广告创意有损公司形象。
为了解决上述问题,有必要对物料库内的已有的和未来的创意进行排查,下线包含商标变体的违规创意。

2. 名词解释
商标原体: 指的是商标变体所模拟/伪装的目标商标。
商标变体: 指得是广告主为了规避商标检测模块,采用具有相似字音/字形的字词来模拟/伪装目标商标原体,所形成的变体商标。

3. 变体类型
通过对商标变体数据进行调研发现,主要分为字面颠倒变体、插入型变体、形似字变体、音字混合变体、同音字变体、声母变体、谐音变体和怪异字变体(也可称之为繁体字变体),一共8种类型变体。

变体类型|变体举例
————————————————————————
自序颠倒变体|天涯明月刀 VS 天涯刀月明
————————————————————————
插入型变体|刀塔传奇 VS 刀塔之传奇
————————————————————————
音字混合变体|酷我音乐 VS 酷wo音乐
————————————————————————
同音字变体|捕鱼达人 VS 捕渔达人
————————————————————————
声母变体|大天使之剑 VS 大T使之剑
————————————————————————
韵母(谐音)变体|太极熊猫 VS 太极熊喵
————————————————————————
形似字变体|秦时明月 VS 泰时明月
————————————————————————
怪异字变体|神途 VS 訷途
————————————————————————

4. 设计思路
从以上调研发现,大的方面上,变体主要有三种类型:字词顺序颠倒、字音相似、字形相似。本质上,在给定商标原体库的情形下,通过对创意进行切词、注音和词汇拼接,将创意转换为一个很长的word list,对该word list内的每个词,找到可能的商标原体,然后计算与该原体的距离,距离在某一范围内(在实际程序中,表现为字元数/字音/字形满足一定的规则),即视为该词为商标变体。

5. 各子模块设计
5.1 注音模块pinyin
  5.1.1 功能描述
    给定字符串进行注音,采用指定分隔符分隔注音。
	注意,对于字符串中的非汉字字符,会原样返回。
  5.1.2 对外接口
	get(s, delimiter=’’, encoding=’gbk’): 为=返回给定字符串s对应的拼音
	get_consonant(s, delimiter=’ ’, encoding=’gbk’): 取出给定字符串拼音的声母
	get_vowel(s, delimiter=’ ’, encoding=’gbk’): 取出给定字符串的韵母
  5.1.3 异常处理
	有可能会抛出解码异常。
  5.1.4 示例
	import pinyin
	pinyin.get(“我是中国人”)   //return “woshizhongguoren”
	pinyin.get_consonant(“我是中国人”) // return “w s z g r”
	pinyin.get_vowel(“我是中国人”)  //return “o i ong o en”

5.2 笔画模块stroke
  5.2.1 功能描述
	给定一个汉字串,返回该字符串的笔画编码。
  5.2.2 对外接口
	get(s, delimiter="", encoding='gbk'): 返回给定字符串s对应的笔画
	get_dist(charsA, charsB) : 返回两个字符串charsA和charsB对应的笔画序列的距离,这个距离在[0,1]之间,0表示两个字笔画完全相同,1表示完全不同。
  5.2.3 异常处理
	有可能会抛出解码异常。
  5.2.4 示例
	import stroke
	stroke.get('我')   // Return 'phshzpn'
	stroke.get_dist(“微言", "微信")  //Return 0.1
	stroke.get_dist("微亻言", "微信")  //Return 0

5.3 变体识别模块variant
  5.3.1 功能模块
	变体识别主体模块,传入给定的商标文件,返回一个特定的变体判别器对象;像变体判别器传入创意,返回(变体类型,商标原体,商标变体)的三元组。
  5.3.2 模块依赖
	依赖pinyin、stroke、util三个子模块。
  5.3.3 对外接口
	class VariantDetector(object):
		def __init__(self, brand_file):传入指定的商标文件,每行为一个商标
		def detect(self, original_idea): 变体识别主干算法,传入创意,返回(变体类型,商标原体,商标变体)的三元组
  5.3.3 示例
	import conf
	import variant
	detector = variant.VariantDetector(conf.YOUXI_BRAND_PATH)
	variant_type, original_brand, variant_brand = detector.detect(“太极熊喵是一款经典动作手游”)

About

商标变体识别

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages