粉丝1460获赞2728

然后我们主要采集的话,就是这一个股票相关的一个数据内容啊,数据都能爬下来吗?我们就爬自己想要的就行了,对吧?你想要什么数据,你就采集什么数据就行了。好吧,那我们要实现这一个网站的一个数据采集的话,我们按照基本的流程去走啊,就是我们爬从 实现的一个基本流程,这个流程的话分为两步啊,第一个的话是数据来源分析,第二个呢是代码的实现步骤。 数据来源分析里面的话分为两步啊,一个是明确需求,还有一个的话是抓包分析代码步骤呢,分为四步,发送请求、获取数据、解析数据,还有我们的保存数据。 这个话就是我们的一个基本的一个流程啊。首先的话啊,这个明确需求呢,就是明确采集的网站 以及数据内容,就是你要确定,对吧?网址是哪一个,然后数据是哪一个, 打采集哪一个网站上面的什么数据,网址的话刚刚已经给大家发过了啊,就这个就雪球的股票相关的一些数据信息,那网址的话就它数据呢就是股票信息。 ok, 确定之后的话我们第二步啊抓包,因为你找到你,你要确定你要采集这一个网站的数据之后的话,你要去分析一下我们所想要的这些数据内容,它是在什么地方。 那这个抓包分析呢,就是通过浏览器的开发者工具分析对应的数据位置 啊,我们今天这一个网站的话,你只需要做两步操作,你就可以找到它的一个数据接口了。好吧,第两步啊,第一个呢,在浏览器的 页面中按一个 f 一 十二打开开发者工具,先把我们开发者工具打开啊,就你直接在我们要采集的这个页面啊,采集数据的这个页面,你按一个什么呢? f 一 十二 打开我们这个开播的工具,打开之后的话,呃,他这里的话有个 bug 啊,有个 bug 无所谓啊,我们给他过掉就行了,直接点这个过了 bug 就 行了,对吧?我们就不要他了。 ok 啊,就直接过一下就可以了, 先把这个断联给他取消掉。然后呢啊,然后的话我们接下来啊,接下来的话我们就直接点第二页,或者说你点下一页都可以啊,然后第二步的话就点点击下页,或者说第二页啊,都可以啊,都可以, 我们点一下好,点了之后的话你会发现这里是不是加载了一个接口出来,对不对?这个的话啊,就是我们的一个数据接口,它的话就是咱们的一个数据接口,我们可以看一下,我们点进去看下它的一个数据内容。 那这里面的话一共有多少条?零到二十九,就相当于我们这个页面的话三十条股票信息啊,三十条股票信息。那么第一个,那第一个的话是这个建设机械啊,建设机械我们来看一下是不是的 打是的吧,啊,对应的建设机械,然后他相关的一些数据信息啊,还有他的一个股票的代码,对不对啊?都是有的,所以我们想要的数据的话就是在哪个呢?在这个接口里面啊,这个话就是就是他的一个数据接口, 我们的数据接口非常快啊,你只要按照我们这两步来就行了啊,按照这两步来,那你就可以。呃,找到我们数据所在的这个位置,找到之后呢,我们去写代码也很简单,按照这四步,第一个发送请求, 发送请求的话,它是模拟浏览器对于我们的 url 地址发送请求, 获取数据的话,那就是获取啊,服务器返回的响应数据,解析数据呢,那就是提取我们需要的数据内容,把我们想要的东西给它拿出来就可以了。保存的话,那就是把提取出来的数据 保存到本地文件中就可以了。哇,这是按照这基本的四个步骤啊,基本的四个步骤,好,我们来给大家讲一下啊,就按照这四个步骤给大家去写代码。 首先的话发送请求呢,它分为三个基本点,第一个是模拟浏览器,第二个请求网址,第三个发送请求啊,就这三个点,像咱们的这个模拟浏览器啊 啊,这个模拟软件的话,我们使用的是什么呢?使用的就是请求头中的参数内容进行的模拟伪装。请求头在哪里呢?我们刚刚是不是找到了这个接口, 在这个标头下面他有个请求标头,这个请求标头里面的话就是我们用来模拟伪装的相关参数,它里面有很多啊,有很多我们常用的话, 常用的一个,呃,参数啊,就是 cookie, reform, 还有 uv 啊,就这三个是比较常用的, 所以我们直接把这三个字段给它复制过来,放到代码里面就可以了。但需要注意的一个点就是什么呢?我们复制的参数在代码中需要使用一个字典接收它的参数,所以我们你可以看一下我们是构建成一个什么样子啊?你比如我们把这个 cookie 好这些给大家复制过来。好,我们这里创建一个字典,咱们粘贴啊,给大家构建成中字典的形式,就留什么呢?留这三个就可以了啊。留这三个 cookie 的 话是什么东西呢?用户信息常用于检测是否有 登录账号,登录与否的话都有什么呢?都有这个 cookie 的, 你没登录账号的话,它也会有这个 cookie 的。 然后这个 reform 的 话就是我们的防盗链。 防盗链是什么东西呢?就是我们啊请求网址从哪里跳转过来的?从哪里啊?跳转过来的?从哪来的啊?从哪来的?好吧,就你就可以这么去理解。然后我们这个 us agent 的 话,它就是我们的用户代理, 表示浏览器和设备的基本身份信息。那我们加这三个东西的话,就可以做一个简单的模拟伪装啊,他的话也是一种什么呢?简单的一个反反爬手段啊, 好一个简单的反反法手段, ok 吧?啊?这你就直接复制就行了。然后我们第二个请求网址,这个网址呢就是我们刚刚抓包找到的那个链接啊,抓包分析找到的数据链接地址,直接复制就行了, 对不对?我们可以直接把这个网址干嘛呢?复制,然后粘贴月 l, 等于它好复制粘贴就可以了。那发送请求的话, 这个的话是使用什么呢?第三方的一个模块 request 啊,通过这个模块去进行请求的,它是个第三方,也就是我们 python 不 自带的,需要我们去进行安装,所以第一个的话我们得先安装这个模块,其次再导入模块, 安装的话,你就文件加 r 键,输入 cmd, 点击确定输入安装命令就可以了。 p i p install request 进行安装。好吧,安装好了之后的话,我们导入的话,在我们的一个代码当中啊,导入数据请求模块, import request 直接导入进来啊,这样就可以了。然后我们去发送请求的话,还需要注意两个小的细节,一个是它的一个请求方法,还有一个的话就请求的一个参数, 方法的话,我们可以在这里看得到啊,它会告诉我们它的请求方法是一个 get 请求, 对不对?哎?它是有 get 请求,那么 get 请求的话,它是不是有个参数?它的话叫做什么呢?它叫做查询制服串参数,我们简称的话叫做查询参数啊, 这个参数的话,它是直接在链接当中就有的啊,也就是我们链接中问号后面的内容, 你看一下我们这个链接,它这里是不是有个问号,问号后面的话就是属于它的一个什么呢?那这句话就属于它的一个查询制服串参数,所以我们这个参数是直接在链接里面的,所以我们去用 get 请求的话,就有两种写法啊,有两种写法,第一个的话就直接请求我们的链接地址, 第二种的话就是额外构建我们的一个什么查询参数,进行一个请求。如果说我们想要直接请求的话,我们怎么去写代码呢 啊?如果直接请求,但我们现在已经链接有了,那我们只需要通过 request 点上它是 get 嘛?那我们就通过 get 的 方法把我们相应的参数传进去, 再用一个变量名接收就可以了啊,你就如果说要直接请求的话,就这么写啊,直接这么写啊,如果我们想要额外构建的话啊, 额外构建一个查询查询参数,就相当于我们问号后面的内容,单独用一个什么呢?字典去接收,就问号后面这段,我给他单独用个字典去接收 长行参数 performs, 咱们可以去复制啊,在这个载盒里面可以复制的,那配置二啊, cs 三零,然后这些的话,其实对应的就是这边的,我们可以在这边复制的话会更方便一些。 那我们构建一下那,那我们请求的时候,哎,就需要给它进行一个传递了, 这个的话就是额外啊,就是额外构建我们这个查询参数进行请求,仅此两种方式的话,你可以选。第二种的话,就是对于我们每一个参数看起来更方便更直接啊,更可观一些 啊,这两种的话都行啊,都行。好吧,这是我们第一步啊,第一个发送请求的基本代码内容,所以我们这个发送请求的代码的话,基本上是什么呢?只要啊相关的一个代码内容,只要你抓包 分析找到了数据所在的一个位置,相关的一些参数内容都可以直接在浏览器中进行一个复制, 那都是可以去复制的。所以说我们大家的话,你只要知道这个东西它是从哪里来的,然后怎么去,呃,就是从哪个地方来的,然后复制过来之后构建一个什么样的一个格式就行了,好吧, ok 啊,这句话就是我们第一步啊,然后第二步获取数据,获取数据的话,它其实也挺简单的,我们这边获取数据的话,它有三个基本的啊,三个基本,一个是 response 点 tax, 还有一个点 callback 啊,就这三个 对不对啊?这个点 tax 的 话是获取响应的文本数据, 返回的是一个自创啊,就是你获取文本的话,它返回的数据类型是一个自创,如果说你获取是节省的话,它这个,呃,获取节省数据嘛?返回的是一个字典,或者说是一个列表啊,大多数是一个字典咯,然后这个的话是获取它的一个二进字数据返回的话,那肯定也是个二进字。 这三种数据的获取,我们在什么情况下选择对应的呢?要根据实际我们这个响应的数据来啊,根据这个响应的来,懂了吗?啊?首先的话,我们这个点 tax 的 话 啊,点 tax 的 话,它是什么呢?它获取二阶代码,一般是用于像获取图片、视频、音频或说特定格式文件 内容。那什么叫特定格式文件呢? g i p p s d pdf 啊,这种是比较特殊的一个格式,就是你比如获取图片的内容啊,获取视频内容啊,获取音频的内容啊,我们都是获取它的一个二定制,然后用于啊,基本上就是用于什么呢? 常用于数据保存,就你获取二定制数据,然后进行保存,懂了吧?你得是特定的这种数据啊,一般会这种,然后我们节省的话,它也会有一点特殊,就是你必须是完整或者说是标准的节省数据格式, 否则啊会出现代码错, 那就是像我们字典的那种形式,或者说列表的一个形式啊,得是完整的啊,得是完整的啊,不然的话就报错。 那像我们这个 tax 呢,就是任何时候都可以去获取文本,任何情况下都可以获取文本数据。 就如果说是接收数据的话,你获取的是文本,返回的就是字串了,他就不是字典或列表,而是个字串了。那如果说是那种啊,二进制数据打,就比如说图片数据,你要获取的是文本的话,那返回的就是乱码 啊,无论说是图片啊,视频、音频,如果说你获取的是文本的话,他就会变成一个乱码啊,变成一个乱码,懂了吧?啊?所以说按照我们这三种对应的一个情况,你看一下我们的响应数据是什么样子的, 很明显它是一个什么呢?字典的一个样子嘛,对不对?是这种花括号包裹起来的,是不是?所以说我们,哎,在这个地方的话,那就是获取响应的接收数据,那么接收 data, 用个变量接受一下 response, 点上一个接收,然后 print 打印一下啊,查看一下我们的一个数据返回情况, 那,那这样的话,我们的一个股票相关的数据信息,哎,他就出来了,理解了没有啊?这个的话就是我们前两步啊,做的一个基本操作,就是我们请求和响应的一个基本的一个内容啊,那我们接下来的话,我们要去解析数据, 解析数据的话,我们刚刚在获取数据的时候,我们获取是什么?获取是接收,对不对?他返回的是一个什么?返回的是个字典, 返回字典的话,他既然是个字典数据,我们要去对于字典数据进行取值,那肯定是用的字典取值的方法嘛,对不对?那肯定就是字典取值的一个方法,字典取值的话也就是键值,对,取值,根据冒号左边的内容 提取冒号右边的内容,左边的话就是他的键啊, 右边的话就是它的值啊,间接推值。但是呢,我们的一个 jason 的 一个格式的话,它是多层嵌套的, 所以说需要一层一层进行一个提取啊,一层一层进行提取啊,什么意思?我们来看到玉兰这里就相当于我们最开始所得到的数据的话,它是一个字典,但这个字典的话,它有三层啊,这是个字典, 对,它有三层啊,三个键对,一个是 data 对 应的一个字典,一个是这 call 的 对应的零,还有一个这个 arrow 对 应的一个空格啊,对应的空的,对不对?啊?那我们想要的数据在哪里?我们想要的数据是不是在这个 data 里面,对吧?就是这个 data 对 应的这这一团那里面。所以说我们首先的话, 那字典取值提取什么呢?提取我们股票信息所在的列表, 先取 data 啊,取了 data 之后,它返回冒号右边的内容,也就是展开了这个内容,那就这个就是我们冒号右边的这个字典的话,它又分成了三两个箭队,一个是 content, 一个是 list, 对 不对?又分成了这两个,我们想要的数据在哪?在这个 list 里面对不对?对应的这个列表,这列表里面就包含我们的数据,所以我们这里直接取这个 list 就 可以了, 那直接取这个 list, 那 我们用个 l i s 去接收,那就相当于我们把这个列表给它取出来了,但列表取出来的话,它里面总共包含了什么呢? 包含了三十条股票数据,我们需要把这股票数据一个一个单独拎出来,所以说我们得用到一个负循环变量 提取列表里面的元素 for l i in, 我 们的什么 l i s, 这样的话我们就相当于什么呢?把这些股票啊,单独一个一个往外拎了啊?单独一个个往外拿出来了,看到没有? 是不是啊?一个个往外拿了,好,那我们现在的话啊,那我们现在我们要去取里面的数据,我们在这个地方的话,我们使用的是一个 printer 打印, 用 print 打印的话,你会发现我们这个数据它是一个什么呢?在一行里面不利于我们去查看每一个数据它所对应的一个箭队,所以我们这边为了方便取值的话可以干嘛呢?使用格式化输出的一个模块, 而且我们只有打印一个就行了,我们用个 pprint 去打印, break 一下来再晕写, ok, 那 你看到没有?这样的话,我们的数据是不是看起来更加方便?每一个箭矢队是不是更加明显?是不是啊?所以说我们接下来的话去取值的话,我只需要根据他的这里的,根据这里的情况,我们一个个去提取就可以了 啊?一个个去提取,那比如说啊,像我们的一个什么呢?股票代码, 股票代码对应的是哪一个? s h, s h, 那 这个话就股票代码,然后我们的股票名称 名称是什么?建设机械,那那对不对?然后当前价格, 当前价的话是四块五毛二,四点五二。那就这个啊,这个是当前价格让我们涨跌额啊,涨了我们的一个四毛钱,那这个话是涨跌额,零点一四, ok, 然后我们涨跌的一个幅度, 涨跌幅度的话是九点九五啊,九点九五。九点九五在哪里?我们来看一下。九点九五在哪里?哎,这不在这里,那百分之啊,九点九五, 对不对啊?这是涨跌的一个幅度啊,你可以给他加个百分比啊,你可以给他加,对不对?但是我们都知道他是一个百分之多少啊?然后年初至年金啊,年初至今,年初至今的话是涨了百分之。十点七六啊,十点七六在哪里 啊?时间记录是不是这里? ok, 那 我们继续成交,成交量,成交量是一点二八亿啊,一二八开头的一二八, 一点二八,一点二八一,那这个是吧?这个话就是成交量。然后我们那个成交额呢?成交额的话是五点六七啊,五点六七 啊,五点六七的话它是四舍五入啊,这是五点六九啊,五点六九,五点六九,也不对啊,它是五点六七啊,应该是七啊, 对不对啊?那就应该是这个啊,五点六六,对不对?五点六六。那这个的话应该就是他翻一下那金额嘛?成交金额啊,成交额, ok, 换手率, 换手率的话是十点二一,嗯,十点二一在哪里 看一下啊?十点二一,好,这里 好。然后我们的市盈率, 市盈率的话它这个叫什么? ttm 的, 我们就给它写一样的啊, ttm 啊,啊? ttm 是 个空的啊,是空的话我们暂时不知道是是哪一个?暂时不知道啊,我们先不写,然后我们的股息率的话,我们也不知道是哪一个,因为它也是空的,然后我们市值, 市值的话是五十六、五六九点四,五六九点四五六九点四啊,这个,这个话应该是市值,对吧?流通市值嘛,对不对? ok, 好,我们这个市盈率和这个什么呢?股息率的话我们在这个地方看不到啊,就不知道具体是哪一个,对不对?然后它里面有两个嫩。那,那这个不就是利息吗?收息率,那这个话应该就是什么 啊?嗯,不知道啊,那既然看不出来了,哎,我给他关掉干嘛啊?如果说你看不出来的话,没关系,我们可以找第二条啊,可以看第二条,因为第二条数据的话是有的啊,所以说我们可以取第二条的啊,取第二条的,我们来看下第二条。 那么单独看第二条的,因为第二条数据它是有的嘛?对,第二条数据的话,它的市盈率是什么啊?两百二百二十四, 二百二十四 啊,这个 啊,他是四舍五入的啊,四舍五入的,然后这里是一三六啊,他这里是一四,他四舍五入的,对不对?那我们这个是市盈率,然后股息率是零点二七,零点二七,哎,我搜一下吧, 还有零点二七没有,那零点二六呢?因为他如果说四舍五入的话,那有个零点二六啊,那就这个啊, ok 啊,这样的话啊,我们就可以把咱们呢这个股票相关的一个数据信息就都拿到了啊,就这这一页的啊,这一整页的股票相关数据信息就全部都获取出来了, 没问题吧?那这个是不是很简单啊?很简单吧,就是字典取值的一个方式,去取就可以了。好吧,这是我们的一个第三步啊,解析数据, 那么已经把数据拿了之后的话,我们要去做保存的话,保存数据呢?它是一个固定写法,我们一般的话正常情况是保存到表格文件中 啊, csv 或者说 excel 啊,都可以打 csv 或 excel 都行啊,都是固定的写法啊,那比如我们导保存 csv 的 话,那么导入一个什么呢? csv 的 一个模块 import csv, 首先创建一个文件对象 f 等于 open data 点 c s b model, model 的 话是 w 啊,写入,然后我们纽奈, ok, 我 们使用字典写入的方法 f 加上我们的一个字段名啊,这个字段名的话就使用什么呢?使用我们这个字典里面的键就可以了,我们直接给它复制过去啊,复制之后我们进行一个替换, 冒号点心,逗号替换一下, ok, 那 c s v write, 然后这边的话我们写入表头 and, 然后在这里的话,我们再写入数据 就可以了啊,这个的话就是我们基本的一个数据保存的一个方法啊,它是固定的,是这么去写的。固定的啊, 那下面的话是我们的数据迭梯,让我们写入数据 c s v write, 点上 write room 迭梯啊,这个 fill ness 的 话啊,它就使用了什么呢? 使用是 d a t 中的键,就是我们在这个地方你取了哪些数据,你这里就写什么东西就可以了啊,就是固定的一个写法,就这样子的。那你看一下啊,我们现在这里的话是一个什么呢啊?是一个空的,只有那我们运行一下代码, 它就会生成一个点 c、 s、 v 的 一个文件,它会把我们的数据直接保存到这一个表格文件当中啊?直接保存出来, 看懂了吗?好,这个的话就是我们基本的一个操作啊,也是我们做爬虫的一个基本流程。然后我们现在要做一个批量的数据采集的话啊,做一个批量的 批量采集数据呢?它就是分析我们链接的变化规律啊。请求链接的变化规律, 就我们现在这个的话是第二页啊,这是第二页的第二的链接啊。好,我们第一页的链接长啥样?给大家看一下啊?这个的话是第一页的, 第一页、第二页, 哎,然后我们第三页啊,你就看他啊,翻页之间啊,就不同的页码之间,他的这个链接有哪里不一样 啊?哪个地方不一样?你对比一下这个链接嘛,哪个地方不一样?那不就是这个配置吗? 是不是第一页是一,第二页是二,第三页是三,那么第四页肯定就是四,第五页肯定就是五了,对不对?所以我们只需要构建一个循环就可以了,构建一个循环,构建一个循环翻译 for page in。 我 们的什么 render, 你 要采集多少页你就写多少啊。你比如说你要采集十页,那你就写个十一啊,你要采集二十页,你就写个二十一。 对,然后我们打印一下啊, print 正在我们就采集前十页啊,第几页的数据内容, 那我们把这个配置给它进行一个替换。嗯,它是字母串的话,我也给个字母串吧,其实给个整数也行。来我们运行一下, 第一页、第二页,第三页,第四页,第五页,第六页,第七页,第八页,第九页,第十页。 ok, 采集完了,大采集完了啊,这是我们前十页的一个股票数据信息,一共是三百条。 就这么快啊?就这么快?当你写好代码之后的话,我们要去采集这些数据的话,就这么快。它总基有多少页呢?总基有五十七页。那你就写到你想爬完的话,你就爬第五十啊,爬到第五十七页就可以了, 明白了吗?好吧,看到效果的同学扣个六六六啊。看到效果的同学扣个六六。对,这是我们前十页啊翻译的一个采集,其实翻译的话有些时候相对也比较简单一些,他没有做加密处理的话可能还稍微容易一点。

