三十五、利用sonataadmin做样本标注
发布日期:2021-10-02 10:16:18 浏览次数:9 分类:技术文章

本文共 2804 字,大约阅读时间需要 9 分钟。


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

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

创建CrawlPage实体

 

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

省略的部分是getter和setter

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

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

 

创建CrawlPage管理类

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

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

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

来生效数据库表

 

灌入微信公众号网页数据

 

如果还没有抓取公众号文章,请见《》

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

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

 

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

 

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

转载地址:https://blog.csdn.net/jiangjingxuan/article/details/54729061 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:三十六、对微信公众号文章做样本标注与特征提取
下一篇:三十四、基于python的高效中文文本切词

发表评论

最新留言

很好
[***.229.124.182]2024年04月06日 05时36分45秒