三十五、利用sonataadmin做样本标注



要想实现对新发现的公众号文章做自动分类,需要对样本做训练,而样本属于哪一类别是需要我们做人工标注的,直接操作数据库非常不方便,我想到了我们的网站后台管理系统,直接把样本数据整合进来就可以方便标注了

请尊重原创,转载请注明来源网站www.shareditor.com以及原始链接地址

创建CrawlPage实体

 

在sonataadmin中每一张表都要对应一个Entity实体,也就是MVC里的model,因此我们在网站目录中创建src/AppBundle/Entity/CrawlPage.php,内容如下:

<?php

namespace AppBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * CrawlPage
 *
 * @ORM\Table()
 * @ORM\Entity
 */
class CrawlPage
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\Column(name="title", type="string", length=255, unique=true)
     */
    private $title;

    /**
     * @var string
     *
     * @ORM\Column(name="body", type="text")
     */
    private $body;

    /**
     * @var string
     *
     * @ORM\Column(name="content", type="text", nullable=true)
     */
    private $content;

    /**
     * @var \DateTime
     *
     * @ORM\Column(name="create_time", type="datetime")
     */
    private $createTime;

    /**
     * @var string
     *
     * @ORM\Column(name="source", type="string", length=255)
     */
    private $source;

    /**
     * @var string
     * @ORM\Column(name="isTec", type="string", length=8, options={"default": "0"})
     */
    private $isTec;

    /**
     * @var string
     * @ORM\Column(name="isSoup", type="string", length=8, options={"default": "0"})
     */
    private $isSoup;

    /**
     * @var string
     * @ORM\Column(name="isMR", type="string", length=8, options={"default": "0"})
     */
    private $isMR;

    /**
     * @var string
     * @ORM\Column(name="isMath", type="string", length=8, options={"default": "0"})
     */
    private $isMath;
……

省略的部分是getter和setter

这里面除了网页表本身的几个字段(title、body、content、createTime、source)之外,创建几个0-1标注字段:isTec(是否纯技术)、isSoup(是否鸡汤文)、isMR(是否机器学习)、isMath(是否数学),这个用来做分类标注

另外,我们为title添加了unique=true属性,为了保证表里的title是唯一key,避免重复写入数据。同时为几个标注字段添加了options={"default": "0"}选项,默认都是非选中

 

创建CrawlPage管理类

请尊重原创,转载请注明来源网站www.shareditor.com以及原始链接地址

为了在sonataadmin后台页面中方便标注数据,创建CrawlPage的管理类,创建src/AppBundle/Admin/CrawlPageAdmin.php文件,内容如下:

<?php

namespace AppBundle\Admin;

use Sonata\AdminBundle\Admin\Admin;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Form\FormMapper;
use Sonata\AdminBundle\Datagrid\DatagridMapper;

class CrawlPageAdmin extends Admin
{
    protected function configureFormFields(FormMapper $formMapper)
    {
        $formMapper
            //->tab('Post')
            ->with('Content', array('class' => 'col-md-9'))
            ->add('title', 'text')
            ->add('source', 'text')
            ->add('body', 'ckeditor', array('autoload' => true))
            ->add('create_time', 'sonata_type_date_picker', array(
                'format'=>'yyyy-MM-dd HH:mm:ss',
                'dp_default_date'        => date('Y-m-d H:i:s'),))
            ->end()

            ->with('Meta data', array('class' => 'col-md-3'))
            ->end();
    }

    protected function configureListFields(ListMapper $listMapper)
    {
        $listMapper
            ->addIdentifier('title')
            ->add('isTec', 'boolean', array('editable' => 'Yes'))
            ->add('isSoup', 'boolean', array('editable' => 'Yes'))
            ->add('isMR', 'boolean', array('editable' => 'Yes'))
            ->add('isMath', 'boolean', array('editable' => 'Yes'))
            ->add('source')
            ->add('createTime')
            ;
    }

    public function toString($object)
    {
        return $object instanceof BlogPost
            ? $object->getTitle()
            : 'Crawl Page'; // shown in the breadcrumb on the create view
    }

    protected function configureDatagridFilters(DatagridMapper $datagridMapper)
    {
        $datagridMapper
            ->add('title')
            ;
    }
}

注意这里的configureListFields方法中的

            ->add('isTec', 'boolean', array('editable' => 'Yes'))
            ->add('isSoup', 'boolean', array('editable' => 'Yes'))
            ->add('isMR', 'boolean', array('editable' => 'Yes'))
            ->add('isMath', 'boolean', array('editable' => 'Yes'))