有这样一个问题啊,在网上看到一张你非常喜欢的图,那如何快速、准确、全面的复刻它的风格,然后用在你自己想要画的主题上?很多人呢,只会问这张图好在哪里,但是效果呢,很差。实际上呢,一句提示词就可以搞定这个问题,并且还可以进行复用。这里有一个核心的思想,风格不是模糊的感觉, 而是精确的数据结构。而这句指令呢,可以提取画面的数据结构的 dna。 下面给大家分享这个风格克隆的三步法,帮你把任何一张图的 dna 提取出来。第一步,找到图片,扔给 ai, 打开 gmail, 三点零,或者是任何具有高级视觉识别能力的 ai 模型,比如说国内的豆包,我试了一下呢,也是可以实现的。然后呢,把那张你喜欢的参考图呢,直接扔进去。第二步,精准转移, 关键是输入这样一句指令,就一句话啊,请以 jason 结构化数据的形式呢,提取这种视觉风格,包括颜色、排版、构图 和特效。这里解释一下为什么要用 jason, 因为这是机器最听得懂的母语之一。通过这一步,你把一种模模糊糊的艺术感拆解成了 理性的配色、光影参数和构图逻辑。第三步,保存附用,把 ai 输出的这段代码呢保存下来,这就是这类风格图片的风格配置文件。下一次呢,当你想要这种画面感的时候呢,直接把这段数据注入给 ai, 它就能精准地复现这种氛围。 比如说,你可以这样用,你告诉 ai 以下面的风格,画一只下山的雪豹,然后你把前面保存的那个风格的 jason 格式参数粘贴进来,你就可以得到一张跟之前图片风格一样的雪豹下山的图片,非常的简单,但是呢非常管用,大家可以立刻动手去试试。

