-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathReadme
80 lines (72 loc) · 5.01 KB
/
Readme
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
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(“太极熊喵是一款经典动作手游”)