使用boolean类型可以在列表页中通过ajax修改数据,这样就不必点开文章、修改、保存那么麻烦了

 

修改配置并生效

 

修改app/config/services.yml添加:

    admin.crawl_page:
        class: AppBundle\Admin\CrawlPageAdmin
        arguments: [~, AppBundle\Entity\CrawlPage, ~]
        tags:
            - { name: sonata.admin, manager_type: orm, label: Crawl page }

执行

php app/console doctrine:schema:update --force

来生效数据库表

 

灌入微信公众号网页数据

 

如果还没有抓取公众号文章,请见《教你成为全栈工程师(Full Stack Developer) 三十二-scrapy爬虫抓取网页写入mysql数据库

因为之前写入了一个单独的数据库,我们现在把这部分网页导入进来,执行sql语句:

insert into CrawlPage(title, create_time, source, body, content) select title, post_date, post_user, body, content from test.page;

 

打开后台管理页面看下效果:

 

现在可以直接点击“no”标签来标注数据啦

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 精灵标注助手是一款功能强大的标注工具,可以帮助用户快速高效地标注数据,更好地训练机器学习模型。其中,转换COCO样本的功能是该工具的重要功能之一。 COCO是指Microsoft Common Objects in Context,是目标检测、语义分割等计算机视觉领域的几个基准数据集之一。如果我们想要训练一个精准的机器学习模型,就需要收集尽可能多的标注数据。因此,将精灵标注助手中的数据转换成COCO格式可以更好地满足需求。 转换COCO样本的流程如下: 1. 导出标注数据。我们可以先在精灵标注助手中标注数据,然后导出成VOC或者YOLO格式的数据。 2. 将数据转换成COCO格式。我们可以使用工具软件将原始数据转换成COCO格式,生成JSON文件。转换后的数据包括图片的尺寸、类别、坐标等信息。 3. 导入COCO格式的数据集。我们可以使用深度学习框架如TensorFlow、PyTorch等,导入转换后的COCO格式的数据集。同时,还需要对数据集进行预处理、数据增强等操作,以提高模型的精度和泛化能力。 总的来说,转换COCO样本是精灵标注助手的一个重要功能,可以为机器学习从业者提供更全面、更准确的标注数据,进而使机器学习模型更加精准、高效。 ### 回答2: 精灵标注助手是一款非常好用的图像标注工具,可以帮助用户快速、准确地完成图像标注任务。如果需要将使用精灵标注助手标注样本转换成COCO格式,可以采取以下步骤: 1. 在精灵标注助手中导出标注结果,保存为XML、JSON或YOLO格式的文件。 2. 使用转换工具将标注结果转换为COCO格式。目前市面上有很多免费的开源工具可以实现这个功能,例如labelme、labelbox等。 3. 上传转换后的COCO样本到云端或者本地服务器上,开始进一步的数据处理和训练模型。可以使用开源框架如Tensorflow、Keras、PyTorch等进行模型的搭建和训练。 值得注意的是,在标注样本时,应该充分考虑到COCO格式的要求,如标注对象的类别、位置、大小等属性,以确保最终转换后的样本质量和准确性。同时,精灵标注助手也提供了一些便捷的标注工具,如矩形、多边形、点等,可根据具体需求进行选择和使用。通过合理利用这些功能,可以大大提高标注效率和样本质量。 ### 回答3: 精灵标注助手是一款优秀的图像标注工具,可以帮助用户快速对图像进行标注。用户可以在图像上标注出目标的位置和属性,精灵标注助手会将这些标注信息保存下来。如果用户需要将标注信息转换为COCO数据集的样本,也可以使用精灵标注助手。 将标注信息转为COCO样本的过程比较简单。首先,用户需要导入标注信息,并选择需要转换为COCO样本标注信息。然后,用户需要选择生成COCO样本的路径,并设置COCO样本的文件名。最后,用户点击“转换”按钮即可生成COCO样本。 生成的COCO样本文件包括一个JSON格式的文件和一系列图像文件。JSON文件包含了每个图像的基本信息和目标的标注信息,可以直接用于训练神经网络模型。图像文件则是根据JSON文件中的路径信息进行生成。 总之,使用精灵标注助手可以帮助用户快速将标注信息转为COCO样本,方便用户进行图像识别和目标检测等任务的训练。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值