别再用 vlogop 做一对多查找了, filter 函数更简单!想根据姓名批量查找对应信息,你还在用 vlogop 吗?今天教你用 filter 函数,几步就能搞定,比 vlogop 简单太多。首先输入等于 filter 函数框,选需要提取的八列数据姓名到学历,按下 f 键,锁定这个区域,避免拖动填充时范围偏移。接着设置筛选条件, 姓名是筛选条件,选中姓名列数据,按下 f 四键,锁定这个区域,最后输入等于待查询的姓名单元格,按回车键,对应姓名的完整信息就会自动显示出来。选中已生成结果的单元格,拖动右下角的填充柄向下,就能一次性批量查询所有姓名的信息,你学会了吗?

重磅消息!特征提取领域取得重大突破!新成果荣登哪吒封面!研发出的创新型卷积模型 cwo 可,可同步处理数据的幅度与项微信息性能全面超越当前搜克模型,计算速度更是实现百分之三百的飞跃。在机器学习与深度学习领域,特征提取能够将繁杂的高维原始数据 巧妙转化为低维且更具表征力的特征空间,这一过程不仅大幅提升模型学习效率,降低计算成本,还能有效规避过轨和问题。作为近年来机器学习和深度学习的研究焦点,特征提取直接关乎模型的精度、计算效能与可解释性,也是优化模型效果的关键切入点。随着 mumbai ken 等前沿技术不断涌现, 以及何凯明等学者对扩散模型作为特征提取器的深入探索,为学术论文创新带来了无限可能。为帮助大家早日找到创新点,发出自己的鼎惠,我梳理了二十五种创新结合方案代码已赋,有需要的同学自取即可。

