在构建一些行业或者事物的模型的时候,需要预先设计好相关的字段或属性,举个例子,比如搭建飞机机型的数据库模型时,它可能有的字段有“重量”、“长度”、“机翼长度”、“动力模式”等等,不过在设定这些字段时,一般需要对该行业或者这类事物有一定的了解,所以后面就在构思一种可以通用的、比较快能查询一个行业的常见属性的方法,后面发现使用一些百科信息的属性来构建这样一个项目是可行,实施之后也能达到不错的效果,下面就分享一下实现步骤。

思路

1、收集一定数量的该行业/类目的根词,一般15-20个根词获得的属性有较好的通用性
以下为一些示例:
(1)、水果类目:苹果、梨子、西瓜、榴莲、葡萄、香蕉....
(2)、大学类目:清华大学、北京大学、复旦大学、浙江大学、中山大学...
(3)、恐龙类目:霸王龙、翼龙、剑龙、三角龙、异齿龙、迅猛龙...
2、然后根据整理好的行业根词,在百度百科中都查询一遍,并收集整理每个百科页面的属性,这里仅保存属性名,不保存属性值,输出一个属性名的list。 属性示例
3、将所有的属性名合并到一个list当中,然后按照出现次数从大到小排序,这样就可以得到一个比较普遍的属性列表了。

操作

1、获取单个根词的属性
编写一个百度百科的爬虫函数,传入参数为关键词,输出该百科的属性名列表,可以多加一个参数用于限制结果,因为有些百度是重名但是意思不同的。

import requests
from lxml import etree

def getBaikeAttrs(keyword,limit=[]):
    #...
    return attr_list

输出结果类似下方

2、合并一系列根词的属性,并按照出现次数排序
编写一个查询一系列根词的函数,然后将获取的所有属性合并,接着使用python的内置函数Counter计算各类属性的出现次数,然后根据出现次数排序,接着将属性与出现频率组合为一个dict返回。

#获取一系列根词的属性
def getTypeAttrs(keywords,limit=[]):
    all_attrs=[]
    for keyword in keywords:
        try:
            attrs=getBaikeAttrs(keyword,limit)
            all_attrs+=attrs
        except:
            pass

    return all_attrs


#按照出现频次排序返回
def sortTypeAttrs(keywords,limit=[]):
    all_attrs=getTypeAttrs(keywords,limit)
    all_attrs_count=Counter(all_attrs)
    all_attrs_sorted=sorted(all_attrs_count.items(),key=lambda x:x[1],reverse=True)
    all_attrs
    return all_attrs_sorted

输出的效果类似下方,这样我们就可以挑选一些频次较高的类目作为模型的字段/属性了

常见事物属性整理

下面整理一些常见事物的属性

恐龙类目属性

属性 属性 属性 属性
拉丁学名
亚目 亚门
亚纲 中文名
别名 中文学名 分布区域 二名法
拉丁名 分类位置 模式种 时代
命名人 亚科 - -

大学类目属性

属性 属性 属性 属性
中文名 外文名 简称 创办时间
办学性质 学校类别 学校特色 主管部门
现任领导 专职院士数 本科专业 硕士点
博士点 博士后 院系设置 校庆日
地址 院校代码 主要奖项 国家重点学科
知名校友 校训 校歌 创办人
占地面积 - - -

中国朝代属性

属性 属性 属性 属性
中文名 外文名 主要城市 货币
主要民族 时间范围 人口数量 别名
都城 语种 开创者 帝王
国土面积 首都 政治体制 国家领袖
官方语言 所属时期 主要宗教 选官制度
所属洲 历史贡献 著名人物 时间
朝代 政治制度 军事制度 中枢机构
监察机构 - - -

其他

了解事物属性、行业属性对于构建行业模型、挖掘行业需求都有一定的作用。比如需要构建一个行业网站,那么使用常见的属性作为模型字段,在后续的功能设计上都能产生作用,最简单的就是可以用于字段筛选,也是最直观的作用。

评论

  • 最新随笔

  • 这个桥去年来看的时候貌似还没有
  • 中秋经典BGM:滴滴滴
  • 猫确实喜欢在各种犄角旮旯里睡觉
  • 尝试让DALLE生成一些连续的精灵图,让gpt帮忙生成一些提示词,如果能稳定输出的话就很强大了。
    让gpt帮忙生成的DALLE提示词
    "Generate a pixel art sprite sheet of a character walking in four directions (north, south, east, west) in a retro video game style."
    "Create a series of pixel art frames showing a character performing different actions like walking, running, jumping, and attacking in a classic 2D game aesthetic."
  • 路过别人山庄的门口,被一条大黑狗边叫边追过来,幸好骑电动车,不然还不一定跑得过,哈哈哈哈哈哈哈哈哈哈。
  • 最近两周也没咋出去玩,主要也是觉得没啥好玩的(笑哭)。看完布莱恩阿瑟的《复杂经济学》后,里面那个酒吧问题勾起我的兴趣,最近空了就花了些时间实现个python版本,顺便搞了篇博文,很享受这种新知识能和已有知识碰撞的感觉。(配张前段时间拍的图片,梧桐山门口前面那条路,挺漂亮的)
  • 盐田港夜景
  • 为啥这猫总喜欢喝杯子里的水