解决上位词问题

本文介绍了作者在比赛中遇到的深度学习标签上位词问题,通过研究发现WordNet能有效解决该问题。使用ImageNet1K映射到Pascal VOC2007,通过广度优先搜索算法寻找上位词,并提供了相关的Python链表实现代码。
摘要由CSDN通过智能技术生成

前几日参加了一个比赛,比赛的结果还算不错,但是有一个问题一直没有解决,赛题希望开发一款调动志愿者进行深度学习训练样本标注的APP,由于我们的解决方案开放自定义输入,例如“金毛犬”和“狗”这样的标签,同一张图片在不同的深度学习任务中应该有不同的标签(例如2017年百度西交大数据比赛的狗分类和简单的猫狗分类),这两者标签都应该保留,但是如何让机器挖掘出这两个标签的上位词关系(比赛之前我一直不知道这叫上位词关系,一直以为这叫名词从属关系)。当时的解决方案是用Word2Vec,但是由于语料较少再加上本身Word2Vec的算法特性对于上位词并不友好,所以效果很差。这几天看了看ImageNet比赛的起源,看到了一个叫WordNet的词典,联想到了比赛的问题并解决之。WordNet不做介绍,网上可以直接搜索到。考虑到数据问题,我选择用ImageNet1K映射到Pascal VOC2007,即从ImageNet中寻找在Pascal VOC中的上位词。算法本身并不复杂,主要包括广度优先搜索,由于Python队列不能判断重复元素,构建链表模并重写了相关的方法。

链表的代码如下:

class Node():
    __slots__ = ['_item','_next']

    def __init__(self, item):
        self._item = item
        self._next = None

    def getItem(self):
        return self._item

    def getNext(self):
        return self._next

    def setNext(self, newnext):
        self._next = newnext

class list():
    def __init__(self):
        self._head = None
        self._size = 0

    def is_Empty(self):
        return self._size == 0

    def append(self, item):
        temp = Node(item)
        if self.is_Empty():
            self._head = temp
        else:
            current = self._head
            if current.getItem() == item:
                return
            while current.getNext()!=None:
                current = current.getNext()
                if current.getI
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值