还在愁论文选题没方向?听我的,特征提取这条赛道现在冲刚刚好。目前关于特征提取的创新依旧是顶会顶憨的刚需,尤其是在数据稀缺、模型可解释性要求严苛或是需要融合多元信息的场景里,它的存在感直接拉满。在最新登上 nature 的 研究中, 提出了一种全新的卷积模型 qk, 它能同时处理数据的幅度和相位信息,在性能向远超现有搜泰模型计算速度更是提升了百分之三百。 再次印证了特征提取作为提升模型性能最直接的环节之一,始终是研究的热点。通过设计更优的特征提取方式,我们能显著提升模型的准确性、效率和可解释性。 无论是追求轻量化融合多尺度信息,还是结合食欲与频域特性,都是有效的优化思路。而且随着 mo、 map、 k、 a、 n 等新架构的出现,以及像何凯明这样的大佬对扩散模型做特征提取器的探讨, 都给我们的论文创新提供了无限可能。为了帮助大家紧跟前沿,我系统整理了十二种特征提取的前沿方法与配套实现,感兴趣可以分享给你。


大家好,如果你平时需要跟 ai 打交道,那你肯定明白,想从大语言模型的乱七八糟的输出里提取出干净能用的数据,那过程有多折磨人?不过今天咱们就来聊一个专门解决这个痛点的神器,它就是谷歌开源的一个新工具。 哈哈,这句话简直说到了所有开发者的心坎里对吧?他把从大模型里提取结构化数据的那种挣扎描写的真实淋漓尽致。那么这种挣扎到底是什么样的呢? 来看看左边这个是不是特别眼熟,为了处理模型返回的一段结果,我们得写上一大堆的正则表达式,还得套上好几层 track accept 来防止它出错。而右边呢,就是我们今天要聊的主角, linxract 带来的改变,你真正需要关心的可能就只有那一行核心的函数调用。 好,那我们具体聊聊这个让几乎每个 ai 开发者都头疼的脏火累火,到底都包括了哪些痛点? 哎,说起来都是泪呀,你辛辛苦苦的把一篇长文档手动切成一小块一小块,然后绞尽脑汁去解析那些千奇百怪的输出格式, 结果呢,你压根不知道提取出的这条数据到底是从原文哪句话来的,更别提了,整个脚本跑起来还特别慢,简直就是个噩梦循环。 但如果,我是说如果现在有一个工具就是专门为了搞定这整个麻烦流程而设地的呢?谷歌的这个开源库 land extract, 它的目标啊,就是成为那个完美的答案。 它的目标说白了其实很简单,就是提供一套可靠、能追错而且效率高的方法,帮你把任何乱七八糟的文本都变成你的应用程序,可以直接使用的干净的结构化数据。 你看这三行代码就完美全释了他的核心理念,第一步,定义你的任务,第二步,运行提尺,第三步,把结果格式化出来,检查一下, 就是这么简单,从此以后跟那些复杂的正则表达式说再见吧。听起来很棒,对吧?那他具体是怎么做到能把我们前面提到的那五大痛点一个一个解决掉的呢?咱们来把它拆开看一看。 首先是那个最经典的问题,上下文空格不够用,你想想要处理一份上百页的 pdf 报告,这可怎么办? 这就是 long extract 的 第一个绝活,智能分块。它内置了一个很聪明的引擎,绝对不会粗暴地把一句话从中间咔的一下切开,它甚至还能让每一个小分块都能看到前面一小部分内容,这样上下文就不会断掉了。 好,下一个问题就是输出果式。我相信很多人都踩过这个坑,模型返回的结果可能外面包了一层 markdown, 或者在旁边加了一堆他自己的评论,甚至有时候生成的追损语法还有点小问题。 line extract 的 解析器能自动帮你把这些乱七八糟的格式都给清理干净,而且它还有一个特别聪明的功能,叫模糊对齐。 这是什么意思呢?就是说,就算大模型返回的内容跟原文的措辞不完全一样,比如换了个说法,他依然能非常精准的把这个信息跟原文对应,像可追溯性这一点真的直观重要。 你想啊,数据是提取出来了,但你敢直接用吗?万一出错了,你都不知道是原文哪里搞错了,这可不行。 嘿,要说可追溯溯 long extract 这一点就做得非常酷了。它提取出来的每一条数据都会被精确地标记出来源于原文的第几个字母到第几个字母。 然后你只要调用一下 visualize 这个函数,它就会生成一个可以交互的网页报告,在原文里把所有结果都高亮给你看,一目了然。 好,单个文档的问题解决了,那要是有成千上万份文档需要处理呢?总不能一份一份地等吧? 放心, lang extract 就是 为规模化处理而生的,它会自动地并行调用 api, 甚至还支持像 gemini 那 种成本更低的批量处理接口。这么一来,原来可能要跑好几个小时的货,现在几分钟就搞定了。 最后是模型的灵活性,这个也非常现实,你肯定不希望自己的代码被某一个模型或者某一个供应商给绑死,对吧?用 long extract 就 没这个烦恼。你想从谷歌的 gemini 换成 openai 的 gpt 四 o, 或者换成本地跑的 gem 模型,需要做什么? 很简单,改一个参数字母串就行了,剩下的所有底层逻辑他都帮你处理的妥妥当当。说了这么多优点,那用起来到底麻不麻烦呢?我可以告诉你,他的整个工作流程,简单到让你不敢相信。 你看,就这么三步,第一步,你写个提示词,再给一两个例子,告诉模型你想要什么格式的数据。第二步,调用 extract 函数,把你的文本、提示词和例子都传进去。 第三步,调用 visualize 函数,检查一下结果对不对,搞定。听到这儿你可能已经在想了,诶,这听着跟 lamb chain 或者 instructor 这些库好像有点像啊,它们到底有什么不一样? 观战的区别就在这儿,你看这个表格就很清楚了。校园 structure 这样的工具,它可能帮你解决了强制输出格式这一个点, 但 lan extract 解决的是整个端到端的流程,从自动方块儿到结果溯源,再到格式化检查这些功能它都是开相机用的,你什么都不用自己操心。 所以说, linuxract 它不只是又一个简单的大模型 api 封装,它是一个真正深入到数据提取这个具体场景,为了解决里面那些最普遍最痛苦的问题而专门设计的生产力工具。 它把一个原来非常复杂,需要大量手动操作的过程简化成了短短几行代码,这就把开发者给解放出来了,可以去关注那些更重要、更有创造性的问题。 那么这就给我们留下了一个很有意思的问题去思考,当这个脏活被解决了之后,下一个需要我们去攻克的脏活又会是什么呢?