精华内容
下载资源
问答
  • 【MySQL】mysql文本类型, 长文本
    千次阅读
    2021-12-11 23:09:03

    text类型

    • tinytext : 可存储256字节文本数据,适合超短文本
    • text : 可存储64kb文本数据,适合短文本
    • mediumtext : 可存储16MB文本数据, 适合长文本
    • longtext : 可存储4GB文本,适合超长文本
    更多相关内容
  • 批输入物料基础数据长文本, SAP源程序
  • mysql 存储长文本

    千次阅读 2021-03-04 00:53:35
    可以使用TEXT,BLOB俩种类型来存储长文本。1. TEXTTEXT有4有类型:TINYTEXT 256bytesTEXT 64kbMEDIUMTEXT 16MbLONGTEXT 4GB使用注解@Lob@Basic(fetch=FetchType.LAZY)@Column(columnDefinition="TEXT",n...

    在写项目时,需要把文章中的图文存储到mysql中数据库中,查了一下>可以使用TEXT,BLOB俩种类型来存储长文本。

    1. TEXT

    TEXT有4有类型:

    TINYTEXT 256bytes

    TEXT 64kb

    MEDIUMTEXT 16Mb

    LONGTEXT 4GB

    使用注解

    @Lob

    @Basic(fetch=FetchType.LAZY)

    @Column(columnDefinition="TEXT",nullable=true)

    public String getContent() {

    return Content;

    }

    2. BLOB

    TINYBLOB

    BLOB、

    MEDIUMBLOB

    LONGBLOB

    blob 保存的是二进制数据,利用这个特性,可以把图片存储到数据库里面。text只能存储文本。

    使用注解

    @Lob

    @Basic(fetch=FetchType.LAZY)

    @Column(columnDefinition="BLOB",nullable=true)

    public String getContent() {

    return Content;

    }

    1. 我使用的是text的,因为blob存储的是二进制格式,所以长文本里面的搜有数据都是二进制数据,在上传图文的时候,传过来是String,保存起来,读取都需要转换,还有javaBean设计的时候也要把文本的类型弄成BLOB类型,在加上hibernate 4 ,生成blob对象还要LobHelper,各种麻烦,于是就使用text来存储。

    2 . 那么如何存储文章中的图片呢,我的处理是把文字与图片的地址都存储成text类型,使用特定的标签把图片地址包起来,然后在解析的时候,使用正则表达式把图片拿出来,在去服务器去访问。

    3. 当你把文章存进去之后,会发现使用 文章中包含 换行符 之后的文字都不见了,其实他里面的数据还是有的,为了方便我把换行符都换为了

    展开全文
  • 基于BERT的超长文本分类模型

    万次阅读 多人点赞 2020-04-11 23:00:29
    基于BERT的超长文本分类模型0.Abstract1.任务介绍数据集评估方法测试集 0.Abstract 本文实现了一个基于BERT+LSTM实现超长文本分类的模型, 评估方法使用准确率和F1 Score. 项目代码github地址: 1.任务介绍 用BERT做...

    0.Abstract

    本文实现了一个基于BERT+LSTM超长文本分类的模型, 评估方法使用准确率和F1 Score.
    项目代码github地址: https://github.com/neesetifa/bert_classification

    1.任务介绍

    用BERT做文本分类是一个比较常见的项目.
    但是众所周知BERT对于文本输入长度有限制. 对于超长文本的处理, 最简单暴力无脑高效的办法是直接截断, 就取开头这部分送入BERT. 但是也请别看不起这种做法, 往往最简单,最Naive的方法效果反而比一顿操作猛如虎 复杂模型来得好.

    这里多提一句为什么. 通常长文本的文章结构都比较明确, 文章前面一两段基本都是对于后面的概述. 所以等于作者已经帮你提取了文章大意, 所以直接取前面一部分理论上来说是有意义的.
    当然也有最新研究表明取文章中间部分效果也很不错. 在此不展开.

    本文实现的是一种基于HIERARCHICAL(级联)思想的做法, 把文本切成多片处理. 该方法来自于这篇论文 <Hierarchical Transformers for Long Document Classification>.
    文中提到这么做还能降低self-attention计算的时间复杂度.
    假设原句子长为n, 每个分段的长度是k. 我们知道最原始的BERT计算时间复杂度是O(n2), 作者认为,这么做可以把时间复杂度降低到O(nk). 因为我们把n分数据分割成k小份, 那么我们一共要做n/k次, 每次我们的时间复杂度是k2, 即O(n/k * k2) = O(nk)

    数据集

    这次我们测试该模型在两种语言上的效果. 分别是中文数据集和英语数据集.
    中文数据集依旧是我们的老朋友ChineseNLPCorps提供的不同类别商品的评论.
    中文数据集传送门
    英语数据集来源于Kaggle比赛, 用户对于不同金融产品的评论.
    英语数据集传送门
    由于两种数据集训练预测上没有什么本质区别, 下文会用英语数据集来演示.

    评估方法

    本项目使用的评估方法是准确率和F1 Score. 非常常见的分类问题评价标准.

    测试集

    此项目中直接取了数据集里一小部分作为测试集.

    2.数据初步处理

    数据集里有55W条数据,18个features.
    在这里插入图片描述
    我们需要的部分是product(即商品类别)以及consumer complaint narrative.
    在这里插入图片描述
    观察数据集,我们发现用户评论是有NaN值的. 而且本次实验目的是做超长文本分类. 我们选取非NaN值,并且是长度大于250的评论.

    在这里插入图片描述
    筛选完后我们保留大约17k条左右数据
    在这里插入图片描述

    3.Baseline模型

    我们先来看一下什么都不做, 直接用BERT进行finetune能达到什么样的效果. 我们以此作为实验的baseline.
    本次预训练模型使用google官方的BERT-base-cased英语预训练模型(当然用uncased应该也没关系, 我没有测试)
    fine-tune部分很简单, 直接提取[CLS] token后过线性层, 是比较常规的套路. 损失函数使用cross entropy loss.
    文本送入的最大长度定为250. 即前文里提到的"直接截取文本前面部分". 此次实验里我们尝试比较HIERARCHICAL方法能比直接截取提高多少.
    在这里插入图片描述
    如图, 准确率达到了88%. 训练数据不过10k的数量级, 对于深度学习来说是非常少的. 这里不得不感叹下BERT作为预训练模型在小样本数据上的实力非常强劲.

    4. 数据进一步处理

    接下来我们进入提高部分. 首先对数据进一步处理.

    分割文本

    HIERARCHICAL思想本质是对数据进行有重叠(overlap)的分割. 这样分割后的每句句子之间仍然保留了一定的关联信息.

    众所周知,BERT输入的最大长度限制为512, 其中还需要包括[CLS]和[SEP]. 那么实际可用的长度仅为510. 但是别忘了, 每个单词tokenizer之后也有可能被分成好几部分. 所以实际可输入的句子长度远不足510.
    本次实验里我们设置分割的长度为200, overlap长度为50. 如果实际上线生产确有大量超过500长度的文本, 只需将分割和overlap长度设置更长即可.

    def get_split_text(text, split_len=250, overlap_len=50):
    	split_text=[]
    	for w in range(len(text)//split_len):
      		if w == 0:   #第一次,直接分割长度放进去
        		text_piece = text[:split_len]
      		else:      # 否则, 按照(分割长度-overlap)往后走
      			window = split_len - overlap_len
        		text_piece = [w * window: w * window + split_len]
    		split_text.append(text_piece)
    	return split_text
    

    分割完后长这样
    在这里插入图片描述
    随后我们将这些分割的句子分离成单独的一条数据. 并为他们加上label.
    在这里插入图片描述
    对比原文本可以发现, index 1~ index4来源于同一句句子. 它被分割成了4份并且每份都拥有原文本的label.

    4.最终模型

    最终模型由两个部分构成, 第一部分是和baseline里一模一样的, fine-tune后的BERT. 第二部分是由LSTM+FC层组成的混合模型.
    即实际上, BERT只是用来提取出句子的表示, 而真正在做分类的是LSTM + FC部分(更准确来说是FC部分, 因为LSTM模型部分仍然在做进一步的特征提取工作)
    这里稍微提一句,这样做法我个人认为类似于广告推荐系统里GBDT+LR的组合. 采用一个稍微复杂的模型去做特征提取, 然后用一个相对简单的模型去预测.

    第一部分: BERT

    首先,我们把分割好后的文本送入BERT进行训练. 这边我跑了5个epoch, 显卡仍然是Tesla K80, 每个epoch大约需要23分钟左右.
    在这里插入图片描述
    接着, 我们提取出这些文本的句子表示.
    方便起见, 我们这里仍然用[CLS] token作为句子表示. 当然也可以用sequence_output(在我上一个项目FAQ问答的最后结论中, 使用sequence_output的确能比pooled_output效果更好一点)
    我们获得的是这样一组数据:

    句子1_a的embedding, label
    句子1_b的embedding, label
    句子1_c的embedding, label
    句子2_a的embedding, label
    句子2_b的embedding, label
    句子3_a的embedding, label

    随后我们把这些embedding拼回起来, 变成了

    [句子1_a的embedding,句子1_b的embedding, 句子1_c的embedding], label
    [句子2_a的embedding, 句子2_b的embedding], label
    [句子3_a的embedding, 句子3_b的embedding], label

    这部分数据将作为LSTM部分的输入.

    第二部分: LSTM + FC

    这一步,我们将上一步得到的embedding直接送入LSTM网络训练.

    回想一下, 我们平时用LSTM做, 是不是把句子过了embedding层之后再送入LSTM的? 这里我们直接跳过embedding层, 因为我们的数据本身就是embedding

    由于分割后的embedding都不会太长, 我们直接使用LSTM最后一个time step的输出(当然这里也有个尝试点, 如果提取出LSTM每个time step的输出效果是不是会更好?)
    LSTM之后会过一个激活函数, 接一个FC层, FC层和label用cross entropy loss进行优化.
    由于合并后的数据量比较小, 我跑了10个epoch, 每次都很快.
    在这里插入图片描述

    最终效果和一些小节

    (左边loss, 右边accuracy)
    在这里插入图片描述
    最终效果居然提高到了94%!! 说实话这个提升量远高于论文. 可能和数据本身好也有关系. 但是我们可以认为, 比起直接截取文本开头一段, 采用HIERARCHICAL方式不仅克服了BERT长度限制的缺点, 也极大提升了对于超长文本的分类效果.

    下面是在中文数据集上模型的baseline效果和提升后的效果.
    (待跑)

    所以我认为, 采用HIERARCHICAL方法, 提升/解决了BERT两方面的缺点:
    1.降低了BERT里self-attention部分计算的时间复杂度. 就如开头所说, 时间复杂度从O(n2)降低到O(nk). 这个情况尤其适用于长度在500以内长度的文本.
    2.克服了BERT对于输入文本长度有限的缺点. 对于tokenize之后长度超过510的文本, 也可以用此方式对准确率进行再提升, 其实际效果优于直接截断文本.

    5. 进一步拓展: BERT + Transformer

    原论文里还提到了使用Transformer代替LSTM作为预测部分.
    这一节我们用Transformer来试一下.
    我们先来分析一下使用Transformer结构后的时间复杂度. 显然它的时间复杂度和LSTM不一样(LSTM复杂度我们可以认为是线性的, 即O(n/k)~O(n).)
    首先在BERT部分, 时间复杂度不变, 依旧为为O(n/k * k2) = O(nk). 进入到Transformer后,每个sequence长度为n/k, 所以时间复杂度为O(n/k * n/k)=O(n2/k2).
    那么总体时间复杂度为 O(nk) + O(n2/k2) ~ O(n2/k2).
    相比于LSTM的O(nk), 这个O(n2/k2)复杂度是有相当的上升的. 但是我们考虑到 n/k << n, 即n/k的量级远小于n, 所以还是在可接受的范围.
    (本小节未完…)

    展开全文
  • MySQL长文本存储类型

    千次阅读 2021-01-18 18:44:16
    可以使用TEXT,BLOB俩种类型来存储长文本。1. TEXTTEXT有4有类型:TINYTEXT 256bytesTEXT 64kbMEDIUMTEXT 16MbLONGTEXT 4GB2. BLOBTINYBLOBBLOB、MEDIUMBLOBLONGBLOBblob 保存的是二进制数据,利用这个特性,可以把...

    可以使用TEXT,BLOB俩种类型来存储长文本。

    1. TEXT

    TEXT有4有类型:

    TINYTEXT 256bytes

    TEXT 64kb

    MEDIUMTEXT 16Mb

    LONGTEXT 4GB

    2. BLOB

    TINYBLOB

    BLOB、

    MEDIUMBLOB

    LONGBLOB

    blob 保存的是二进制数据,利用这个特性,可以把图片存储到数据库里面。text只能存储文本。

    长使用的是text的,因为blob存储的是二进制格式,所以长文本里面的搜有数据都是二进制数据,在上传图文的时候,传过来是String,保存起来,读取都需要转换,还有javaBean设计的时候也要把文本的类型弄成BLOB类型,在加上hibernate 4 ,生成blob对象还要LobHelper,各种麻烦,于是就使用text来存储。

    如何存储图片??

    答:把文字与图片的地址都存储成text类型,使用特定的标签把图片地址包起来,然后在解析的时候,使用正则表达式把图片拿出来,在去服务器去访问。

    展开全文
  • ABAP 显示长文本

    千次阅读 2018-05-30 09:23:18
    业务背景:目前项目上 采购订单打印输出EXCEL的需求:允许客户进行长文本编辑、更改后保存到采购订单抬头,并且打印输出到EXCEL,且下次进入到相同的采购订单打印时,能取出相应的长文本进行excel输出。一般来讲,...
  • Bert 如何解决长文本问题?

    千次阅读 2020-02-19 10:03:55
    举例: 在阅读理解问题中,...因为Test之时不需要Back Propagation,亦不需要large batchsize,因而总有手段将长文本塞进显存中(如torch.no grad, batch size=1)。 至于具体实现可以参考原始BERT的run_squad: ...
  • 超长文本,用什么数据库储存?

    千次阅读 2021-01-31 07:30:45
    条目五:其它数据库产品MySQL,关系数据库,强在事务和关联查询 Redis/Memcache,内存数据库,主要用作缓存,不适用于长文本处理 ElasticSearch,全文搜索,虽然楼主没提,但在笔记类产品的确有这种需求。...
  • 长文本分类的总结

    万次阅读 多人点赞 2018-08-28 08:43:17
    笨妞很少做文本分类,因为工作中文本分类确实不怎么用得到,唯一一个项目用到短文本分类,验证集acc和f1都到90%以上,所以在笨妞印象中文本分类应该是很简单的分类问题,都不属于NLP问题。偶然碰到DC竞赛中“达观杯...
  • pyqt5 长文本滚动展示

    千次阅读 2020-06-29 17:32:29
    pyqt5 长文本滚动展示 在写qt版的客户端时, 需要开发一个公告的功能, 公告内容过长需要滚动显示 尝试了许多方式, 优化了一下还是可以的, 这里写几个demo记录一下 使用的开发语言和技术 Python3 + PyQt5 这是一...
  • 方法一:你定死表格的...nowrap强制在同一行内显示所有文本,直到文本结束或者遭遇 br 对象white-space:nowrap; }方法三:自动换行div{ word-wrap: break-word;//word-break设置强行换行;normal 亚洲语言和非亚洲...
  • oracle存储超长文本

    千次阅读 2020-03-24 10:54:23
    LOB类型分为BLOB和CLOB两种:BLOB即二进制大型对象(Binary Large Object),适用于存贮非文本的字节流数据(如程序、图象、影音等)。 而CLOB,即字符型大型对象(Character Large Object),则与字符集相关,适于...
  • ABAP长文本

    千次阅读 2016-10-31 10:12:18
    长文本存储在表格:STXH(抬头),STXL(行项目)中。   长文本中有四个关键属性: object、id、name、langguge 即:   TDOBJECT TDNAME TDID TDSPRAS   其中language不必解释,object ...
  • mysql存入长文本

    万次阅读 2019-08-27 12:33:13
    进入mysql DOS命令窗口下mysql -u xx -p 进入数据库 查看max_allowed_packet最大允许值 mysql下输入show VARIABLES like ‘%max_allowed_packet%’; 这里max_allowed_packet只有1M,显然很小 ...
  • 一种解决bert长文本匹配的方法

    千次阅读 2019-11-05 21:39:18
    我们的原始的微调数据是查询query和长文本document的关系,而我们将长文本拆分为n个短句子后,不是所有的句子和当前的query是强相关的(正样本),因此我们不能简单依赖现在的长文本数据了。本论文的解决方法是基于...
  • python 基于LDA算法的长文本主题提取分类并预测类别

    千次阅读 多人点赞 2020-04-26 11:53:07
    python 基于LDA长文本主题提取并预测分类 Lda算法原理,知乎上有很完善的算法介绍,这里就不多废话了。 数据准备 这一阶段主要是对你的问题本进行处理,清洗你的数据。中文文本预处理,主要包括去空格、去表单符号、...
  • SAP ABAP物料使用SAVE_TEXT写入长文本

    千次阅读 2020-09-08 11:38:21
    基本数据文本中的长文本写入 DATA:ls_theaderTYPEthead,"长文本的head lt_linesTYPETABLEOFtline, ls_linesTYPEtline. ls_theader-tdobject='MATERIAL'."固定值 ls_theader-tdname=ls_head-...
  • sql存储长文本

    千次阅读 2018-06-30 11:34:00
    Text: TINYTEXT 256bytes TEXT 64kb MEDIUMTEXT 16Mb LONGTEXT 4GB 转载于:https://www.cnblogs.com/maoriaty/p/9246552.html
  • ABAP读取长文本的方法

    千次阅读 2017-10-09 14:24:50
    SAP中所有的项目文本都存在以下两张数据表中: ...长文本读取方法 首先在STXH和STXL中根据OBJECT NAME, TEXT ID,TEXT OBJECT查找到需要的文本对象, 然后通过READ_TEXT / READ_TEXT_INLINE函数来读取文本内容。 
  • 首先是oracle: clob类型,但对于这个类型处理起来还是比较麻烦的,varchar2长度为4000bytes,如果varchar2能满足楼主的需求,建议使用varchar2; 然后是mysql: ①、TEXT TEXT有4有类型: 1、...text只能存储文本
  • 正常情况下,我们将数据从达梦数据库中导出...长文本>',而不会显示在数据库中存储的实际内容 想要避免这种情况,针对含有 TEXT 字段的表格,我们可以使用 DM 数据迁移工具 DM数据迁移工具 新建工程 -> 新建迁移
  • 此次比赛,达观数据提供了一批长文本数据和分类信息,希望选手动用自己的智慧,结合当下最先进的NLP和人工智能技术,深入分析文本内在结构和语义信息,构建文本分类模型,实现精准分类。未来文本自动化处理的技术...
  • 文本预处理:分词 训练词向量 tf-idf提取关键词并写入文档 前20个词 word2vec读取提取的关键词并转为词向量 相似度计算。 前面对word2vec的理论进行了介绍,接下来进入实战环节。实践主要分为三部分,word2vec...
  • 如果希望超长文本只展示一行: width: 200px; display: block; text-overflow: ellipsis; /*超出内容用省略号*/ overflow: hidden; /*内容超出后隐藏*/ white-space: nowrap; /*文本不进行换行*/ 如果希望超长...
  • 物料主数据长文本取值

    千次阅读 2018-09-12 10:08:05
  • JavaScript使用RSA进行超长文本加解密

    千次阅读 2018-08-10 10:02:03
    是通过用jsencrypt.min.js来实现的,此js文件实现了对超长文本字段加密功能。写这个文件的大师很牛!膜拜一下�� RSA加密方法: var encrypt = new JSEncrypt(); encrypt.setPublicKey("-----BEGIN ...
  • 获取物料长文本 FORM FORM_GTT_LONGTXT USING ZMATNR ”物料号  CHANGING LONGTXT. "长文本  DATA: LV_RETURN TYPE TABLE OF TLINE WITH HEADER LINE.  CALL FUNCTION 'READ_TE
  • spring boot data jpa 创建表中长文本字段 1.如何创建 需要用到的注解 @Lob @Lob标注表示将属性映射成数据库支持的大对象类型,Clob或者Blog。其中: Clob(Character Large Ojects)类型是字符...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 983,946
精华内容 393,578
关键字:

长文本