gitweixin
  • 首页
  • 小程序代码
    • 资讯读书
    • 工具类
    • O2O
    • 地图定位
    • 社交
    • 行业软件
    • 电商类
    • 互联网类
    • 企业类
    • UI控件
  • 大数据开发
    • Hadoop
    • Spark
    • Hbase
    • Elasticsearch
    • Kafka
    • Flink
    • 数据仓库
    • 数据挖掘
    • flume
    • Kafka
    • Hive
    • shardingsphere
    • solr
  • 开发博客
    • Android
    • php
    • python
    • 运维
    • 技术架构
    • 数据库
  • 程序员网赚
  • bug清单
  • 量化投资
  • 在线查询工具
    • 去行号
    • 在线时间戳转换工具
    • 免费图片批量修改尺寸在线工具
    • SVG转JPG在线工具

可视化ETL解决方案:Apache NiFi、DataX(加上DataX-Web)、Kettle这3个解决方案对比

精品微信小程序开发门户,代码全部亲测可用

  • 首页   /  
  • 作者: east
  • ( 页面29 )
datax, 大数据开发, 运维 4月 14,2024

可视化ETL解决方案:Apache NiFi、DataX(加上DataX-Web)、Kettle这3个解决方案对比

1.Apache NiFi:

Apache NiFi是一个易于使用、功能强大的可视化ETL工具,它提供了一套直观的图形界面,让用户可以轻松地设计、管理和监控数据流。NiFi支持多种数据源和目标系统,具有强大的数据处理能力,如数据过滤、转换、聚合等。此外,NiFi还支持实时数据处理、批量数据处理以及两者的混合处理。

适用场景:

  • 数据源和目标系统种类繁多,需要灵活的数据处理能力 ,实现数据的抽取、转换和加载(ETL)工作,方便数据的迁移和同步 ;
  • 需要实时数据处理和监控的场景 , 可以通过监听数据源(如Kafka、Flume等)的实时数据流,实现数据的实时采集、处理和传输; 适用于需要实时数据处理的业务场景,如实时监控和报警系统 ;
  • 需要构建大规模、可扩展的数据流处理系统的场景
    ,如日志收集和分析、物联网数据处理等 。

支持的数据库类型:

  • 关系型数据库:如MySQL、PostgreSQL、Oracle、SQL Server等;
  • NoSQL数据库:如MongoDB、HBase等;
  • 列式存储数据库:如ClickHouse等;
  • 文件系统:如HDFS、本地文件系统等。

2. DataX(包括DataX-Web):

DataX是阿里巴巴开源的一款高性能、分布式、易用的数据同步工具,它支持多种数据源和目标系统,具有优秀的性能和稳定性。DataX-Web是DataX的Web版本,提供了可视化的操作界面,简化了数据同步任务的配置和管理。

适用场景:

  • 数据源和目标系统种类较多,但不需要像NiFi那样的复杂数据处理能力;
  • 需要进行大规模数据迁移和同步的场景;
  • 对于实时性要求不高,但需要保证数据一致性和可靠性的场景;
  • 需要简化数据同步任务配置和管理的场景。
  • 由于DataX的扩展性强,适合需要定制化数据同步任务的企业,可以通过编写自定义插件来满足特定的业务需求

支持的数据库类型:

  • 关系型数据库:如MySQL、PostgreSQL、Oracle、SQL Server等;
  • NoSQL数据库:如MongoDB、Cassandra等;
  • 列式存储数据库:如Infobright等;
  • 文件系统:如CSV文件、Excel文件等。

3. Kettle(Pentaho Data Integration):

Kettle是一款成熟、稳定的开源ETL工具,它提供了丰富的数据处理组件和可视化界面,支持多种数据源和目标系统。Kettle具有强大的调度和监控功能,可以满足复杂的数据处理需求。

适用场景:

  • 数据源和目标系统种类繁多,需要丰富的数据处理组件;
  • 需要进行复杂的ETL作业调度和监控的场景;
  • 对于实时性要求不高,但需要保证数据质量和一致性的场景;
  • 需要与其他Pentaho组件(如报表、数据挖掘等)集成的场景。

支持的数据库类型:

  • 关系型数据库:如MySQL、PostgreSQL、Oracle、SQL Server等;
  • NoSQL数据库:如MongoDB、Cassandra等;
  • 列式存储数据库:如Infobright等;
  • 文件系统:如CSV文件、Excel文件等。

总结:

  • 如果需要实时数据处理和监控,以及灵活的数据处理能力,可以选择Apache NiFi;
  • 如果需要进行大规模数据迁移和同步,以及简化数据同步任务配置和管理,可以选择DataX(包括DataX-Web);
  • 如果需要进行复杂的ETL作业调度和监控,以及与其他Pentaho组件集成,可以选择Kettle。
作者 east
doris, Hbase 4月 13,2024

用Flink开发实时数仓,用hase还是doris存储维度表选型对比

在使用Flink开发实时数仓时,选择合适的存储方案对于保证数据的实时性、一致性和可用性至关重要。在这里,我们将对比Doris和HBase,以帮助您做出决策。

  1. Doris

Doris是一个基于MPP(Massively Parallel Processing)架构的分布式列式存储数据库,具有高性能、高可用性和高扩展性。Doris适用于大规模数据分析和实时查询场景,特别是对实时性要求较高的场景。

优点:

  • 高性能:Doris具有高性能的列式存储和向量化查询引擎,能够快速处理大量数据。
  • 易用性:Doris提供了简单易用的SQL接口,支持标准SQL语法,方便用户进行数据查询和分析。
  • 可扩展性:Doris支持水平扩展,可以根据业务需求动态调整集群规模。

缺点:

  • 对实时性要求较高的场景,Doris的实时性可能不如HBase。
  • 数据更新和删除操作相对较慢,不适合频繁更新的场景。
  1. HBase

HBase是一个基于Hadoop的分布式、可扩展、大规模列式存储的NoSQL数据库。HBase适用于需要实时读写的场景,特别是对实时性要求较高的场景。

优点:

  • 高实时性:HBase具有低延迟的读写性能,适用于实时数据处理和分析场景。
  • 可扩展性:HBase支持水平扩展,可以根据业务需求动态调整集群规模。
  • 数据一致性:HBase提供了强一致性保证,适用于对数据一致性要求较高的场景。

缺点:

  • 查询性能相对较低,不适合大规模数据分析场景。
  • 数据更新和删除操作相对较慢,不适合频繁更新的场景。

总结:

在选择存储方案时,需要根据实际业务场景和需求来权衡。如果实时性要求较高,可以选择HBase;如果需要大规模数据分析和查询,可以选择Doris。在实际应用中,也可以将两者结合使用,以满足不同场景的需求。

作者 east
Flink, Spark 4月 11,2024

Spark的Master、Worker、Dirver和Executor,对比Flink的Jobmanager、Taskmanager、Slot异同

首先,我们来了解一下Spark和Flink的基本概念。Spark是一个快速、通用的大规模数据处理引擎,而Flink是一个流式和批处理的开源数据处理框架。它们都用于处理大量数据,但在架构和组件方面有所不同。接下来,我们将用通俗易懂的语言和比喻来解释它们的异同。

  1. Master vs Jobmanager

Spark中的Master负责管理整个集群的资源分配和任务调度。它就像一个公司的CEO,负责制定战略和协调各个部门的工作。而Flink中的Jobmanager也负责任务的调度和资源管理,但它更像是一个项目经理,负责具体项目的执行和监控。

  1. Worker vs Taskmanager

Spark中的Worker负责执行具体的任务,就像公司的员工,按照CEO的指示完成各自的工作。而Flink中的Taskmanager也负责执行任务,但它更像是一个团队,成员之间可以共享资源,协同完成任务。

  1. Driver vs Slot

Spark中的Driver负责协调任务的执行,收集结果并返回给客户端。它就像一个出租车司机,负责接送乘客(任务)到达目的地。而Flink中的Slot是Taskmanager的资源单元,可以理解为一台计算机的一个CPU核心。它就像一个工厂的机床,用于加工生产产品(任务)。

相同之处:

  1. 两者的Master/Jobmanager都负责任务的调度和资源管理。
  2. 两者的Worker/Taskmanager都负责执行具体的任务。
  3. Driver和Taskmanager:在执行用户程序时,都需要接收用户的代码并将其转换为可执行的任务。

不同之处:

  1. Spark的Driver是一个独立的进程,负责协调任务的执行;而Flink没有Driver的概念,任务直接在Taskmanager中执行。
  2. Flink的Slot是资源分配的单位,可以共享资源;而Spark中没有Slot的概念,资源分配是通过Master来实现的。
  3. Spark的Executor一旦启动就会占用固定的资源直到应用程序结束,而Flink的Taskmanager可以通过Slot动态地分配和释放资源,这使得Flink在资源利用上更加灵活。
  4. Flink中的Slot是一个独特的概念,它允许更细粒度的资源管理和任务并发。而Spark的Executor则是单一的执行单元,没有类似Slot的细分。
    Spark的Driver是运行在客户端机器上的一个进程,负责将用户程序转换为RDD(弹性分布式数据集)的操作序列,而Flink的Jobmanager则是负责整个作业的生命周期管理。
作者 east
数据挖掘 4月 10,2024

数据挖掘面试题及参考答案全面解析(万字长文)

1. 如何定义和测量数据点之间的距离?

在数据挖掘中,衡量数据点之间的距离是聚类、分类以及关联规则等算法的基础。常用的距离度量方法包括欧氏距离、曼哈顿距离、切比雪夫距离和余弦相似度等。

参考答案:

选择合适的距离度量方法需要根据实际问题和数据的特性来决定。例如,对于具有不同量纲的数据,可能需要先进行标准化处理;而对于文本数据,则可能使用余弦相似度更为合适。

2. 为什么要进行特征选择?

特征选择是数据挖掘中的一个重要步骤,它旨在从原始特征中选择出最具有预测能力的特征子集。

参考答案:进行特征选择的原因主要有以下几点:

  • 降低计算复杂度:减少特征数量可以显著降低模型训练和预测的计算成本。
  • 提高模型性能:去除无关或冗余特征可以减少噪声干扰,提高模型的预测准确性。
  • 增强模型可解释性:较少的特征数量有助于理解模型的决策过程,提高模型的可解释性。
  • 防止过拟合:通过特征选择,可以避免模型在训练数据上过度拟合,从而提高模型在新数据上的泛化能力。

特征选择的方法通常分为三类:过滤方法(Filter methods)、包装方法(Wrapper methods)和嵌入方法(Embedded methods)。过滤方法通过统计测试来评估特征的相关性;包装方法通过搜索算法来寻找最优特征子集;嵌入方法在模型训练过程中自然进行特征选择,如L1正则化的线性模型。

3. 在K-means聚类中怎么选择合适的K值?

K-means聚类算法中,K值的选择对聚类结果有着重要影响。

参考答案:选择合适的K值可以通过以下几种方法:

  • 肘部法则(Elbow Method):通过计算不同K值的成本函数(如群内平方和),并绘制K与成本函数的图表。选择成本函数开始显著下降速度减缓的点作为K值,该点类似于“肘部”。
  • 轮廓系数(Silhouette Coefficient):计算不同K值的轮廓系数,选择轮廓系数最大的K值。轮廓系数结合了聚类的凝聚度和分离度,值越大表示聚类效果越好。
  • 交叉验证(Cross-validation):对数据进行多次划分训练集和测试集,计算不同K值在测试集上的性能,选择性能最好的K值。
  • 稳定性分析(Stability Analysis):多次运行K-means算法,观察不同K值下聚类结果的稳定性。选择在多次运行中稳定性较高的K值。

选择合适的K值需要综合考虑数据的特性、问题的需求以及计算资源的可用性。

4. 什么是交叉验证?怎么使用?为什么要使用?

交叉验证是一种评估模型泛化能力的技术。

参考答案:交叉验证的主要目的是通过重复使用数据集的不同部分来训练和验证模型,从而减少模型评估过程中的偶然性,提高模型选择的可靠性。

使用交叉验证的步骤通常包括:

  1. 将数据集分割成K个大小相等的子集(或尽可能相等)。
  2. 每次取其中一个子集作为测试集,剩余的K-1个子集作为训练集。
  3. 重复步骤2,直到每个子集都被用作过测试集。
  4. 计算K次模型的性能指标的平均值,作为模型的最终评估结果。

交叉验证的常见类型有K折交叉验证(K-fold Cross-validation)和留一法交叉验证(Leave-One-Out Cross-Validation)等。K折交叉验证将数据集分为K个部分,每次用其中的一部分作为测试集,其余作为训练集,重复K次。留一法交叉验证则是每次只用一个数据点作为测试集,其余全部作为训练集,重复N次,其中N是数据点的总数。

交叉验证的优点在于能够充分利用有限的数据资源,提高模型评估的稳定性和可靠性。此外,它还可以用于模型选择和超参数调优,帮助找到最优的模型配置。

5. 逻辑回归系数和胜算比之间有什么关系?

逻辑回归是一种广泛使用的分类算法,其输出的是胜算比(Odds Ratio),而非概率。

参考答案:

这表明,模型系数直接影响胜算比的对数值。每增加一个单位的特征值,胜算比会按照模型系数的对数倍变化。如果系数为正,则增加该特征值会增加胜算比,即增加样本属于正类的概率;如果系数为负,则减少样本属于正类的概率。

理解逻辑回归系数与胜算比之间的关系,有助于我们解释模型的预测结果,并进行特征的重要性分析。

6. 主成分分析(PCA)和线性判别分析(LDA)之间存在什么样的区别和联系?

PCA和LDA都是降维技术,但它们的目的和方法有所不同。

参考答案:主成分分析(PCA)是一种无监督的降维技术,其目标是找到一个新的特征空间,使得在这个空间中数据的方差最大化。PCA通过正交变换将原始数据转换到一个新的坐标系统中,新坐标的基向量(即主成分)是原始数据协方差矩阵的特征向量。第一主成分是数据方差最大的方向,第二主成分是与第一主成分正交且方差次大的方向,以此类推。

线性判别分析(LDA)是一种有监督的降维技术,其目标是找到一个新的特征空间,使得在这个空间中类间距离最大化,同时类内距离最小化。LDA假设不同类别的数据服从高斯分布,且具有相同的协方差矩阵。LDA通过计算类别间散度矩阵和类内散度矩阵来找到最佳的投影方向。

PCA和LDA的联系在于它们都通过线性变换来降低数据的维度。但它们的不同之处在于PCA关注数据的全局结构,而LDA关注数据的类别结构。因此,在没有类别标签的情况下,我们通常使用PCA进行降维;而在有类别标签的情况下,如果目标是提高分类性能,我们则倾向于使用LDA。

7. 什么是过拟合?有哪些方法可以预防或克服过拟合?

过拟合是指模型在训练数据上表现良好,但在未见过的测试数据上表现不佳的现象。这通常是因为模型学习到了训练数据中的噪声和细节,而没有捕捉到数据的潜在分布。

参考答案:预防或克服过拟合的方法主要包括:

  • 增加数据量:通过获取更多的训练数据来减少模型对训练集中特定噪声的学习。
  • 特征选择:减少特征的数量,只保留最重要的特征,以降低模型复杂度。
  • 正则化:在损失函数中添加正则项(如L1或L2正则化),对模型参数施加惩罚,限制模型复杂度。
  • 交叉验证:使用交叉验证来评估模型的泛化能力,并选择最佳的模型参数。
  • 早停法(Early Stopping):在训练过程中,当验证集上的性能不再提升或开始下降时停止训练,以避免过拟合。
  • 集成学习:结合多个模型的预测结果,如随机森林、Bagging和Boosting等方法,以减少过拟合。
  • 简化模型:选择更简单的模型,如线性模型,避免使用过于复杂的模型结构。
  • 数据增强:通过对训练数据进行变换(如旋转、缩放、裁剪等),生成新的训练样本,以增加数据的多样性。
  • 超参数调优:通过调整模型的超参数来找到最佳的模型配置,避免过拟合。

在实际应用中,通常需要结合多种方法来有效地预防和克服过拟合,以提高模型在新数据上的表现。

8. 什么是混淆矩阵?如何使用混淆矩阵评估分类模型的性能?

混淆矩阵是一个表格,用于描述分类模型的性能。

参考答案:混淆矩阵通常包含四个部分:真正例(TP)、假正例(FP)、真负例(TN)和假负例(FN)。它们分别表示:

  • TP:模型正确预测为正类的样本数。
  • FP:模型错误预测为正类的样本数。
  • TN:模型正确预测为负类的样本数。
  • FN:模型错误预测为负类的样本数。

这些指标可以帮助我们从不同角度评估模型的性能。例如,精确率关注模型预测为正类的样本中实际为正类的比例,而召回率关注所有实际正类样本中被模型正确预测的比例。F1分数则是精确率和召回率的调和平均,它在不平衡类别分布的情况下特别有用。

混淆矩阵不仅能够评估模型的整体性能,还能够揭示模型在不同类别上的性能差异,帮助我们识别模型的弱点并进行改进。

9. 什么是决策树?如何构建一个决策树模型?

决策树是一种常见的分类和回归模型,它模拟了人类决策过程中的决策树形结构。

参考答案:决策树通过递归地将数据集分割成越来越小的子集来构建模型。每个分割对应于树中的一个节点,最终的子集对应于树的叶节点。在每个内部节点上,模型选择一个特征进行分割,并根据该特征的某个阈值将数据分为两部分。分割的目的是为了提高子集的纯度,即使得同一子集中的数据尽可能属于同一类别。

构建决策树的步骤通常包括:

  1. 特征选择:选择一个最佳的特征进行分割。常用的方法有信息增益(ID3算法)、信息增益比(C4.5算法)和基尼不纯度(CART算法)。
  2. 树的生成:根据特征选择的结果,递归地分割数据集,直到满足停止条件(如达到预设深度、节点中的样本数小于某个阈值、或子集纯度达到某个标准)。
  3. 剪枝:为了防止过拟合,对生成的树进行剪枝。剪枝可以是预剪枝(在生成树的过程中就停止树的增长)或后剪枝(先生成完整的树,然后删除不必要的节点)。

决策树的优点在于模型易于理解和解释,计算复杂度不高。但它也容易受到噪声和异常值的影响,可能导致过拟合。此外,决策树可能不稳定,即数据中的小变化可能导致生成完全不同的树。

10. 什么是支持向量机(SVM)?SVM如何在特征空间中寻找最优分割?

支持向量机(SVM)是一种强大的分类算法,它的目标是找到一个超平面,以最大化不同类别之间的边界(或称为间隔)。

参考答案:SVM的基本思想是找到一个超平面(在二维空间中是一条直线,在三维空间中是一个平面,以此类推),使得两个类别之间的间隔最大化。间隔是指数据点到决策边界的最小距离。SVM通过最大化间隔来提高模型的泛化能力。

在特征空间中寻找最优分割的步骤包括:

  1. 构建目标函数:SVM的目标函数是找到一个能够最大化间隔的超平面。目标函数通常涉及间隔的大小和分类错误的样本数。
  2. 求解优化问题:SVM的训练过程实际上是一个求解凸二次规划问题,通过优化算法(如序列最小优化SMO算法)来求解最优解。
  3. 支持向量:在优化过程中,只有部分数据点(即支持向量)对最终的决策边界有影响。支持向量是距离决策边界最近的数据点,它们决定了间隔的大小和位置。
  4. 核技巧:当数据不是线性可分时,SVM使用核函数将原始特征映射到高维空间,以便在新的空间中找到线性分割。常用的核函数包括线性核、多项式核、径向基函数(RBF)核和sigmoid核。

SVM的优点在于它能够处理线性和非线性问题,且具有较好的泛化能力。但SVM的缺点是参数选择(如C参数和核参数)对模型性能影响较大,且在大规模数据集上训练可能比较耗时。

11. 什么是随机森林?它与决策树有何不同?

随机森林是一种集成学习方法,它通过构建多个决策树并将它们的预测结果进行汇总来提高模型的准确性和稳定性。

参考答案:随机森林的主要特点包括:

  • 集成多个决策树:随机森林由多个决策树组成,每棵树都是独立训练的。
  • 引入随机性:在构建每棵决策树时,随机森林引入两种随机性。第一种是自助采样(Bootstrap sampling),即对原始数据集进行有放回的随机采样来构建每棵树的训练集。第二种是在分裂节点时不是考虑所有特征,而是考虑一个随机选择的特征子集。
  • 投票或平均决策:随机森林通过对所有决策树的预测结果进行投票(分类问题)或平均(回归问题)来得出最终的预测。

与单一决策树相比,随机森林的优点在于:

  • 减少过拟合:由于引入了随机性,随机森林能够降低模型的方差,从而减少过拟合的风险。
  • 提高准确性:通过集成多个决策树,随机森林通常能够获得比单一决策树更高的预测准确性。
  • 增强稳定性:随机森林对异常值和噪声的鲁棒性更强,因为它依赖于多个树的集体智慧。

随机森林的缺点是模型的可解释性不如单一决策树,因为它包含了大量的决策树,难以直观地理解模型的决策过程。

12. 什么是梯度下降?它在机器学习中有什么作用?

梯度下降是一种用于优化问题的迭代算法,它在机器学习中主要用于最小化损失函数,以找到模型参数的最优解。

参考答案:梯度下降的基本思想是从一个初始点开始,沿着损失函数下降最快的方向逐步更新参数,直到达到局部最小值或全局最小值。损失函数是衡量模型预测值与实际值差异的函数,它反映了模型的性能。

在机器学习中,梯度下降的作用包括:

  • 参数优化:通过最小化损失函数,梯度下降帮助我们找到最佳的模型参数,使得模型在训练数据上的表现最佳。
  • 模型训练:几乎所有的监督学习算法,如线性回归、逻辑回归、神经网络等,都可以使用梯度下降进行训练。
  • 泛化能力:通过合理选择学习率和迭代次数,梯度下降可以防止模型过拟合,提高模型在新数据上的泛化能力。

13. 什么是L1正则化和L2正则化?它们在机器学习中的作用是什么?

L1正则化和L2正则化是两种常用的正则化技术,用于防止机器学习模型过拟合。

参考答案:L1正则化,也称为Lasso(Least Absolute Shrinkage and Selection Operator)正则化,其惩罚项是模型参数的绝对值之和。在优化过程中,L1正则化倾向于产生稀疏的参数向量,即许多参数会变为零。这种特性使得L1正则化同时具有特征选择的功能,能够从众多特征中选择出最有影响力的特征,从而简化模型。

L2正则化,也称为Ridge(Residual Reduction and Interpretation for Distance)正则化,其惩罚项是模型参数的平方和。与L1正则化不同,L2正则化不会将参数压缩至零,而是倾向于使所有参数值接近零但不会完全为零。这种特性有助于防止模型中的参数过大,从而减少模型复杂度和过拟合的风险。

在机器学习中,正则化的作用主要体现在以下几点:

  • 防止过拟合:通过在损失函数中添加正则化项,可以惩罚大的参数值,从而限制模型的复杂度,减少过拟合。
  • 特征选择:L1正则化通过产生稀疏参数向量,能够选择重要的特征,提高模型的可解释性。
  • 参数平滑:L2正则化通过对参数值进行平滑处理,减少了参数的敏感性,提高了模型的泛化能力。

在实际应用中,通常会根据数据的特点和模型的需求选择合适的正则化方法。有时,也会结合L1和L2正则化,这种方法称为Elastic Net正则化。

14. 什么是主成分分析(PCA)?它在数据挖掘中有哪些应用?

主成分分析(PCA)是一种统计方法,用于数据降维和模式识别。

参考答案:PCA的目标是将可能存在多重共线性的变量转换为一组线性不相关的变量,这组新变量称为主成分。PCA通过正交变换将原始数据投影到较低维度的空间中,同时尽可能保留数据的变异性。

在数据挖掘中,PCA的应用包括:

  • 数据降维:通过减少数据的维度,PCA可以简化模型的复杂度,减少计算资源的消耗。
  • 去噪:PCA能够帮助去除数据中的噪声,突出数据中的主要特征。
  • 可视化:在高维数据集中,直观的可视化是困难的。PCA可以将数据降至二维或三维空间,便于可视化和分析。
  • 特征提取:PCA生成的主成分可以作为新的特征集,用于后续的机器学习任务。
  • 预处理:在许多机器学习算法中,PCA可以作为一种预处理步骤,提高算法的性能。

PCA的有效性建立在数据的中心化和尺度化的基础上。在应用PCA之前,通常需要对数据进行标准化处理,以消除不同量纲和尺度的影响。

15. 什么是K-means算法?它是如何工作的?

K-means算法是一种经典的聚类算法,用于将数据划分为K个簇。

参考答案:K-means算法的基本思想是根据数据点之间的相似性将它们分组。算法的工作原理可以分为以下几个步骤:

  1. 初始化:随机选择K个数据点作为初始的簇中心。
  2. 分配步骤:将每个数据点分配给最近的簇中心,形成K个簇。
  3. 更新步骤:重新计算每个簇的中心,通常取簇内所有数据点的均值。
  4. 迭代:重复分配和更新步骤,直到簇中心不再发生变化,或者达到预设的迭代次数。

K-means算法的优点在于简单、易于实现,通常能够得到较好的聚类效果。然而,它也有一些局限性:

  • K值的选择:需要事先指定K值,而在实际应用中K值往往是未知的。
  • 初始簇中心的选择:算法的结果依赖于初始簇中心的选择,不同的初始值可能导致不同的聚类结果。
  • 对噪声和异常值敏感:K-means算法容易受到噪声和异常值的影响。
  • 可能收敛到局部最优:算法可能会收敛到局部最优解,而不是全局最优解。

尽管存在这些局限性,K-means仍然是解决许多聚类问题的有效工具。

16. 什么是时间序列分析?它在数据挖掘中的重要性是什么?

时间序列分析是统计学和机器学习中的一种分析方法,用于分析按时间顺序排列的数据点。

参考答案:时间序列数据是一系列按照时间顺序排列的数据点,时间序列分析的目标是从这些数据中提取有用的信息,预测未来的趋势,以及理解数据的内在结构和模式。

在数据挖掘中,时间序列分析的重要性体现在以下几个方面:

  • 趋势分析:通过分析时间序列数据的长期趋势,可以预测未来的走势,为决策提供依据。
  • 季节性分析:识别数据的季节性模式,如销售数据的季节性波动,有助于优化资源分配和库存管理。
  • 异常检测:在时间序列数据中识别异常点,如信用卡欺诈检测、工业设备的故障预警等。
  • 因果关系分析:分析不同时间序列之间的相互关系,确定它们之间是否存在因果关系。
  • 预测:基于历史数据构建模型,预测未来的数据点,如股票价格、气温变化等。

时间序列分析的方法包括自回归模型(AR)、移动平均模型(MA)、自回归移动平均模型(ARMA)、自回归积分滑动平均模型(ARIMA)等。在机器学习领域,还可以使用神经网络、支持向量机等方法进行时间序列预测。

17. 什么是关联规则学习?它在零售业中的应用有哪些?

关联规则学习是一种挖掘大量数据中变量之间有趣关系的方法。

参考答案:关联规则学习的目标是发现数据项之间的频繁模式、关联或者相关性。在零售业中,关联规则学习通常用于分析顾客的购物篮数据,以发现不同商品之间的购买关系。

在零售业中,关联规则学习的应用包括:

  • 购物篮分析:通过分析顾客的交易记录,发现哪些商品经常被一起购买,如“买尿布的顾客也往往会购买啤酒”。
  • 商品推荐:根据顾客的购买历史推荐相关商品,提高交叉销售和增值销售的机会。
  • 库存管理:通过关联规则优化库存水平,确保高需求商品的供应。
  • 促销活动设计:基于商品之间的关联关系设计捆绑促销或交叉促销活动。
  • 市场篮分析:分析整个市场或特定客户群体的购买模式,以制定更有效的市场策略。

关联规则学习的经典算法包括Apriori算法和FP-growth算法。Apriori算法通过迭代地发现所有频繁项集,然后从这些频繁项集中导出关联规则。FP-growth算法则使用一种称为FP树(Frequent Pattern Tree)的数据结构来高效地发现频繁项集和生成关联规则。

18. 什么是深度学习?它与传统机器学习有何区别?

深度学习是机器学习的一个分支,它使用多层神经网络来学习数据的高层次特征。

参考答案:深度学习的核心是深度神经网络(Deep Neural Networks, DNNs),这种网络包含多个隐藏层,能够捕捉数据中的复杂结构和模式。与传统机器学习相比,深度学习的特点在于:

  • 模型复杂度:深度学习模型通常具有更高的模型复杂度,能够学习数据的深层特征。
  • 特征学习:深度学习模型能够自动从原始数据中学习到有用的特征表示,无需人工设计特征。
  • 数据量:深度学习通常需要大量的标记数据来训练,而传统机器学习模型在小数据集上表现可能更好。
  • 计算资源:深度学习模型的训练需要较大的计算资源,尤其是GPU,而传统机器学习模型通常对计算资源的要求较低。

深度学习在图像识别、语音识别、自然语言处理等领域取得了显著的成果。代表性的深度学习模型包括卷积神经网络(CNNs)、循环神经网络(RNNs)、长短时记忆网络(LSTMs)等。

19. 什么是自然语言处理(NLP)?它在数据挖掘中的应用有哪些?

自然语言处理(NLP)是计算机科学、人工智能和语言学领域的交叉学科,旨在使计算机能够理解和处理人类语言。

参考答案:NLP的研究内容包括语言模型、句法分析、语义分析、情感分析、机器翻译、问答系统、文本摘要等。在数据挖掘中,NLP的应用非常广泛,主要包括:

  • 文本分类:通过NLP技术,可以将文本数据自动分类到预定义的类别中,如垃圾邮件检测、新闻分类等。
  • 情感分析:分析文本中的情感倾向,如正面、负面或中性,用于市场分析、产品反馈等。
  • 主题建模:从文档集合中发现主要的主题或概念,如使用LDA(Latent Dirichlet Allocation)模型。
  • 实体识别:从文本中识别出具体的实体,如人名、地名、组织名等。
  • 关系抽取:识别文本中实体之间的关系,如“公司-CEO”、“电影-导演”等。
  • 文本聚类:将文本数据根据内容的相似性进行聚类,无需预先定义

20. 什么是决策树的剪枝?它如何影响模型的性能?

决策树的剪枝是指在构建决策树过程中,通过某种策略去除一些子树,以防止模型过拟合。

参考答案:决策树的剪枝可以分为预剪枝和后剪枝两种方法。预剪枝在决策树的生长过程中就进行剪枝,而后剪枝则是在决策树完全生长后进行。

预剪枝方法通常在每个节点的分裂判断中加入一个阈值,例如,如果一个节点的纯度提升或信息增益低于某个阈值,则该节点不再分裂。这样可以避免树过于复杂,减少噪声的影响,但可能会导致欠拟合。

后剪枝则是在决策树完全生成后,从树的底部开始,检查每个非叶子节点。如果移除该节点后的子树能够使得模型的预测性能不下降或者提高,那么就进行剪枝。后剪枝的优点是可以利用验证集来评估剪枝的效果,但计算成本较高。

剪枝对模型性能的影响主要体现在以下几个方面:

  • 减少过拟合:通过移除不必要的子树,剪枝可以降低模型的复杂度,减少过拟合的风险。
  • 提高泛化能力:剪枝后的模型在新的数据上可能具有更好的预测能力,因为它减少了对训练数据的依赖。
  • 提升解释性:剪枝后的决策树更加简洁,便于理解和解释。
  • 计算效率:剪枝后的树更小,因此在进行预测时计算效率更高。

然而,剪枝也可能带来一些风险,如过度剪枝可能导致模型失去有用的信息,从而影响预测性能。

21. 什么是集成学习?它如何提高模型的准确性?

集成学习是一种机器学习范式,它通过结合多个模型的预测结果来提高整体的预测性能。

参考答案:集成学习的基本思想是“三个臭皮匠,赛过诸葛亮”,即通过组合多个模型的预测结果,可以比单一模型获得更好的性能。集成学习的方法主要分为三类:Bagging、Boosting和Stacking。

Bagging(Bootstrap Aggregating)是通过随机采样技术并行地训练多个模型,然后通过投票(分类问题)或平均(回归问题)的方式来整合模型的预测结果。随机森林就是一种基于Bagging的集成学习方法。

Boosting则是顺序地训练模型,每一个模型都试图纠正前一个模型的错误。Boosting方法的代表是AdaBoost和梯度提升(Gradient Boosting)。

Stacking(Stacked Generalization)则是将不同模型的预测结果作为输入,训练一个新的模型来进行最终的预测。这种方法可以结合不同模型的优势,提高预测的准确性。

集成学习提高模型准确性的方式主要有:

  • 降低方差:通过组合多个模型,可以降低单个模型由于随机性导致的高方差问题。
  • 降低偏差:不同模型可能从不同的角度捕捉数据的特征,集成学习可以减少模型的偏差。
  • 提高鲁棒性:集成学习可以减少模型对异常值和噪声的敏感性。
  • 利用多样性:不同模型可能具有不同的优缺点,集成学习可以利用这种多样性来提升整体性能。

22. 什么是维度灾难?它是如何影响机器学习模型的?

维度灾难是指当数据的维度(特征数量)增加时,机器学习模型的性能急剧下降,甚至无法有效学习。

参考答案:维度灾难的存在主要是因为随着维度的增加,数据点在高维空间中趋于稀疏,这使得模型难以从有限的数据中学习到有效的模式。具体来说,维度灾难会对机器学习模型产生以下影响:

  • 过拟合:在高维空间中,模型可能会学习到数据中的噪声和偶然规律,而不是真正的潜在模式,导致过拟合。
  • 计算复杂度:高维数据需要更多的计算资源来进行处理和分析,增加了模型训练和预测的计算成本。
  • 数据稀疏性:在高维空间中,数据点之间的距离变得非常大,这使得基于距离的算法(如K-means、KNN)效果变差。
  • 特征冗余:高维数据中可能存在许多冗余或相关性很高的特征,这些特征会干扰模型的学习过程。

为了应对维度灾难,可以采取以下措施:

  • 特征选择:通过选择最有信息量的特征来减少数据的维度。
  • 特征提取:使用PCA等方法将高维数据转换到低维空间。
  • 正则化:通过在损失函数中添加正则化项来控制模型的复杂度。
  • 数据增强:通过生成新的数据点来增加数据的多样性。

23. 什么是梯度提升树(GBDT)?它与决策树有何区别?

梯度提升树是一种集成学习算法,它通过迭代地构建一系列弱学习器(通常是决策树),然后组合它们的预测结果来提高整体模型的性能。

参考答案:梯度提升树的基本思想是在每一次迭代中,根据当前模型的残差(即前一轮模型预测与真实值的差)来构建一个新的弱学习器。新学习器的目标是拟合这个残差,从而减少模型的误差。通过逐步累加这些弱学习器的预测结果,GBDT能够构建出一个强学习器。

与单一决策树相比,GBDT的主要区别在于:

  • 集成多个决策树:GBDT通过集成多个决策树来提高模型的准确性和稳定性。
  • 逐步优化:GBDT在每一步都针对当前模型的残差进行优化,这使得模型能够更精细地拟合数据。
  • 正则化:GBDT中的学习器由于逐步累加,可以引入正则化项来控制模型的复杂度,防止过拟合。

GBDT的优点包括处理各种数据类型的能力、能够自然地处理高维数据、不需要对数据进行复杂的预处理等。然而,GBDT也有一些缺点,如训练过程可能比较慢,模型可能比较复杂,需要仔细调整超参数等。

24. 什么是神经网络?它是如何用于分类和回归问题的?

神经网络是一种受人脑结构启发的计算模型,它由大量的节点(或称为神经元)组成,这些节点通过连接权重进行信息传递和处理。

参考答案:神经网络的基本单元是神经元,它接收输入信号,通过激活函数处理后输出到其他神经元。一个典型的神经网络包含输入层、隐藏层和输出层。输入层接收原始数据,隐藏层负责提取特征和进行非线性变换,输出层则根据任务的不同进行分类或回归。

在分类问题中,神经网络的输出层通常使用softmax函数,它可以将输出转换为概率分布,表示样本属于各个类别的概率。在训练过程中,通过反向传播算法和梯度下降等优化方法,不断调整网络中的权重和偏置,以最小化预测值和真实值之间的差异。

在回归问题中,神经网络的输出层则不使用softmax函数,而是直接输出连续值。同样地,通过反向传播和优化算法来调整网络参数,使得网络的预测输出尽可能接近真实的目标值。

神经网络的优点在于它能够自动学习数据的复杂模式,无需人为设计特征。此外,深度神经网络(具有多个隐藏层的神经网络)在图像识别、语音识别、自然语言处理等领域取得了显著的成果。

25. 什么是深度学习中的过拟合问题?如何避免或减轻过拟合?

过拟合是指深度学习模型在训练数据上表现得非常好,但在未见过的测试数据上表现不佳的现象。这通常是因为模型学习到了训练数据中的噪声和细节,而没有捕捉到数据的潜在分布。

参考答案:避免或减轻过拟合的方法主要包括:

  • 数据增强:通过对训练数据进行变换(如旋转、缩放、裁剪等),生成新的训练样本,以增加数据的多样性。
  • 正则化:在损失函数中添加正则项(如L1或L2正则化),对模型参数施加惩罚,限制模型复杂度。
  • 交叉验证:使用交叉验证来评估模型的泛化能力,并选择最佳的模型参数。
  • 早停法(Early Stopping):在训练过程中,当验证集上的性能不再提升或开始下降时停止训练,以避免过拟合。
  • 集成学习:结合多个模型的预测结果,如随机森林、Bagging和Boosting等方法,以减少过拟合。
  • 简化模型:选择更简单的模型,如线性模型,避免使用过于复杂的模型结构。
  • 超参数调优:通过调整模型的超参数来找到最佳的模型配置,避免过拟合。
  • Dropout:在训练过程中随机丢弃(即暂时移除)网络中的一些节点,减少节点之间复杂的共适应关系。
  • 批量归一化(Batch Normalization):在网络的每一层之后对激活值进行归一化处理,以减少内部协变量偏移。

在实际应用中,通常需要结合多种方法来有效地预防和克服过拟合,以提高模型在新数据上的表现。

26. 什么是卷积神经网络(CNN)中的池化层?它的作用是什么?

池化层是卷积神经网络中的一种结构,通常位于卷积层之后。

参考答案:池化层的作用是对卷积层输出的特征图(feature map)进行下采样,减少数据的空间尺寸,从而减少计算量和防止过拟合。池化操作通常包括最大池化(Max Pooling)和平均池化(Average Pooling)两种。

最大池化是从特征图的局部区域中提取最大值,这有助于突出最重要的特征,同时保持特征的不变性。平均池化则是计算局部区域内所有值的平均值,有助于平滑特征。

池化层的作用主要包括:

  • 降低维度:减少后续层的参数数量和计算量,提高计算效率。
  • 防止过拟合:通过降低特征的空间分辨率,减少模型对小的变化和噪声的敏感度。
  • 增加不变性:池化操作使得模型对输入数据的小的平移、旋转和缩放具有一定程度的不变性。

27. 什么是循环神经网络(RNN)?它在序列数据处理中的优势是什么?

循环神经网络是一种专门用于处理序列数据的神经网络。

参考答案:RNN的特点是网络中存在着循环,即网络的输出不仅依赖于当前输入,还依赖于之前的状态。这种结构使得RNN能够处理任意长度的序列数据,并在序列的时间步之间传递信息。

RNN在序列数据处理中的优势主要包括:

  • 处理变长序列:RNN能够处理不同长度的输入序列,无需固定的输入尺寸。
  • 捕捉时序依赖:RNN能够捕捉序列数据中的时间依赖关系,对于时序预测任务特别有效。
  • 动态特征提取:RNN可以根据输入序列的动态变化自动调整特征提取的过程。

RNN的挑战在于训练过程中的梯度消失或梯度爆炸问题,这使得网络难以学习长距离的依赖关系。为了解决这个问题,研究者提出了长短时记忆网络(LSTM)和门控循环单元(GRU)等变种。

28. 如何从已存在的特征中导出新特征?导出新特征的方法有哪些?

从已存在的特征中导出新特征是特征工程中的一个重要步骤,可以提高模型的预测能力。

参考答案:导出新特征的方法主要包括:

  • 数学变换:对原始特征进行数学运算,如对数、平方、开方、倒数等,以获得新的特征。
  • 特征组合:将两个或多个特征组合成一个新的特征,例如,特征的乘积、商、差等。
  • 多项式特征:使用原始特征的多项式组合,如二次项、交互项等,以捕捉特征间的复杂关系。
  • 分箱(Binning):将连续特征离散化成几个区间,每个区间作为一个新的特征。
  • 文本特征提取:对于文本数据,可以使用TF-IDF、Word2Vec、WordHash等方法提取特征。
  • 时间序列特征:对于时间序列数据,可以提取趋势、季节性、周期性等特征。
  • 特征编码:对分类特征进行编码,如独热编码(One-Hot Encoding)、标签编码(Label Encoding)等。
  • 降维技术:使用PCA、LDA等降维技术,将多个特征映射到一个低维空间,生成新的特征。

导出新特征时,需要考虑新特征是否能够提供额外的信息,以及是否能够改善模型的性能。同时,过多的特征可能会导致过拟合,因此需要通过特征选择或正则化等方法来控制特征的数量和质量。

29. 什么是样本不平衡问题?在机器学习中如何处理样本不平衡?

样本不平衡是指在数据集中,不同类别的样本数量相差悬殊。

参考答案:样本不平衡问题可能导致机器学习模型偏向于多数类,而忽视少数类,从而影响模型对少数类的预测性能。处理样本不平衡的方法主要包括:

  • 重采样:通过对多数类进行下采样或对少数类进行上采样,使得不同类别的样本数量接近。下采样可以通过随机删除多数类的样本实现,而上采样可以通过复制少数类的样本或生成新的合成样本实现。
  • 修改损失函数:对损失函数进行调整,增加少数类样本的权重,使得模型在训练过程中更加关注少数类。
  • 集成学习:使用集成学习方法,如Bagging和Boosting,结合多个模型的预测结果,提高对少数类的识别能力。
  • 代价敏感学习:在模型训练过程中引入代价函数,对不同类别的错误分类赋予不同的代价,使得模型更加关注少数类。
  • 异常检测:将少数类视为异常点,使用异常检测算法来识别这些样本。

处理样本不平衡问题时,需要根据具体的数据和任务来选择合适的方法,并进行适当的调参和验证。

30. 什么是逻辑回归?它与线性回归有什么区别?

逻辑回归是一种广泛使用的分类算法,其输出的是胜算比(Odds Ratio),而非概率。

参考答案:逻辑回归模型的目标是估计给定输入特征下,样本属于某类的概率。在逻辑回归中,我们使用胜算比来表示正类的概率与负类的概率之比。

逻辑回归和线性回归的主要区别在于:

  • 输出类型:线性回归用于预测连续的数值型目标变量,而逻辑回归用于预测二分类或多分类问题的概率。
  • 激活函数:逻辑回归使用sigmoid函数或其他非线性激活函数将线性回归的输出映射到(0,1)区间,表示概率。
  • 损失函数:逻辑回归使用交叉熵损失函数(Cross-Entropy Loss),而线性回归使用均方误差(Mean Squared Error, MSE)作为损失函数。
  • 系数解释:在逻辑回归中,系数表示特征对胜算比的变化率,而在线性回归中,系数表示特征对目标变量的直接影响。
作者 east
Flink, Spark 3月 17,2024

Flink跟Spark Streaming的区别

  1. 架构模型:
    • Spark Streaming:基于 Spark 框架,其运行时主要角色包括 Master、Worker、Driver 和 Executor。Driver 负责创建和管理作业,Executor 则执行任务。
    • Flink:独立的实时处理引擎,主要包含 Jobmanager、Taskmanager 和 Slot。Jobmanager 负责作业的管理和调度,Taskmanager 执行具体的任务。
  2. 任务调度:
    • Spark Streaming:通过连续不断地生成微小的数据批次来处理数据。它构建有向无环图DAG,并依次创建 DStreamGraph、JobGenerator 和 JobScheduler。
    • Flink:根据用户提交的代码生成 StreamGraph,经过优化生成 JobGraph,然后提交给 JobManager 进行处理。JobManager 根据 JobGraph 生成 ExecutionGraph,用于任务调度。
  3. 时间机制:
    • Spark Streaming:仅支持处理时间,即处理数据的时间。
    • Flink:支持处理时间、事件时间和注入时间的定义,并引入 watermark 机制来处理滞后数据。
  4. 容错机制:
    • Spark Streaming:可以设置 checkpoint 来恢复任务,但可能会导致重复处理,无法保证恰好一次处理语义。
    • Flink:使用两阶段提交协议来确保精确的一次处理语义,更好地处理容错。
  5. 数据模型:
    • Spark Streaming:基于 DStream(Discretized Stream)模型,将流数据看作是一系列微小批次的静态数据。
    • Flink:采用更灵活的 DataStream 模型,支持各种数据结构和操作。
  6. 应用场景:
    • Spark Streaming:适用于需要与现有 Spark 生态系统集成的场景,如批处理和交互式查询。
    • Flink:更专注于实时处理,提供更丰富的实时处理特性和更好的低延迟性能。
  7. 性能和扩展性:
    • Flink:在处理大流量和高并发场景时通常具有更好的性能和扩展性。
    • Spark Streaming:在某些情况下可能受到 Spark 核心框架的限制。

通过以上对比,我们可以看出Flink和Spark Streaming在架构模型、任务调度、时间机制和容错机制等方面存在显著差异。Flink作为一个基于事件驱动的实时处理引擎,具有更好的时间机制和容错机制,适用于对准确性要求较高的场景。而Spark Streaming作为一个基于微批的流处理引擎,具有较低的延迟和较高的吞吐量,适用于对性能要求较高的场景。在选择流处理框架时,应根据具体需求和场景选择合适的框架。

作者 east
Spark 3月 16,2024

Spark 用AnyFunSuite单元测试Scala详细教程

在用java开发时,通过用Junit框架来测试,在用spark开发scala时,除了可以用Junit,还可以用AnyFunSuite,无需依赖AnyFunSuite。

步骤一:设置项目依赖
确保您的项目中包含了以下必要的依赖:

<dependency>
  <groupId>org.apache.spark</groupId>
  <artifactId>spark-sql_2.11</artifactId>
  <version>2.4.0</version>
</dependency>

org.apache.spark spark-core_2.11 2.4.0 test

<!-- ScalaTest 依赖 -->
<dependency>
  <groupId>org.scalatest</groupId>
  <artifactId>scalatest_2.11</artifactId>
  <version>3.2.9</version>
  <scope>test</scope>
</dependency>

步骤二、编写单元测试
例如下面wordcount的代码

import org.apache.spark.sql.SparkSession

object WordCount {
def wordCount(input: String): Long = {
val spark = SparkSession.builder().appName(“WordCount”).master(“local[*]”).getOrCreate()
val words = spark.sparkContext.parallelize(input.split(” “))
val count = words.count()
spark.stop()
count
}
}
编写单元测试的代码:

import org.scalatest.funsuite.AnyFunSuite

class WordCountTest extends AnyFunSuite {

test(“wordCount should return correct word count”) {
val input = “Hello world, hello Scala”
val expectedResult = 5
val result = WordCount.wordCount(input)
assert(result == expectedResult)
}

}
步骤三:运行单元测试
在 IDEA 中右键点击测试类名或测试方法名,选择 “Run WordCountTest” 或 “Run ‘wordCount should return correct word count'” 来运行单元测试。您也可以点击绿色的三角形按钮执行所有测试用例。

                      

关注公众号“大模型全栈程序员”回复“大数据面试”获取800页左右大数据面试宝典 ,回复“大数据”获取多本大数据电子书

作者 east
Spark 11月 16,2023

spark sql和mysql在用date_format 比较同日、同月上的差异

在Spark SQL和MySQL中,使用date_format函数比较同日、同周、同月上的差异有一些区别。下面我将分别说明它们的用法和差异。

Spark SQL

在Spark SQL中,你可以使用date_format函数来格式化日期,并结合其他函数来比较同日、同周、同月上的差异。

  1. 比较同日的差异:
sqlCopy CodeSELECT *
FROM table_name
WHERE date_format(date_column, "yyyy-MM-dd") = "2023-11-15";
  1. 比较同月的差异:
sqlCopy CodeSELECT *
FROM table_name
WHERE date_format(date_column, "yyyy-MM") = "2023-11";

MySQL

在MySQL中,date_format函数同样可以用于格式化日期,并且可以与其他函数结合来比较同日、同周、同月上的差异。

  1. 比较同日的差异:
sqlCopy CodeSELECT *
FROM table_name
WHERE date_format(date_column, "%Y-%m-%d") = "2023-11-15";
  1. 比较同月的差异:
sqlCopy CodeSELECT *
FROM table_name
WHERE date_format(date_column, "%Y-%m") = "2023-11";

总体来说,虽然在Spark SQL和MySQL中都可以使用date_format函数来格式化日期并进行比较,但在特定情况下需要留意它们在处理周的起始日上的差异。

关注公众号“大模型全栈程序员”回复“大数据面试”获取800页左右大数据面试宝典 ,回复“大数据”获取多本大数据电子书

作者 east
doris 10月 24,2023

Doris缩容BE节点遇到的坑

使用doris 1.2.4,扩容一点节点后,状态看起来正常,但查询doris时时不时报下面错误:

1105 - RpcException, msg: org.apache.doris.rpc.RpcException: (10.0.60.202)[THRIFT_RPC_ERROR]failed to send brpc batch, error=Host is down, error_text=[E112]Not connected to 10.0.20.102:8060 yet, server_id=34359741324 [R1][E112]Not connected to 10.0.0.2:8060 yet, server_id=34359741324 [R2][E112]Not connected to 10.0.0.2:8060 yet, server_id=34359741324 [R3][E112]Not connected to 10.0.0.2:8060 yet, server_id=34359741324 [R4][E112]Not connected to 10.0.0.2:8060 yet, server_id=34359741324 [R5][E112]Not con

由于不知怎样解决,又是线上环境,赶紧对扩容的节点进行缩容。

由于扩容后的新节点有数据了,要安全缩容,要使用下面的命令

 ALTER SYSTEM DECOMMISSION BACKEND "be_host:be_heartbeat_service_port"; 

如果是下线2个节点:

ALTER SYSTEM DECOMMISSION BACKEND "host1:port", "host2:port";

DECOMMISSION 命令说明:

1、该命令用于安全删除 BE 节点。命令下发后,Doris 会尝试将该 BE 上的数据向其他 BE 节点迁移,当所有数据都迁移完成后,Doris 会自动删除该节点。
2、该命令是一个异步操作。执行后,可以通过 SHOW PROC ‘/backends’; 看到该 BE 节点的 SystemDecommissioned 状态为 true。表示该节点正在进行下线。
3、该命令不一定执行成功。比如剩余 BE 存储空间不足以容纳下线 BE 上的数据,或者剩余机器数量不满足最小副本数时,该命令都无法完成,并且 BE 会一直处于 SystemDecommissioned 为 true 的状态。
4、DECOMMISSION 的进度,可以通过 SHOW PROC ‘/backends’; 中的 TabletNum 查看,如果正在进行,TabletNum 将不断减少。
该操作可以通过:
5、CANCEL DECOMMISSION BACKEND “be_host:be_heartbeat_service_port”;
命令取消。取消后,该 BE 上的数据将维持当前剩余的数据量。后续 Doris 重新进行负载均衡。

没想到用了十几个小时, TabletNum 还没有变0,生产系统又需要使用了。

可以看重要表数据副本是否迁移完成。

ADMIN SHOW REPLICA DISTRIBUTION FROM  数据库名.表名

如果大部分表已经迁移完成,doris数据库是多副本,只有1个副本没迁移完成,这时可以考虑强制下线be端。手动修复数据。

#强制缩容
ALTER SYSTEM DROPP BACKEND "be_host:be_heartbeat_service_port"; 

手动修复表

ADMIN REPAIR TABLE  数据库名.表名

关注公众号“大模型全栈程序员”回复“大数据面试”获取800页左右大数据面试宝典 ,回复“大数据”获取多本大数据电子书

作者 east
doris 10月 17,2023

doris手动添加分区自动消失的问题

在数据仓库开发指标时,需要回溯历史数据,对下面的表改为非动态表并添加更早时间的分区:

-- 改为非动态分区
ALTER TABLE test SET ("dynamic_partition.enable" = "false")
-- 手动添加更早的时间分区
ALTER TABLE test
ADD PARTITION p20230912 VALUES [("2023-09-12"), ("2023-09-13"));
  --改为动态分区
ALTER TABLE test SET ("dynamic_partition.enable" = "true")
CREATE TABLE `test` (
  `id` bigint(20) NOT NULL COMMENT '主键',  
  `dt` date NULL COMMENT '创建时间'
) ENGINE=OLAP
DUPLICATE KEY(`id`)
COMMENT 'olap'
PARTITION BY RANGE(`dt`)
PARTITION p20231010 VALUES [('2023-10-10'), ('2023-10-11')),
PARTITION p20231011 VALUES [('2023-10-11'), ('2023-10-12')),
PARTITION p20231012 VALUES [('2023-10-12'), ('2023-10-13')),
PARTITION p20231013 VALUES [('2023-10-13'), ('2023-10-14')),
PARTITION p20231014 VALUES [('2023-10-14'), ('2023-10-15')),
PARTITION p20231015 VALUES [('2023-10-15'), ('2023-10-16')),
PARTITION p20231016 VALUES [('2023-10-16'), ('2023-10-17')),
PARTITION p20231017 VALUES [('2023-10-17'), ('2023-10-18')),
PARTITION p20231018 VALUES [('2023-10-18'), ('2023-10-19')),
PARTITION p20231019 VALUES [('2023-10-19'), ('2023-10-20')),
PARTITION p20231020 VALUES [('2023-10-20'), ('2023-10-21')))
DISTRIBUTED BY HASH(`id`) BUCKETS 10
PROPERTIES (
"replication_allocation" = "tag.location.default: 1",
"dynamic_partition.enable" = "true",
"dynamic_partition.time_unit" = "DAY",
"dynamic_partition.time_zone" = "Asia/Shanghai",
"dynamic_partition.start" = "-7",
"dynamic_partition.end" = "3",
"dynamic_partition.prefix" = "p",
"dynamic_partition.replication_allocation" = "tag.location.default: 1",
"dynamic_partition.buckets" = "10",
"dynamic_partition.create_history_partition" = "false",
"dynamic_partition.history_partition_num" = "-1",
"dynamic_partition.hot_partition_num" = "0",
"dynamic_partition.reserved_history_periods" = "NULL",
"dynamic_partition.storage_policy" = "",
"in_memory" = "false",
"storage_format" = "V2",
"disable_auto_compaction" = "false"
);

然而奇怪的事情发生了,创建的p20230912 不见了,后来考虑到可能是动态分区搞的鬼,是由于没有正确动态分区的属性 。

看到表结构的”dynamic_partition.start” = “-7”,这表示
动态分区的起始范围。表示从今天开始向前7天。 而
p20230912 远远超过这个范围,后来把这个值调大后,果然不会凭空消失了。

ALTER TABLE test SET
(    "dynamic_partition.start" = "-75"
);

关注公众号“大模型全栈程序员”回复“大数据面试”获取800页左右大数据面试宝典 ,回复“大数据”获取多本大数据电子书

作者 east
chatgpt, 大模型 10月 12,2023

NLP民工的乐园: 最全最新的大模型(ChatGPT)中文NLP资源库

引用自:
fighting41love/funNLP

The Most Powerful NLP-Weapon Arsenal

NLP民工的乐园: 几乎最全的中文NLP资源库

在入门到熟悉NLP的过程中,用到了很多github上的包,遂整理了一下,分享在这里。

很多包非常有趣,值得收藏,满足大家的收集癖! 如果觉得有用,请分享并star⭐,谢谢!

长期不定时更新,欢迎watch和fork!❤️❤️❤️

🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥                  
* 类ChatGPT的模型评测对比
* 类ChatGPT的资料
* 类ChatGPT的开源框架
* LLM的训练_推理_低资源_高效训练
* 提示工程
* 类ChatGPT的文档问答
* 类ChatGPT的行业应用
* 类ChatGPT的课程资料
* LLM的安全问题
* 多模态LLM
* LLM的数据集
🍆 🍒 🍐 🍊                  🌻 🍓 🍈 🍅 🍍                    
* 语料库
* 词库及词法工具
* 预训练语言模型
* 抽取
* 知识图谱
* 文本生成
* 文本摘要
* 智能问答
* 文本纠错
* 文档处理
* 表格处理
* 文本匹配
* 文本数据增强
* 文本检索
* 阅读理解
* 情感分析
* 常用正则表达式
* 语音处理
* 常用正则表达式
* 事件抽取
* 机器翻译
* 数字转换
* 指代消解
* 文本聚类
* 文本分类
* 知识推理
* 可解释NLP
* 文本对抗攻击
* 文本可视化
* 文本标注工具
* 综合工具
* 有趣搞笑工具
* 课程报告面试等
* 比赛
* 金融NLP
* 医疗NLP
* 法律NLP
* 文本生成图像
* 其他

类ChatGPT的模型评测对比

资源名(Name)描述(Description)链接
ChatALL:可以同时与多个AI聊天机器人(含清华、讯飞的产品)可以同时与多个AI聊天机器人(如ChatGPT、Bing Chat、Bard、Alpaca、Vincuna、Claude、ChatGLM、MOSS、iFlytek Spark、ERNIE等)进行对话的工具。它可以并行发送提示给不同的AI机器人,帮助用户找到最好的回答github-ChatALL
Chatbot Arena实际场景用Elo rating对 LLM 进行基准测试 – 介绍了 Chatbot Arena,一种针对大型语言模型 (LLM) 的基准平台,采用匿名、随机的方式进行对抗评测,评测方式基于国际象棋等竞技游戏中广泛使用的 Elo rating system。发布了9个流行的开源 LLM 模型的 Elo rating 并推出排行榜。平台采用 FastChat 多模型服务系统,在多个语言下提供交互式界面,数据来源于用户投票。总结了 Chatbot Arena 的优点并计划提供更好的采样算法、排名和服务系统截止2023年5月3日
类ChatGPT模型评测总结大型语言模型(LLM)受到广泛关注,这些强大的模型能够理解复杂的信息,并对各种问题提供类人的回应。其中GPT-3和GPT-4表现最好,Flan-t5和Lit-LLaMA表现也不错。但要注意,模型商用可能需要付费和数据共享blog
大型语言模型(LLMs)大盘点blog
大模型评测方面的最新研究长文本建模一直是ChaGPT令人惊艳的能力之一,我们以【篇章翻译】为实验场景,对大模型的篇章建模能力进行全面、细粒度的测试。paper
中文大模型评测工具&排行榜C-Eval是一个全面的中文评估套件,适用于基础模型。它包含13948个多项选择题,涵盖52个不同的学科和四个难度级别,具体如下所示。请访问我们的网站或查阅我们的论文获取更多详细信息。githubpaper
OpenCompass 大模型评测OpenCompass 上海人工智能实验室开发的一款开源、高效、全面的评测大模型体系及开放平台,提供完整开源可复现的评测框架,支持大语言模型、多模态模型各类模型的一站式评测。利用分布式技术,即使面对千亿参数模型也能在数小时内完成评测。基于多个不同维度的高认可度数据集开放多样化的评测方式,包括零样本评测、小样本评测和思维链评测,全方位量化模型各个维度能力。github website

类ChatGPT的资料

资源名(Name)描述(Description)链接
Open LLMs:可供商业使用的开放大型语言模型(LLM)A list of open LLMs available for commercial usegithub
LLM Zoo: 大型语言模型的数据、模型和基准集市LLM Zoo: democratizing ChatGPT – a project that provides data, models, and evaluation benchmark for large language modelsgithub
大型语言模型(LLM)资料合集相关论文列表,包括指导、推理、决策、持续改进和自我提升等方面的研究工作LLM资料合集
DecryptPrompt总结Prompt&LLM论文,开源数据&模型,AIGC应用github
SmartGPT旨在为大型语言模型(尤其是GPT-3.5和GPT-4)提供完成复杂任务的能力,通过将它们分解成更小的问题,并使用互联网和其他外部来源收集信息。特点包括模块化设计,易于配置,以及对插件的高度支持。SmartGPT的运作基于”Autos”的概念,包括”Runner”和”Assistant”两种类型,都配有处理计划、推理和任务执行的LLM代理。此外,SmartGPT还具有内存管理系统,以及可以定义各种命令的插件系统github-SmartGPT
OpenGPT用于创建基于指令的数据集并训练对话领域专家大型语言模型(LLMs)的框架。已经成功应用于训练健康护理对话模型NHS-LLM,利用来自英国国家卫生服务体系(NHS)网站的数据,生成了大量的问答对和独特对话github-OpenGPT
PaLM 2技术报告Google最新发布PaLM 2,一种新的语言模型,具有更好的多语言和推理能力,同时比其前身PaLM更节省计算资源。PaLM 2综合了多项研究进展,包括计算最优的模型和数据规模、更多样化和多语言的数据集、以及更有效的模型架构和目标函数。PaLM 2在多种任务和能力上达到了最先进的性能,包括语言水平考试、分类和问答、推理、编程、翻译和自然语言生成等。PaLM 2还展示了强大的多语言能力,能够处理数百种语言,并在不同语言之间进行翻译和解释。PaLM 2还考虑了负责任的使用问题,包括推理时控制毒性、减少记忆化、评估潜在的伤害和偏见等PaLM 2 Technical Report
DB-GPT于vicuna-13b和FastChat的开源实验项目,采用了langchain和llama-index技术进行上下文学习和问答。项目完全本地化部署,保证数据的隐私安全,能直接连接到私有数据库处理私有数据。其功能包括SQL生成、SQL诊断、数据库知识问答等github-DB-GPT
Transformers相关文献资源大列表包含了各种各样的Transformer模型,例如BERT、GPT、Transformer-XL等,这些模型已经在许多自然语言处理任务中得到了广泛应用。此外,该列表还提供了这些模型的相关论文和代码链接,为自然语言处理领域的研究人员和开发者提供了很好的参考资源github
GPT-4终极指南一份关于如何使用GPT3和GPT4的指南,其中包括100多个资源,可以帮助学习如何用它来提高生活效率。包括如何学习ChatGPT基础知识、如何学习ChatGPT高级知识、如何在语言学习中使用GPT-3、如何在教学中使用GPT-3、如何使用GPT-4等,还提供了如何升级到ChatGPT+计划以使用GPT-4以及如何免费使用GPT-4的方法等内容。同时,还提供了如何在业务、生产力、受益、金钱等方面使用ChatGPT的指南link
基于LoRA的LLM参数高效微调link
复杂推理:大语言模型的北极星能力在 GPT-4 发布博客中,作者写道:“在一次随意的谈话中,GPT-3.5 和 GPT-4 之间的区别可能是微妙的。当任务的复杂程度达到足够的阈值时,差异就会显现出来。”这意味着复杂任务很可能是大型和小型语言模型的关键差异因素。在这篇文章中,我们将仔细分析讨论如何让大语言模型拥有强大的复杂推理能力。blog
大型语言模型的涌现能力是否是海市蜃楼?大语言模型的涌现能力一直是被大家视作很神奇的现象,似乎是一种大力出奇迹,但这篇论文认为这可能只是一种错觉。paper
大语言模型的概率总结非常详尽的LLM科学解释和总结paper
LLaMA 模型简史LLaMA是Meta发布的语言模型,采用Transformer架构,有多个版本,最大为65B参数。与GPT类似,可用于进一步微调,适用于多种任务。与GPT不同的是,LLaMA是开源的,可以在本地运行。现有的LLaMA模型包括:Alpaca、Vicuna、Koala、GPT4-x-Alpaca和WizardLM。每个模型都有不同的训练数据和性能表现blog
大型语言模型的复杂推理讨论了如何训练具有强大复杂推理能力的语言模型,并探讨了如何有效地提示模型以充分释放其潜力;针对语言模型和编程的训练相似性,提出了三阶段的训练:持续训练、监督微调和强化学习;介绍了评估大型语言模型推理能力的一套任务集合;讨论了如何进行提示工程,通过提供各种学习机会使模型获得更好的学习效果,最终实现智能化link
大语言模型进化树paper
李宏毅:穷人如何低资源复刻自己的ChatGPTblog
训练ChatGPT的必备资源:语料、模型和代码库完全指南资源链接论文地址
GitHub宝藏库,里面整理了GPT相关的各种开源项目github
ChatGPT中文指南gitlab
探讨了ChatGPT在自然语言处理中的应用、优势、限制以及未来发展方向强调了在使用该技术时的伦理道德考量和提示工程技术。paper
大型语言模型相关文献资源列表github
大型语言模型文献综述–中文版github
ChatGPT 相关资源大列表github
Pre-Training to Learn in Contextpaper
Langchain架构图image
LLM开发人员都应该知道的数字github
大语言模型如何构建强大的复杂推理能力blog
LLMs九层妖塔分享打怪(ChatGLM、Chinese-LLaMA-Alpaca、MiniGPT-4、FastChat、LLaMA、gpt4all等)实战与经验github

类ChatGPT的开源框架

资源名(Name)描述(Description)链接
LLM-As-Chatbot这个项目把市面上有的LLM全部做成了Chatbot,直接可以在google colab运行,不需要自己搭建,非常适用于想体验LLM的朋友们。我刚试了,真的超简单。有些LLM需要的显存比较多,所以最好是要有colab pro订阅。github
OpenBuddy一款强大的开源多语言聊天机器人模型,目标是全球用户,重点是对话AI和流畅的多语言支持,包括英文、中文等多种语言。基于Facebook的LLAMA模型,进行了微调,包括扩展词汇表、增加常用字符和增强的token embeddings。通过这些改进和多轮对话数据集,OpenBuddy提供了一个强大的模型,能回答问题并在各种语言之间进行翻译任务。OpenBuddy的使命是提供一个免费、开放且可离线使用的AI模型,该模型可以在用户的设备上运行,无论他们的语言或文化背景如何。目前,OpenBuddy-13B的演示版本可以在Discord服务器上找到。其关键功能包括多语言对话AI(包括中文、英文、日文、韩文、法文等)、增强的词汇表和对常见CJK字符的支持,以及两种模型版本:7B和13Bgithub-OpenBuddy
Panda: 海外中文开源大语言模型基于 Llama-7B, -13B, -33B, -65B 进行中文领域上的持续预训练,使用了接近15M条数据,并针对推理能力在中文benchmark上进行了评测github-PandaLM
Dromedary:一个开源的自对齐语言模型,只需少量人工监督即可进行训练github-Dromedary
LaMini-LM 蒸馏的小型、高效的语言模型集合从 ChatGPT 蒸馏的小型、高效的语言模型集合,在2.58 M 指令大规模数据集上进行训练github
LLaMA-Adapter V2上海人工智能实验室 LLaMA-Adapter V2,仅注入14M参数,1小时时间即可完成训练,对比较果确实很惊艳,且具有多模态功能(对图像进行解释和问答)github
HuggingChatHugging Face 推出第一个 ChatGPT 开源替代品:HuggingChat。基于 Open Assistant 大模型搭建,支持中文对话与编写代码,但暂不支持中文回复。应用已上线,无需代理,打开即可访问link
Open-Chinese-LLaMA基于 LLaMA-7B 经过 中文数据集增量预训练 产生的 中文大语言模型基座github
OpenLLaMALLaMA模型的开源复现,在RedPajama数据集上训练,使用了与LLaMA相同的预处理步骤和超参数,模型结构,上下文长度,训练步骤,学习率调度和优化器。OpenLLaMA的PyTorch和Jax权重可以在Huggingface Hub上获得。OpenLLaMA在各种任务中展现出与LLaMA和GPT-J相似的表现,部分任务表现优异github
replit-code-v1-3bBY-SA 4.0授权发布,这意味着允许商业使用link
MOSSMOSS是一个支持中英双语和多种插件的开源对话语言模型,moss-moon系列模型具有160亿参数,在FP16精度下可在单张A100/A800或两张3090显卡运行,在INT4/8精度下可在单张3090显卡运行。MOSS基座语言模型在约七千亿中英文以及代码单词上预训练得到,后续经过对话指令微调、插件增强学习和人类偏好训练具备多轮对话能力及使用多种插件的能力。github
RedPajama1.2 万亿tokens数据集link
chinese_llama_alpaca_lora 抽取框架github
Scaling Transformer to 1M tokens and beyond with RMT该论文提出一种名为 RMT 的新技术,或许可将 Transform 的 Token 上限扩展至 100 万,甚至更多。github
Open Assistant包含大量AI生成的、人工标注的语料库和包括基于LLaMA和基于Pythia的多种模型可选。发布的数据集包括超过161K较高质量的,多达35种语言的人工助手型交互对话语料库data model
ChatGLM Efficient Tuning基于 PEFT 的高效 ChatGLM 微调github
Dolly介绍news
Baize:一种对自聊天数据进行参数高效调优的开源聊天模型Baize是一个开源的聊天模型,可以进行多轮对话。它是通过使用ChatGPT自我对话生成高质量的多轮聊天语料库,并使用参数高效调整来增强LLaMA(一个开源的大型语言模型)而创建的。Baize模型在具有最小潜在风险的情况下表现出良好的多轮对话性能。它可以在单个GPU上运行,使更广泛的研究人员可以使用它。Baize模型和数据仅用于研究目的。论文地址源码地址
GPTrillion–未找到开源代码包含1.5万亿(1.5T)参数的大模型GPTrillion开源了,号称是目前世界上最大的开源LLMgoogle_doc
Cerebras-GPT-13B(可商用)hugging_face
Chinese-ChatLLaMA中文ChatLLaMA对话模型;预训练/指令微调数据集,基于 TencentPretrain 多模态预训练框架构建,支持简繁体中文、英文、日文等多语言github
Lit-LLaMA基于Apache 2.0许可证完全开源的LLaMA独立实现,建立在nanoGPT之上,旨在解决原始LLaMA代码采用GPL许可证的限制,以实现更广泛的学术和商业应用github
MosaicMLMPT-7B-StoryWriter,65K tokens,可以把《了不起的盖茨比》都一次性扔进去。huggingface
Langchain大型语言模型(LLMs)正在成为一项具有变革性的技术,使开发者能够构建以前无法实现的应用程序。然而,仅仅使用这些独立的LLMs通常不足以创建一个真正强大的应用程序 – 真正的力量来自于能够将它们与其他计算或知识来源相结合。github
Guidance引导能够比传统的提示或链接更有效地控制现代语言模型,并且更高效。引导程序允许您将生成、提示和逻辑控制交错到单一连续流中,与语言模型实际处理文本的方式相匹配。像”Chain of Thought”及其许多变体(例如ART、Auto-CoT等)这样的简单输出结构已被证明能改善语言模型的性能。更强大的语言模型(如GPT-4)的出现使得更丰富的结构成为可能,而引导则使得构建这种结构变得更加容易和经济。github
WizardLM赋予大型预训练语言模型遵循复杂指令的能力,使用完整进化指令(约300k)训练的WizardLM-7B模型github

LLM的训练_推理_低资源_高效训练

资源名(Name)描述(Description)链接
QLoRA–Guanaco一种高效的微调方法,可以在单个48GB的GPU上微调一个拥有65B参数的模型,同时保持完整的16位微调任务性能,并通过QLoRA将梯度反向传播通过一个冻结的、4位量化的预训练语言模型到低秩适配器(LoRA)github
Chinese-Guanaco一个中文低资源的量化训练/部署方案github
DeepSpeed Chat: 一键式RLHF训练github
LLMTune: 在消费级GPU上微调大型65B+LLM可以在普通消费级GPU上进行4位微调,例如最大的65B LLAMA模型。LLMTune还实现了LoRA算法和GPTQ算法来压缩和量化LLM,并通过数据并行处理大型模型。此外,LLMTune提供了命令行界面和Python库的使用方式github
基于ChatGLM-6B+LoRA在指令数据集上进行微调基于deepspeed支持多卡微调,速度相比单卡提升8-9倍具体设置可见 微调3 基于DeepSpeed进行Lora微调github
微软发布RLHF训练工具DeepSpeed Chatgithub
LlamaChat:Mac上基于LLaMa的聊天机器人github
ChatGPT/GPT4开源“平替”们github
训练大型机器学习模型的实用建议和技巧帮助您训练大型模型(>1B 参数)、避免不稳定性、保存开始失败的实验而不从 0 重新开始link
Instruction Tuning with GPT-4paper
xturing一个Python软件包,用于高效、快速、简单地微调LLM模型,支持LLaMA、GPT-J、GPT-2等多种模型,可使用单GPU和多GPU训练,使用LoRA等高效微调技术可将硬件成本降低高达90%,并在短时间内完成模型训练github
GPT4All一个允许在Macbook本地运行GPT的开源项目。基于LLaMa-7B大语言模型打造,包括数据、代码和demo都是开源的,对话风格偏向AI助理github
用Alpaca-LoRA微调ChatGPT类模型link
LMFlow可扩展、方便有效的工具箱,用于微调大型机器学习模型github
闻达:大型语言模型调用平台目前支持chatGLM-6B、chatRWKV、chatYuan和chatGLM-6B模型下的chatPDF(自建知识库查找)’github
Micro Agent小型自主智能体开源项目,由LLM(OpenAI GPT-4)提供动力,可以为你编写软件,只需设置一个“目的”,让它自己工作github
Llama-X开源的学术研究项目,通过社区共同努力,逐步将LLaMA的性能提高到SOTA LLM水平,节省重复工作,共同创造更多、更快的增量github
Chinese-LLaMA-Alpaca中文LLaMA&Alpaca大语言模型+本地部署 (Chinese LLaMA & Alpaca LLMs) – 开源了经过中文文本数据预训练的中文LLaMA大模型;开源了进一步经过指令精调的中文Alpaca大模型;快速地使用笔记本电脑(个人PC)本地部署和体验量化版大模型github
Efficient Alpaca基于LLaMA实现的开源项目,旨在通过微调 LLaMA-7B模型在资源消耗更少、推理速度更快、更适合研究者使用方面提高Stanford Alpaca的性能github
ChatGLM-6B-Slim裁减掉20K图片Token的ChatGLM-6B,完全一样的性能,占用更小的显存github
Chinese-Vicuna一个中文低资源的llama+lora方案github
Alpaca-LoRA用LoRA在消费级硬件上复现斯坦福Alpaca的结果github
LLM Accelerator让基础大模型更聪明的LLM Accelerator来了!基础大模型正在诸多应用中发挥着日益重要的作用。大多数大语言模型的训练都是采取自回归的方式进行生成,虽然自回归模型生成的文本质量有所保证,但却导致了高昂的推理成本和长时间的延迟。由于大模型的参数量巨大、推理成本高,因此如何在大规模部署大模型的过程中降低成本、减小延迟是一个关键课题。针对此问题,微软亚洲研究院的研究员们提出了一种使用参考文本无损加速大语言模型推理的方法 LLM Accelerator,在大模型典型的应用场景中可以取得两到三倍的加速。blog
大语言模型(LLM)微调技术笔记github
PyLLMs简洁的 Python 库,用于连接各种 LLM(OpenAI、Anthropic、Google、AI21、Cohere、Aleph Alpha、HuggingfaceHub),内置模型性能基准。非常适合快速原型设计和评估不同模型,具有以下特点:通过少量代码连接顶级 LLM;响应元数据包括处理的Token、成本和延迟,对各个模型进行标准化;支持多模型:同时从不同模型获取补全;LLM 基准:评估模型的质量、速度和成本github
用混合精度加速大型语言模型通过使用低精度浮点数运算,可以将训练和推断速度提升多达3倍,同时不影响模型准确性blog
新的LLM训练方法 Federate杜克大学和微软一起发布了一个新的LLM训练方法 Federated GPT,这个训练方法是将原本中心化的训练方法分散到不同的边缘设备里面(edge device),然后训练完成后,再上传到中心去将各子模型合并。github

提示工程

资源名(Name)描述(Description)链接
OpenBuprompt-engineering-note提示工程笔记(课程总结)》介绍了面向开发者的 ChatGPT Prompt Engineering Learning Notes 课程,该课程提供了语言模型的工作原理和提示工程实践,并展示了如何将语言模型 API 应用于各种任务的应用程序中。课程包括总结、推断、转换、扩展和打造聊天机器人等方面的内容,并讲述了如何设计好的提示和构建自定义聊天机器人。github-OpenBuprompt
提示工程指南link
AIGC提示工程学习站 Learn PromptChatGPT/Midjourney/Runwaylink
Prompts 精选 – ChatGPT 使用指南ChatGPT 使用指南,提升 ChatGPT 可玩性和可用性github
非官方的ChatGPT资源聚合列表,旨在汇总使用ChatGPT旨在汇总使用ChatGPT的应用、Web应用、浏览器扩展、CLI工具、机器人、集成、软件包、文章等资源github
Snack Prompt:ChatGPT Prompt提示分享社区link
ChatGPT提问技巧如何向 ChatGPT 提问以获得高质量答案:提示技巧工程完全指南github
rompt-Engineering-Guide-Chinese – 提示工程师指南源自英文版,但增加了AIGC的prompt部分github
OpenPrompt一个开放的共享Prompt社区,大家一起推荐好用的promptgithub
GPT-Prompts教你如何用GPT生成Promptsgithub

类ChatGPT的文档问答

资源名(Name)描述(Description)链接
privateGPT基于GPT4All-J的私有化部署文档问答平台,无需联网,能100%保证用户的隐私不泄露。提供了一个API,用户可以使用自己的文档进行交互式问答和生成文本。此外,平台支持自定义训练数据和模型参数,以满足个性化需求github-privateGPT
Auto-evaluator文档问答的自动评估 ;、github
PDF GP一个基于 GPT 实现的开源 PDF 文档聊天方案,主要实现以下功能:跟 PDF 文档进行一对一对话;自动切割内容,并使用强大的深度平均网络编码器来生成嵌入;对 PDF 内容执行语义搜索,并将最相关的嵌入传递给 Open AI;自定义逻辑,生成更精确的响应信息,速度要比 OpenAI 的快。github
Redis-LLM-Document-Chat用LlamaIndex、Redis和OpenAI与PDF文档进行交互,包含一个Jupyter笔记本,演示了如何使用Redis作为向量数据库来存储和检索文档向量,还展示了如何使用LlamaIndex在文档中执行语义搜索,以及如何利用OpenAI提供类似聊天机器人的体验github
doc-chatbotGPT-4 + Pinecone + LangChain + MongoDB实现的文档聊天机器人,可多文件、多话题和多窗口聊天,聊天历史由MongoDB保存github
document.ai基于向量数据库与GPT3.5的通用本地知识库方案(A universal local knowledge base solution based on vector database and GPT3.5)github
DocsGPTDocsGPT是一种尖端的开源解决方案,可以简化在项目文档中查找信息的过程。通过集成强大的GPT模型,开发人员可以轻松地提出关于项目的问题并获得准确的答案。github
ChatGPT Retrieval PluginChatGPT检索插件存储库提供了一种灵活的解决方案,可以使用自然语言查询对个人或组织文档进行语义搜索和检索。github
LamaIndexlamaIndex(GPT索引)是您的LLM应用程序的数据框架。github
chatWebChatWeb可以爬取任意网页或PDF,DOCX,TXT文件并提取正文,可以生成嵌入式概要,可以根据正文内容回答你的问题。 基于gpt3.5的chatAPI和embeddingAPI,以及向量数据库实现。github

类ChatGPT的行业应用

资源名(Name)描述(Description)链接
新闻报道进行情感分析用ChatGPT通过对上市公司的新闻报道进行情感分析,在15个月时间内在股票市场(交易期权)产生了500%的回报(在历史数据中测试得出的结果)——探讨了ChatGPT在利用新闻标题的情感分析来预测股市回报方面的潜力。发现ChatGPT的情感分析能力超过了传统的方法,并且与股市回报呈正相关。提出ChatGPT在金融经济领域有很大的价值,并对未来的研究和应用提出了一些启示和建议paper
编程语言生成模型 StarCoderBigCode是 ServiceNow Inc. 和 Hugging Face Inc. 合作成立的。StarCoder 有多个版本。核心版本 StarCoderBase 具有 155 亿个参数,支持80多种编程语言,8192个token的上下文。视频为其vscode插件效果github
CodeGen2: Lessons for Training LLMs on Programming and Natural Languagescode generationpaper
MedicalGPT-zh:中文医疗通用语言模型中文医疗通用语言模型,基于28个科室的医疗共识与临床指南文本,提高模型的医疗领域知识与对话能力github
MagicSlides不少人梦寐以求的AI自作PPT,免费版每月能做3个PPT,支持2500字输入link
SalesGPT使用LLM实现上下文感知的销售助手,可自动化销售拓展代表的活动,如外呼销售电话github
华驼(HuaTuo): 基于中文医学知识的LLaMA微调模型github
ai-code-translator帮助你把代码从一种语言翻译成另一种语言,这事对ChatGPT来说简直太擅长了,尤其是GPT-4,翻译质量相当高,而且tokens长度也可以更长。github
ChatGenTitle使用百万arXiv论文信息在LLaMA模型上进行微调的论文题目生成模型github
Regex.ai一款所见即所得的,基于 AI 的正则表达式自动生成工具,只需要选择出数据,它就能帮你写正则表达式,并提供多种提取数据的方式video
ChatDoctor一个基于医学领域知识微调LLaMA的医学聊天模型,其中医学数据包含大约700种疾病的数据、以及大约5000段医生和病人的对话记录paper
CodeGPT提高编程能力的关键在于数据。CodeGPT是通过GPT生成的用于GPT的代码对话数据集。现在公开了32K条中文数据,让模型更擅长编程github
LaWGPT一系列基于中文法律知识的开源大语言模型github
LangChain-ChatGLM-Webui受langchain-ChatGLM启发, 利用LangChain和ChatGLM-6B系列模型制作的Webui, 提供基于本地知识的大模型应用.目前支持上传 txt、docx、md、pdf等文本格式文件, 提供包括ChatGLM-6B系列、Belle系列等模型文件以及GanymedeNil/text2vec-large-chinese、nghuyong/ernie-3.0-base-zh、nghuyong/ernie-3.0-nano-zh等Embedding模型.github

类ChatGPT的课程资料

资源名(Name)描述(Description)链接
Databricks(Dolly模型的作者)在edX发布了两个免费课程程,其中第二个是关于LLM是如何构建的。link
大语言模型技术分享系列东北大学自然语言处理实验室video
GPT-4是如何工作的?如何利用GPT-4打造智能程序?哈佛大学CS50公开课video
提示工程最佳实践:Andrew Ng 提示工程新课摘要+LangChain经验总结medium_blog
微调LLM模型如果你对微调LLM模型感兴趣,一定要关注这个油管博主,他把几乎世面上所有的LLM模型都公开了微调的方法。油管博主 Sam Witteveen
Transformer的架构解读通俗易懂的介绍youtube1youtube2 youtube3
Transformer multi head机制的视频如果想要真正理解整个Transform的每一个细节,包括里面的数学原理,可以看一下这个视频,真的是剖析地非常详细youtube
Introduction to Large Language Models大语言模型介绍介绍了大型语言模型(Large Language Models,LLMs)的概念、使用场景、提示调整以及Google的Gen AI开发工具。

LLM的安全问题

资源名(Name)描述(Description)链接
LLM模型安全研究link
Chatbot Injections & Exploit收集了一些Chatbot注入和漏洞的例子,以帮助人们了解Chatbot的潜在漏洞和脆弱性。注入和攻击的方式包括命令注入、字符编码、社交工程、表情符号、Unicode等。仓库提供了一些示例,其中一些包括可用于攻击Chatbot的表情符号列表github
GPTSecurity一个涵盖了前沿学术研究和实践经验分享的社区,集成了生成预训练 Transformer(GPT)、人工智能生成内容(AIGC)以及大型语言模型(LLM)等安全领域应用的知识。在这里,您可以找到关于GPT/AIGC/LLM最新的研究论文、博客文章、实用的工具和预设指令(Prompts)。github

多模态LLM

资源名(Name)描述(Description)链接
DeepFloyd IF高度逼真且具有语言理解能力的最新开源文本到图像模型,由一个冻结文本编码器和三个连续的像素扩散模块组成,是一个高效的模型,性超越了当前最先进的模型,在COCO数据集上实现了零样本的FID得分为6.66github
Multi-modal GPT用多模态GPT训练一个能同时接收视觉和语言指令的聊天机器人。基于OpenFlamingo多模态模型,使用各种开放数据集创建各种视觉指导数据,联合训练视觉和语言指导,有效提高模型性能github
AudioGPTUnderstanding and Generating Speech, Music, Sound, and Talking Head’ by AIGC-Audiogithub
text2image-prompt-generator基于GPT-2用25万条Midjourney的promps训练出来的小模型,可以生成高质量的Midjourney promptlink data
汇总6个Midjourney以外的免费以文生图服务:Bing Image Creator Playground AI DreamStudio Pixlr Leonardo AI Craiyon
BARK一个非常强大的TTS(文字转语音)项目,这个项目的特点是,它可以在文字中加入提示词,比如“大笑”。这个提示词会变成笑的声音,然后合成到语音里去。它也可以混合“男声”,“女声”,这样再做就可以不用再做拼接操作了github
whisper在语音转文字(STT,也称ASR)方面,whisper是我用过的最好的,最快的库。没想到,这么快的模型,还能70x的优化空间。我准备部署这个模型,并开放给大家使用,可以用来转录大的语音文件,和进行翻译。这个模型是多语言的,而且能自动识别是什么语言,真的非常强大github
OFA-Chinese:中文多模态统一预训练模型transformers结构的中文OFA模型github
文生图开源模型试炼场可根据输入文字同时用stable-diffusion 1.5、stable-diffusion 2.1、DALL-E、kandinsky-2等模型生成图像,方便测试比较link
LLMScoreLLMScore是一种全新的框架,能够提供具有多粒度组合性的评估分数。它使用大语言模型(LLM)来评估文本到图像生成模型。首先,将图像转化为图像级别和对象级别的视觉描述,然后将评估指令输入到LLM中,以衡量合成图像与文本的对齐程度,并最终生成一个评分和解释。我们的大量分析显示,LLMScore在众多数据集上与人类判断的相关性最高,明显优于常用的文本-图像匹配度量指标CLIP和BLIP。papergithub
VisualGLM-6BVisualGLM-6B 是一个开源的,支持图像、中文和英文的多模态对话语言模型,语言模型基于 ChatGLM-6B,具有 62 亿参数;图像部分通过训练 BLIP2-Qformer 构建起视觉模型与语言模型的桥梁,整体模型共78亿参数。github

LLM的数据集

资源名(Name)描述(Description)链接
歧义数据集能否正确的消除歧义是衡量大语言模型的一个重要指标。不过一直没有一个标准化的衡量方法,这篇论文提出了一个包含1,645个具有不同种类歧义的数据集及对应的评估方法。github paper
thu指令训练数据设计了一套流程来自动产生多样化高质量的多轮指令对话数据UltraChat,并进行了细致的人工后处理。现已将英文数据全部开源,共计150余万条,是开源社区数量最多的高质量指令数据之一github
多模态数据集MMC45.8亿图片,1亿文档,400亿tokengithub
EleutherAI 数据800g的文本语料给你整合好了免费下载,不知道trian出来的model质量如何,打算试试:pile data paper
UltraChat大规模、信息丰富、多样化的多轮对话数据github
ConvFinQA金融数据问答github
The botbots dataset一个包含对话内容的数据集,对话内容来自于两个ChatGPT实例(gpt-3.5-turbo),CLT命令和对话提示来自GPT-4,覆盖多种情境和任务,生成成本约为35美元,可用于研究和训练更小的对话模型(如Alpaca)github
alpaca_chinese_dataset – 人工精调的中文对话数据集github
CodeGPT-data提高编程能力的关键在于数据。CodeGPT是通过GPT生成的用于GPT的代码对话数据集。现在公开了32K条中文数据,让模型更擅长编程github

语料库

资源名(Name)描述(Description)链接
人名语料库wainshine/Chinese-Names-Corpus
Chinese-Word-Vectors各种中文词向量github repo
中文聊天语料该库搜集了包含豆瓣多轮, PTT八卦语料, 青云语料, 电视剧对白语料, 贴吧论坛回帖语料,微博语料,小黄鸡语料link
中文谣言数据该数据文件中,每一行为一条json格式的谣言数据github
中文问答数据集链接 提取码 2dva
微信公众号语料3G语料,包含部分网络抓取的微信公众号的文章,已经去除HTML,只包含了纯文本。每行一篇,是JSON格式,name是微信公众号名字,account是微信公众号ID,title是题目,content是正文github
中文自然语言处理 语料、数据集github
任务型对话英文数据集【最全任务型对话数据集】主要介绍了一份任务型对话数据集大全,这份数据集大全涵盖了到目前在任务型对话领域的所有常用数据集的主要信息。此外,为了帮助研究者更好的把握领域进展的脉络,我们以Leaderboard的形式给出了几个数据集上的State-of-the-art实验结果。github
语音识别语料生成工具从具有音频/字幕的在线视频创建自动语音识别(ASR)语料库github
LitBankNLP数据集支持自然语言处理和计算人文学科任务的100部带标记英文小说语料github
中文ULMFiT情感分析 文本分类 语料及模型github
省市区镇行政区划数据带拼音标注github
教育行业新闻 自动文摘 语料库github
中文自然语言处理数据集github
维基大规模平行文本语料85种语言、1620种语言对、135M对照句github
古诗词库github repo
更全的古诗词库
低内存加载维基百科数据用新版nlp库加载17GB+英文维基语料只占用9MB内存遍历速度2-3 Gbit/sgithub
对联数据700,000 couplets, 超过70万对对联github
《配色辞典》数据集github
42GB的JD客服对话数据(CSDD)github
70万对联数据link
用户名黑名单列表github
依存句法分析语料4万句高质量标注数据Homepage
人民日报语料处理工具集github
虚假新闻数据集 fake news corpusgithub
诗歌质量评价/细粒度情感诗歌语料库github
中文自然语言处理相关的开放任务数据集以及当前最佳结果github
中文缩写数据集github
中文任务基准测评代表性的数据集-基准(预训练)模型-语料库-baseline-工具包-排行榜github
中文谣言数据库github
CLUEDatasetSearch中英文NLP数据集搜索所有中文NLP数据集,附常用英文NLP数据集github
多文档摘要数据集github
让人人都变得“彬彬有礼”礼貌迁移任务在保留意义的同时将非礼貌语句转换为礼貌语句,提供包含139M + 实例的数据集paper and code
粤语/英语会话双语语料库github
中文NLP数据集列表github
类人名/地名/组织机构名的命名体识别数据集github
中文语言理解测评基准包括代表性的数据集&基准模型&语料库&排行榜github
OpenCLaP多领域开源中文预训练语言模型仓库民事文书、刑事文书、百度百科github
中文全词覆盖BERT及两份阅读理解数据DRCD数据集:由中国台湾台达研究院发布,其形式与SQuAD相同,是基于繁体中文的抽取式阅读理解数据集。
CMRC 2018数据集:哈工大讯飞联合实验室发布的中文机器阅读理解数据。根据给定问题,系统需要从篇章中抽取出片段作为答案,形式与SQuAD相同。
github
Dakshina数据集十二种南亚语言的拉丁/本地文字平行数据集合github
OPUS-100以英文为中心的多语(100种)平行语料github
中文阅读理解数据集github
中文自然语言处理向量合集github
中文语言理解测评基准包括代表性的数据集、基准(预训练)模型、语料库、排行榜github
NLP数据集/基准任务大列表github
LitBankNLP数据集支持自然语言处理和计算人文学科任务的100部带标记英文小说语料github
70万对联数据github
文言文(古文)-现代文平行语料短篇章中包括了《论语》、《孟子》、《左传》等篇幅较短的古籍,已和《资治通鉴》合并github
COLDDateset,中文冒犯性语言检测数据集涵盖了种族、性别和地区等话题内容,数据待论文发表后放出paper
GAOKAO-bench:以中国高考题目作为数据集以中国高考题目作为数据集,评估大语言模型的语言理解能力和逻辑推理能力的测评框架,包含1781道选择题、218道填空题和812道解答题github
zero to nlp – 中文nlp应用数据、模型、训练、推理github

词库及词法工具

资源名(Name)描述(Description)链接
textfilter中英文敏感词过滤observerss/textfilter
人名抽取功能中文(现代、古代)名字、日文名字、中文的姓和名、称呼(大姨妈、小姨妈等)、英文->中文名字(李约翰)、成语词典cocoNLP
中文缩写库全国人大: 全国 人民 代表大会; 中国: 中华人民共和国;女网赛: 女子/n 网球/n 比赛/vngithub
汉语拆字词典漢字 拆法 (一) 拆法 (二) 拆法 (三) 拆 手 斥 扌 斥 才 斥kfcd/chaizi
词汇情感值山泉水:0.400704566541
充沛: 0.37006739587
rainarch/SentiBridge
中文词库、停用词、敏感词dongxiexidian/Chinese
python-pinyin汉字转拼音mozillazg/python-pinyin
zhtools中文繁简体互转skydark/nstools
英文模拟中文发音引擎say wo i ni #说:我爱你tinyfool/ChineseWithEnglish
chinese_dictionary同义词库、反义词库、否定词库guotong1988/chinese_dictionary
wordninja无空格英文串分割、抽取单词wordninja
汽车品牌、汽车零件相关词汇data
THU整理的词库IT词库、财经词库、成语词库、地名词库、历史名人词库、诗词词库、医学词库、饮食词库、法律词库、汽车词库、动物词库link
罪名法务名词及分类模型包含856项罪名知识图谱, 基于280万罪名训练库的罪名预测,基于20W法务问答对的13类问题分类与法律资讯问答功能github
分词语料库+代码百度网盘链接 – 提取码 pea6
基于Bi-LSTM + CRF的中文分词+词性标注keras实现link
基于Universal Transformer + CRF 的中文分词和词性标注link
快速神经网络分词包java version
chinese-xinhua中华新华字典数据库及api,包括常用歇后语、成语、词语和汉字github
SpaCy 中文模型包含Parser, NER, 语法树等功能。有一些英文package使用spacy的英文模型的,如果要适配中文,可能需要使用spacy中文模型。github
中文字符数据github
Synonyms中文近义词工具包github
HarvestText领域自适应文本挖掘工具(新词发现-情感分析-实体链接等)github
word2word方便易用的多语言词-词对集62种语言/3,564个多语言对github
多音字词典数据及代码github
汉字、词语、成语查询接口github
103976个英语单词库包(sql版,csv版,Excel版)github
英文脏话大列表github
词语拼音数据github
186种语言的数字叫法库github
世界各国大规模人名库github
汉字字符特征提取器 (featurizer)提取汉字的特征(发音特征、字形特征)用做深度学习的特征github
char_featurizer – 汉字字符特征提取工具github
中日韩分词库mecab的Python接口库github
g2pC基于上下文的汉语读音自动标记模块github
ssc, Sound Shape Code音形码 – 基于“音形码”的中文字符串相似度计算方法version 1
version 2
blog/introduction
基于百科知识库的中文词语多词义/义项获取与特定句子词语语义消歧github
Tokenizer快速、可定制的文本词条化库github
Tokenizers注重性能与多功能性的最先进分词器github
通过同义词替换实现文本“变脸”github
token2index与PyTorch/Tensorflow兼容的强大轻量词条索引库github
繁简体转换github
粤语NLP工具github
领域词典库涵盖68个领域、共计916万词的专业词典知识库github

预训练语言模型&大模型

资源名(Name)描述(Description)链接
BMList大模型大列表github
bert论文中文翻译link
bert原作者的slideslink
文本分类实践github
bert tutorial文本分类教程github
bert pytorch实现github
bert pytorch实现github
BERT生成句向量,BERT做文本分类、文本相似度计算github
bert、ELMO的图解github
BERT Pre-trained models and downstream applicationsgithub
语言/知识表示工具BERT & ERNIEgithub
Kashgari中使用gpt-2语言模型github
Facebook LAMA用于分析预训练语言模型中包含的事实和常识知识的探针。语言模型分析,提供Transformer-XL/BERT/ELMo/GPT预训练语言模型的统一访问接口github
中文的GPT2训练代码github
XLMFacebook的跨语言预训练语言模型github
海量中文预训练ALBERT模型github
Transformers 20支持TensorFlow 20 和 PyTorch 的自然语言处理预训练语言模型(BERT, GPT-2, RoBERTa, XLM, DistilBert, XLNet…) 8种架构/33种预训练模型/102种语言github
8篇论文梳理BERT相关模型进展与反思github
法文RoBERTa预训练语言模型用138GB语料训练的法文RoBERTa预训练语言模型link
中文预训练 ELECTREA 模型基于对抗学习 pretrain Chinese Modelgithub
albert-chinese-ner用预训练语言模型ALBERT做中文NERgithub
开源预训练语言模型合集github
中文ELECTRA预训练模型github
用Transformers(BERT, XLNet, Bart, Electra, Roberta, XLM-Roberta)预测下一个词(模型比较)github
TensorFlow Hub40+种语言的新语言模型(包括中文)link
UER基于不同语料、编码器、目标任务的中文预训练模型仓库(包括BERT、GPT、ELMO等)github
开源预训练语言模型合集github
多语言句向量包github
Language Model as a Service (LMaaS)语言模型即服务github
开源语言模型GPT-NeoX-20B200亿参数,是目前最大的可公开访问的预训练通用自回归语言模型github
中文科学文献数据集(CSL)包含 396,209 篇中文核心期刊论文元信息 (标题、摘要、关键词、学科、门类)。CSL 数据集可以作为预训练语料,也可以构建许多NLP任务,例如文本摘要(标题预测)、 关键词生成和文本分类等。github
大模型开发神器github

抽取

资源名(Name)描述(Description)链接
时间抽取已集成到 python package cocoNLP中,欢迎试用java version
python version
神经网络关系抽取 pytorch暂不支持中文github
基于bert的命名实体识别 pytorch暂不支持中文github
关键词(Keyphrase)抽取包 pkegithub
BLINK最先进的实体链接库github
BERT/CRF实现的命名实体识别github
支持批并行的LatticeLSTM中文命名实体识别github
构建医疗实体识别的模型包含词典和语料标注,基于pythongithub
基于TensorFlow和BERT的管道式实体及关系抽取– Entity and Relation Extraction Based on TensorFlow and BERT 基于TensorFlow和BERT的管道式实体及关系抽取,2019语言与智能技术竞赛信息抽取任务解决方案。Schema based Knowledge Extraction, SKE 2019github
中文命名实体识别NeuroNER vs BertNERgithub
基于BERT的中文命名实体识别github
中文关键短语抽取工具github
bert用于中文命名实体识别 tensorflow版本github
bert-Kashgari基于 keras 的封装分类标注框架 Kashgari,几分钟即可搭建一个分类或者序列标注模型github
cocoNLP人名、地址、邮箱、手机号、手机归属地 等信息的抽取,rake短语抽取算法。github
Microsoft多语言数字/单位/如日期时间识别包github
百度开源的基准信息抽取系统github
中文地址分词(地址元素识别与抽取),通过序列标注进行NERgithub
基于依存句法的开放域文本知识三元组抽取和知识库构建github
基于预训练模型的中文关键词抽取方法github
chinese_keyphrase_extractor (CKPE)A tool for chinese keyphrase extraction 一个快速从自然语言文本中提取和识别关键短语的工具github
简单的简历解析器,用来从简历中提取关键信息github
BERT-NER-Pytorch三种不同模式的BERT中文NER实验github

知识图谱

资源名(Name)描述(Description)链接
清华大学XLORE中英文跨语言百科知识图谱百度、中文维基、英文维基link
文档图谱自动生成github
基于医疗领域知识图谱的问答系统github
该repo参考了github
中文人物关系知识图谱项目github
AmpliGraph 知识图谱表示学习(Python)库知识图谱概念链接预测github
中文知识图谱资料、数据及工具github
基于百度百科的中文知识图谱抽取三元组信息,构建中文知识图谱github
Zincbase 知识图谱构建工具包github
基于知识图谱的问答系统github
知识图谱深度学习相关资料整理github
东南大学《知识图谱》研究生课程(资料)github
知识图谱车音工作项目github
《海贼王》知识图谱github
132个知识图谱的数据集涵盖常识、城市、金融、农业、地理、气象、社交、物联网、医疗、娱乐、生活、商业、出行、科教link
大规模、结构化、中英文双语的新冠知识图谱(COKG-19)link
基于依存句法与语义角色标注的事件三元组抽取github
抽象知识图谱目前规模50万,支持名词性实体、状态性描述、事件性动作进行抽象github
大规模中文知识图谱数据14亿实体github
Jiagu自然语言处理工具以BiLSTM等模型为基础,提供知识图谱关系抽取 中文分词 词性标注 命名实体识别 情感分析 新词发现 关键词 文本摘要 文本聚类等功能github
medical_NER – 中文医学知识图谱命名实体识别github
知识图谱相关学习资料/数据集/工具资源大列表github
LibKGE面向可复现研究的知识图谱嵌入库github
基于mongodb存储的军事领域知识图谱问答项目包括飞行器、太空装备等8大类,100余小类,共计5800项的军事武器知识库,该项目不使用图数据库进行存储,通过jieba进行问句解析,问句实体项识别,基于查询模板完成多类问题的查询,主要是提供一种工业界的问答思想demo。github
京东商品知识图谱github
基于远监督的中文关系抽取github
基于医药知识图谱的智能问答系统github
BLINK最先进的实体链接库github
一个小型的证券知识图谱/知识库github
dstlr非结构化文本可扩展知识图谱构建平台github
百度百科人物词条属性抽取用基于BERT的微调和特征提取方法来进行知识图谱github
新冠肺炎相关数据新冠及其他类型肺炎中文医疗对话数据集;清华大学等机构的开放数据源(COVID-19)github
github
DGL-KE 图嵌入表示学习算法github
因果关系图谱method data
基于多领域文本数据集的因果事件对link

文本生成

资源名(Name)描述(Description)链接
TexarToolkit for Text Generation and Beyondgithub
Ehud Reiter教授的博客link 北大万小军教授强力推荐,该博客对NLG技术、评价与应用进行了深入的探讨与反思。
文本生成相关资源大列表github
开放域对话生成及在微软小冰中的实践自然语言生成让机器掌握自动创作的本领link
文本生成控制github
自然语言生成相关资源大列表github
用BLEURT评价自然语言生成link
自动对联数据及机器人代码 link
70万对联数据
自动生成评论用Transformer编解码模型实现的根据Hacker News文章标题生成评论github
自然语言生成SQL语句(英文)github
自然语言生成资源大全github
中文生成任务基准测评github
基于GPT2的特定主题文本生成/文本增广github
编码、标记和实现一种可控高效的文本生成方法github
TextFooler针对文本分类/推理的对抗文本生成模块github
SimBERT基于UniLM思想、融检索与生成于一体的BERT模型github
新词生成及造句不存在的词用GPT-2变体从头生成新词及其定义、例句github
由文本自动生成多项选择题github
合成数据生成基准github

文本摘要

资源名(Name)描述(Description)链接
中文文本摘要/关键词提取github
基于命名实体识别的简历自动摘要github
文本自动摘要库TextTeaser仅支持英文github
基于BERT等最新语言模型的抽取式摘要提取github
Python利用深度学习进行文本摘要的综合指南link
(Colab)抽象文本摘要实现集锦(教程github

智能问答

资源名(Name)描述(Description)链接
中文聊天机器人根据自己的语料训练出自己想要的聊天机器人,可以用于智能客服、在线问答、智能聊天等场景github
有趣的情趣robot qingyunqingyun 训练出来的中文聊天机器人github
开放了对话机器人、知识图谱、语义理解、自然语言处理工具及数据github
qa对的机器人Amodel-for-Retrivalchatbot – 客服机器人,Chinese Retreival chatbot(中文检索式机器人)git
ConvLab开源多域端到端对话系统平台github
基于最新版本rasa搭建的对话系统github
基于金融-司法领域(兼有闲聊性质)的聊天机器人github
端到端的封闭域对话系统github
MiningZhiDaoQACorpus580万百度知道问答数据挖掘项目,百度知道问答语料库,包括超过580万的问题,每个问题带有问题标签。基于该问答语料库,可支持多种应用,如逻辑挖掘github
用于中文闲聊的GPT2模型GPT2-chitchatgithub
基于检索聊天机器人多轮响应选择相关资源列表(Leaderboards、Datasets、Papers)github
微软对话机器人框架github
chatbot-list行业内关于智能客服、聊天机器人的应用和架构、算法分享和介绍github
Chinese medical dialogue data 中文医疗对话数据集github
一个大规模医疗对话数据集包含110万医学咨询,400万条医患对话github
大规模跨领域中文任务导向多轮对话数据集及模型CrossWOZpaper & data
开源对话式信息搜索平台github
情境互动多模态对话挑战2020(DSTC9 2020)github
用Quora问题对训练的T5问题意译(Paraphrase)github
Google发布Taskmaster-2自然语言任务对话数据集github
Haystack灵活、强大的可扩展问答(QA)框架github
端到端的封闭域对话系统github
Amazon发布基于知识的人-人开放领域对话数据集github
基于百度webqa与dureader数据集训练的Albert Large QA模型github
CommonsenseQA面向常识的英文QA挑战link
MedQuAD(英文)医学问答数据集github
基于Albert、Electra,用维基百科文本作为上下文的问答引擎github
基于14W歌曲知识库的问答尝试功能包括歌词接龙,已知歌词找歌曲以及歌曲歌手歌词三角关系的问答github

文本纠错

资源名(Name)描述(Description)链接
中文文本纠错模块代码github
英文拼写检查库github
python拼写检查库github
GitHub Typo Corpus大规模GitHub多语言拼写错误/语法错误数据集github
BertPunc基于BERT的最先进标点修复模型github
中文写作校对工具github
文本纠错文献列表Chinese Spell Checking (CSC) and Grammatical Error Correction (GEC)github
文本智能校对大赛冠军方案已落地应用,来自苏州大学、达摩院团队link

多模态

资源名(Name)描述(Description)链接
中文多模态数据集「悟空」华为诺亚方舟实验室开源大型,包含1亿图文对github
中文图文表征预训练模型Chinese-CLIP中文版本CLIP预训练模型,开源多个模型规模,几行代码搞定中文图文表征提取 & 图文检索github

语音处理

资源名(Name)描述(Description)链接
ASR 语音数据集 + 基于深度学习的中文语音识别系统github
清华大学THCHS30中文语音数据集data_thchs30tgz-OpenSLR国内镜像
data_thchs30tgz
test-noisetgz-OpenSLR国内镜像test-noisetgz
resourcetgz-OpenSLR国内镜像
resourcetgz
Free ST Chinese Mandarin Corpus
Free ST Chinese Mandarin Corpus
AIShell-1 开源版数据集-OpenSLR国内镜像
AIShell-1 开源版数据集
Primewords Chinese Corpus Set 1-OpenSLR国内镜像
Primewords Chinese Corpus Set 1
笑声检测器github
Common Voice语音识别数据集新版包括来自42,000名贡献者超过1,400小时的语音样本,涵githublink
speech-aligner从“人声语音”及其“语言文本”,产生音素级别时间对齐标注的工具github
ASR语音大辞典/词典github
语音情感分析github
masr中文语音识别,提供预训练模型,高识别率github
面向语音识别的中文文本规范化github
语音质量评价指标(MOSNet, BSSEval, STOI, PESQ, SRMR)github
面向语音识别的中文/英文发音辞典github
CoVoSTFacebook发布的多语种语音-文本翻译语料库包括11种语言(法语、德语、荷兰语、俄语、西班牙语、意大利语、土耳其语、波斯语、瑞典语、蒙古语和中文)的语音、文字转录及英文译文github
Parakeet基于PaddlePaddle的文本-语音合成github
(Java)准确的语音自然语言检测库github
CoVoSTFacebook发布的多语种语音-文本翻译语料库github
TensorFlow 2 实现的文本语音合成github
Python音频特征提取包github
ViSQOL音频质量感知客观、完整参考指标,分音频、语音两种模式github
zhrtvc好用的中文语音克隆兼中文语音合成系统github
aukit好用的语音处理工具箱,包含语音降噪、音频格式转换、特征频谱生成等模块github
phkit好用的音素处理工具箱,包含中文音素、英文音素、文本转拼音、文本正则化等模块github
zhvoice中文语音语料,语音更加清晰自然,包含8个开源数据集,3200个说话人,900小时语音,1300万字github
audio面向语音行为检测、二值化、说话人识别、自动语音识别、情感识别等任务的音频标注工具github
深度学习情感文本语音合成github
Python音频数据增广库github
基于大规模音频数据集Audioset的音频增强github
语声迁移github

文档处理

资源名(Name)描述(Description)链接
LayoutLM-v3文档理解模型github
PyLaia面向手写文档分析的深度学习工具包github
单文档非监督的关键词抽取github
DocSearch免费文档搜索引擎github
fdfgen能够自动创建pdf文档,并填写信息link
pdfx自动抽取出引用参考文献,并下载对应的pdf文件link
invoice2data发票pdf信息抽取invoice2data
pdf文档信息抽取github
PDFMinerPDFMiner能获取页面中文本的准确位置,以及字体或行等其他信息。它还有一个PDF转换器,可以将PDF文件转换成其他文本格式(如HTML)。还有一个可扩展的解析器PDF,可以用于文本分析以外的其他用途。link
PyPDF2PyPDF 2是一个python PDF库,能够分割、合并、裁剪和转换PDF文件的页面。它还可以向PDF文件中添加自定义数据、查看选项和密码。它可以从PDF检索文本和元数据,还可以将整个文件合并在一起。link
PyPDF2PyPDF 2是一个python PDF库,能够分割、合并、裁剪和转换PDF文件的页面。它还可以向PDF文件中添加自定义数据、查看选项和密码。它可以从PDF检索文本和元数据,还可以将整个文件合并在一起。link
ReportLabReportLab能快速创建PDF 文档。经过时间证明的、超好用的开源项目,用于创建复杂的、数据驱动的PDF文档和自定义矢量图形。它是免费的,开源的,用Python编写的。该软件包每月下载5万多次,是标准Linux发行版的一部分,嵌入到许多产品中,并被选中为Wikipedia的打印/导出功能提供动力。link
SIMPdfPython写的简单PDF文件文字编辑器github
pdf-diffPDF文件diff工具 可显示两个pdf文档的差别github

表格处理

资源名(Name)描述(Description)链接
用unet实现对文档表格的自动检测,表格重建github
pdftabextract用于OCR识别后的表格信息解析,很强大link
tabula-py直接将pdf中的表格信息转换为pandas的dataframe,有java和python两种版本代码
camelotpdf表格解析link
pdfplumberpdf表格解析
PubLayNet能够划分段落、识别表格、图片link
从论文中提取表格数据github
用BERT在表格中寻找答案github
表格问答的系列文章简介
模型
完结篇
使用GAN生成表格数据(仅支持英文)github
carefree-learn(PyTorch)表格数据集自动化机器学习(AutoML)包github
封闭域微调表格检测github
PDF表格数据提取工具github
TaBERT理解表格数据查询的新模型paper
表格处理Awesome-Table-Recognitiongithub

文本匹配

资源名(Name)描述(Description)链接
句子、QA相似度匹配MatchZoo文本相似度匹配算法的集合,包含多个深度学习的方法,值得尝试。github
中文问题句子相似度计算比赛及方案汇总github
similarity相似度计算工具包java编写,用于词语、短语、句子、词法分析、情感分析、语义分析等相关的相似度计算github
中文词语相似度计算方法综合了同义词词林扩展版与知网(Hownet)的词语相似度计算方法,词汇覆盖更多、结果更准确。gihtub
Python字符串相似性算法库github
基于Siamese bilstm模型的相似句子判定模型,提供训练数据集和测试数据集提供了10万个训练样本github

文本数据增强

资源名(Name)描述(Description)链接
中文NLP数据增强(EDA)工具github
英文NLP数据增强工具github
一键中文数据增强工具github
数据增强在机器翻译及其他nlp任务中的应用及效果link
NLP数据增广资源集github

常用正则表达式

资源名(Name)描述(Description)链接
抽取email的正则表达式已集成到 python package cocoNLP中,欢迎试用
抽取phone_number已集成到 python package cocoNLP中,欢迎试用
抽取身份证号的正则表达式IDCards_pattern = r’^([1-9]\d{5}[12]\d{3}(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])\d{3}[0-9xX])
IDs = re.findall(IDCards_pattern, text, flags=0)
IP地址正则表达式(25[0-5]| 2[0-4]\d| [0-1]\d{2}| [1-9]?\d).(25[0-5]| 2[0-4]\d| [0-1]\d{2}| [1-9]?\d).(25[0-5]| 2[0-4]\d| [0-1]\d{2}| [1-9]?\d).(25[0-5]| 2[0-4]\d| [0-1]\d{2}| [1-9]?\d)
腾讯QQ号正则表达式[1-9]([0-9]{5,11})
国内固话号码正则表达式[0-9-()()]{7,18}
用户名正则表达式[A-Za-z0-9_-\u4e00-\u9fa5]+
国内电话号码正则匹配(三大运营商+虚拟等)github
正则表达式教程github

文本检索

资源名(Name)描述(Description)链接
高效模糊搜索工具github
面向各语种/任务的BERT模型大列表/搜索引擎link
Deepmatch针对推荐、广告和搜索的深度匹配模型库github
wwsearch是企业微信后台自研的全文检索引擎github
aili – the fastest in-memory index in the East 东半球最快并发索引github
高效的字符串匹配工具 RapidFuzza fast string matching library for Python and C++, which is using the string similarity calculations from FuzzyWuzzygithub

阅读理解

资源名(Name)描述(Description)链接
高效模糊搜索工具github
面向各语种/任务的BERT模型大列表/搜索引擎link
Deepmatch针对推荐、广告和搜索的深度匹配模型库github
allennlp阅读理解支持多种数据和模github

情感分析

资源名(Name)描述(Description)链接
方面情感分析包github
awesome-nlp-sentiment-analysis情感分析、情绪原因识别、评价对象和评价词抽取github
情感分析技术让智能客服更懂人类情感github

事件抽取

资源名(Name)描述(Description)链接
中文事件抽取github
NLP事件提取文献资源列表github
PyTorch实现的BERT事件抽取(ACE 2005 corpus)github
新闻事件线索抽取github

机器翻译

资源名(Name)描述(Description)链接
无道词典有道词典的命令行版本,支持英汉互查和在线查询github
NLLB支持200+种语言任意互译的语言模型NLLBlink
Easy-Translate在本地翻译大文本文件的脚本,基于Facebook/Meta AI的 M2M100模型和NLLB200模型,支持200+种语言github

数字转换

资源名(Name)描述(Description)链接
最好的汉字数字(中文数字)-阿拉伯数字转换工具github
快速转化「中文数字」和「阿拉伯数字」github
将自然语言数字串解析转换为整数和浮点数github

指代消解

资源名(Name)描述(Description)链接
中文指代消解数据github
baidu ink code a0qq

文本聚类

资源名(Name)描述(Description)链接
TextCluster短文本聚类预处理模块 Short text clustergithub

文本分类

资源名(Name)描述(Description)链接
NeuralNLP-NeuralClassifier腾讯开源深度学习文本分类工具github

知识推理

资源名(Name)描述(Description)链接
GraphbrainAI开源软件库和科研工具,目的是促进自动意义提取和文本理解以及知识的探索和推断github
(哈佛)讲因果推理的免费书pdf

可解释自然语言处理

资源名(Name)描述(Description)链接
文本机器学习模型最先进解释器库github

文本攻击

资源名(Name)描述(Description)链接
TextAttack自然语言处理模型对抗性攻击框架github
OpenBackdoor: 文本后门攻防工具包OpenBackdoor基于Python和PyTorch开发,可用于复现、评估和开发文本后门攻防的相关算法github

文本可视化

资源名(Name)描述(Description)链接
Scattertext 文本可视化(python)github
whatlies词向量交互可视化spacy工具
PySS3面向可解释AI的SS3文本分类器机器可视化工具github
用记事本渲染3D图像github
attnvisGPT2、BERT等transformer语言模型注意力交互可视化github
Texthero文本数据高效处理包包括预处理、关键词提取、命名实体识别、向量空间分析、文本可视化等github

文本标注工具

资源名(Name)描述(Description)链接
NLP标注平台综述github
brat rapid annotation tool 序列标注工具link
Poplar网页版自然语言标注工具github
LIDA轻量交互式对话标注工具github
doccano基于网页的开源协同多语言文本标注工具github
Datasaurai 在线数据标注工作流管理工具link

语言检测

资源名(Name)描述(Description)链接
langid97种语言检测https://github.com/saffsd/langid.py
langdetect语言检测https://code.google.com/archive/p/language-detection/

综合工具

资源名(Name)描述(Description)链接
jiebajieba
hanlphanlp
nlp4han中文自然语言处理工具集(断句/分词/词性标注/组块/句法分析/语义分析/NER/N元语法/HMM/代词消解/情感分析/拼写检github
仇恨言论检测进展link
基于Pytorch的Bert应用包括命名实体识别、情感分析、文本分类以及文本相似度等github
nlp4han中文自然语言处理工具集断句/分词/词性标注/组块/句法分析/语义分析/NER/N元语法/HMM/代词消解/情感分析/拼写检查github
一些关于自然语言的基本模型github
用BERT进行序列标记和文本分类的模板代码github
jieba_fast 加速版的jiebagithub
StanfordNLP纯Python版自然语言处理包link
Python口语自然语言处理工具集(英文)github
PreNLP自然语言预处理库github
nlp相关的一些论文及代码包括主题模型、词向量(Word Embedding)、命名实体识别(NER)、文本分类(Text Classificatin)、文本生成(Text Generation)、文本相似性(Text Similarity)计算等,涉及到各种与nlp相关的算法,基于keras和tensorflowgithub
Python文本挖掘/NLP实战示例github
Forte灵活强大的自然语言处理pipeline工具集github
stanza斯坦福团队NLP工具可处理六十多种语言github
Fancy-NLP用于建设商品画像的文本知识挖掘工具github
全面简便的中文 NLP 工具包github
工业界常用基于DSSM向量化召回pipeline复现github
Texthero文本数据高效处理包包括预处理、关键词提取、命名实体识别、向量空间分析、文本可视化等github
nlpgnn图神经网络自然语言处理工具箱github
Macadam以Tensorflow(Keras)和bert4keras为基础,专注于文本分类、序列标注和关系抽取的自然语言处理工具包github
LineFlow面向所有深度学习框架的NLP数据高效加载器github
Arabica:Python文本数据探索性分析工具包github
Python 压力测试工具:SMSBoomgithub

有趣搞笑工具

资源名(Name)描述(Description)链接
汪峰歌词生成器phunterlau/wangfeng-rnn
女友 情感波动分析github
NLP太难了系列github
变量命名神器github link
图片文字去除,可用于漫画翻译github
CoupletAI – 对联生成基于CNN+Bi-LSTM+Attention 的自动对对联系统github
用神经网络符号推理求解复杂数学方程github
基于14W歌曲知识库的问答机器人功能包括歌词接龙,已知歌词找歌曲以及歌曲歌手歌词三角关系的问答github
COPE – 格律诗编辑程序github
Paper2GUI一款面向普通人的AI桌面APP工具箱,免安装即开即用,已支持18+AI模型,内容涵盖语音合成、视频补帧、视频超分、目标检测、图片风格化、OCR识别等领域github
礼貌程度估算器(使用新浪微博数据训练)github paper
草蟒(Python 中文版)入门指南中文编程语言homepage gitee

课程报告面试等

资源名(Name)描述(Description)链接
自然语言处理报告link
知识图谱报告link
数据挖掘报告link
自动驾驶报告link
机器翻译报告link
区块链报告link
机器人报告link
计算机图形学报告link
3D打印报告link
人脸识别报告link
人工智能芯片报告link
cs224n深度学习自然语言处理课程link 课程中模型的pytorch实现 link
面向深度学习研究人员的自然语言处理实例教程github
《Natural Language Processing》by Jacob Eisensteingithub
ML-NLP机器学习(Machine Learning)、NLP面试中常考到的知识点和代码实现github
NLP任务示例项目代码集github
2019年NLP亮点回顾download
nlp-recipes微软出品–自然语言处理最佳实践和范例github
面向深度学习研究人员的自然语言处理实例教程github
Transfer Learning in Natural Language Processing (NLP)youtube
《机器学习系统》图书link github

比赛

资源名(Name)描述(Description)链接
NLPer-ArsenalNLP竞赛,含当前赛事信息、过往竞赛方案等,持续更新中github
复盘所有NLP比赛的TOP方案github
2019年百度的三元组抽取比赛,“科学空间队”源码(第7名)github

金融自然语言处理

资源名(Name)描述(Description)链接
BDCI2019金融负面信息判定github
开源的金融投资数据提取工具github
金融领域自然语言处理研究资源大列表github
基于金融-司法领域(兼有闲聊性质)的聊天机器人github
小型金融知识图谱构流程示范github

医疗自然语言处理

资源名(Name)描述(Description)链接
中文医学NLP公开资源整理github
spaCy 医学文本挖掘与信息提取github
构建医疗实体识别的模型包含词典和语料标注,基于pythongithub
基于医疗领域知识图谱的问答系统github 该repo参考了github
Chinese medical dialogue data 中文医疗对话数据集github
一个大规模医疗对话数据集包含110万医学咨询,400万条医患对话github
新冠肺炎相关数据新冠及其他类型肺炎中文医疗对话数据集;清华大学等机构的开放数据源(COVID-19)github
github

法律自然语言处理

资源名(Name)描述(Description)链接
Blackstone面向非结构化法律文本的spaCy pipeline和NLP模型github
法务智能文献资源列表github
基于金融-司法领域(兼有闲聊性质)的聊天机器人github
罪名法务名词及分类模型包含856项罪名知识图谱, 基于280万罪名训练库的罪名预测,基于20W法务问答对的13类问题分类与法律资讯问答功能github
法律NLP相关资源大列表github

文本生成图像

资源名(Name)描述(Description)链接
Dalle-mini根据文本提示生成图片的迷你版DALL·Egithub

其他

资源名(Name)描述(Description)链接
phone中国手机归属地查询ls0f/phone
phone国际手机、电话归属地查询AfterShip/phone
ngender根据名字判断性别observerss/ngender
中文对比英文自然语言处理NLP的区别综述link
各大公司内部里大牛分享的技术文档 PDF 或者 PPTgithub
comparxiv 用于比较arXiv上两提交版本差异的命令pypi
CHAMELEON深度学习新闻推荐系统元架构github
简历自动筛选系统github
Python实现的多种文本可读性评价指标github
作者 east
mysql, 大数据开发 10月 12,2023

sql聚合函数嵌套问题 aggregate function cannot contain aggregate parameters

在需求的应用场景,需要对create_time字段求最小值并求和,刚开始理所当然写成像下面这样:

 SUM(COALESCE (CASE WHEN MIN(crl.create_time)  BETWEEN date_add(date_sub(current_date(), 1), -1 * (open_case_day_num % 6)) AND current_date() AND  crl.approval_status in('0','1') and crl.del_flag = '0' THEN  CAST(crl.repay_total AS DECIMAL(10, 2)) END,0))

SUM聚合函数又嵌套MIN函数,果然报错了:
1105 – errCode = 2, detailMessage = aggregate function cannot contain aggregate parameters

这是因为 根据错误日志,问题出在了对于SUM函数中的聚合参数的使用上。在Spark SQL中,聚合函数不能包含聚合参数,也就是不允许在聚合函数内部再使用其他聚合函数。

解决方案是可以先使用子查询,将MIN(create_time)计算结果作为一个新的列,然后在外层查询中对这个新列和其他列进行求和,如下所示:

SELECT SUM(amount), SUM(min_create_time)
FROM (
  SELECT amount, MIN(create_time) AS min_create_time
  FROM your_table
  GROUP BY amount
) t;

其中,我们首先在子查询中计算每个amount的最小create_time,并将结果存储在名为min_create_time的新列中。然后,在外部查询中,我们对amount列和min_create_time列同时进行汇总。

需要注意的是,在子查询中,我们只能按照amount列进行分组,否则会导致结果不正确。如果还有其他需要汇总的列,则需要在子查询中一并处理。

关注公众号“大模型全栈程序员”回复“大数据面试”获取800页左右大数据面试宝典 ,回复“大数据”获取多本大数据电子书

作者 east
Spark 10月 7,2023

spark sql如何行转列

在数据仓库中,行转列通常称为”变形”(Pivoting) 或 “透视”(Pivoting),可使用Spark SQL的pivot语句实现。下面是一个简单的示例:

假设我们有如下表格:

+-------+-------+------+
| name  | brand | year |
+-------+-------+------+
| Alice | BMW   | 2017 |
| Bob   | Tesla | 2018 |
| Alice | Tesla | 2019 |
| Bob   | BMW   | 2020 |
+-------+-------+------+

我们想要把该表中的品牌列转换为4列,分别表示不同的品牌,而值则为对应品牌的年份。具体操作如下:

SELECT name, 
       COALESCE(BMW, 0) AS BMW, 
       COALESCE(Tesla, 0) AS Tesla 
FROM (
  SELECT name,
         brand,
         year 
  FROM my_table
) T
PIVOT (
  MAX(year) 
  FOR brand IN ('BMW', 'Tesla')
)

运行上面的代码,得到的结果如下所示:

+-------+------+------+
| name  | BMW  | Tesla|
+-------+------+------+
| Alice | 2017 | 2019 |
| Bob   | 2020 | 2018 |
+-------+------+------+

可以看到,原本的品牌列已经被转换成了两个新的列,并且对于每个人名,都有对应的品牌年份信息填充其中。这就是典型的行转列操作。其中,COALESCE函数用于处理可能存在的空值情况。

关注公众号“大模型全栈程序员”回复“大数据面试”获取800页左右大数据面试宝典 ,回复“大数据”获取多本大数据电子书

作者 east

上一 1 … 28 29 30 … 93 下一个

关注公众号“大模型全栈程序员”回复“小程序”获取1000个小程序打包源码。回复”chatgpt”获取免注册可用chatgpt。回复“大数据”获取多本大数据电子书

标签

AIGC AI创作 bert chatgpt github GPT-3 gpt3 GTP-3 hive mysql O2O tensorflow UI控件 不含后台 交流 共享经济 出行 图像 地图定位 外卖 多媒体 娱乐 小程序 布局 带后台完整项目 开源项目 搜索 支付 效率 教育 日历 机器学习 深度学习 物流 用户系统 电商 画图 画布(canvas) 社交 签到 联网 读书 资讯 阅读 预订

官方QQ群

小程序开发群:74052405

大数据开发群: 952493060

近期文章

  • 如何在Chrome中设置启动时自动打开多个默认网页
  • spark内存溢出怎样区分是软件还是代码原因
  • MQTT完全解析和实践
  • 解决运行Selenium报错:self.driver = webdriver.Chrome(service=service) TypeError: __init__() got an unexpected keyword argument ‘service’
  • python 3.6使用mysql-connector-python报错:SyntaxError: future feature annotations is not defined
  • 详解Python当中的pip常用命令
  • AUTOSAR如何在多个供应商交付的配置中避免ARXML不兼容?
  • C++thread pool(线程池)设计应关注哪些扩展性问题?
  • 各类MCAL(Microcontroller Abstraction Layer)如何与AUTOSAR工具链解耦?
  • 如何设计AUTOSAR中的“域控制器”以支持未来扩展?

文章归档

  • 2025年7月
  • 2025年6月
  • 2025年5月
  • 2025年4月
  • 2025年3月
  • 2025年2月
  • 2025年1月
  • 2024年12月
  • 2024年11月
  • 2024年10月
  • 2024年9月
  • 2024年8月
  • 2024年7月
  • 2024年6月
  • 2024年5月
  • 2024年4月
  • 2024年3月
  • 2023年11月
  • 2023年10月
  • 2023年9月
  • 2023年8月
  • 2023年7月
  • 2023年6月
  • 2023年5月
  • 2023年4月
  • 2023年3月
  • 2023年1月
  • 2022年11月
  • 2022年10月
  • 2022年9月
  • 2022年8月
  • 2022年7月
  • 2022年6月
  • 2022年5月
  • 2022年4月
  • 2022年3月
  • 2022年2月
  • 2022年1月
  • 2021年12月
  • 2021年11月
  • 2021年9月
  • 2021年8月
  • 2021年7月
  • 2021年6月
  • 2021年5月
  • 2021年4月
  • 2021年3月
  • 2021年2月
  • 2021年1月
  • 2020年12月
  • 2020年11月
  • 2020年10月
  • 2020年9月
  • 2020年8月
  • 2020年7月
  • 2020年6月
  • 2020年5月
  • 2020年4月
  • 2020年3月
  • 2020年2月
  • 2020年1月
  • 2019年7月
  • 2019年6月
  • 2019年5月
  • 2019年4月
  • 2019年3月
  • 2019年2月
  • 2019年1月
  • 2018年12月
  • 2018年7月
  • 2018年6月

分类目录

  • Android (73)
  • bug清单 (79)
  • C++ (34)
  • Fuchsia (15)
  • php (4)
  • python (45)
  • sklearn (1)
  • 云计算 (20)
  • 人工智能 (61)
    • chatgpt (21)
      • 提示词 (6)
    • Keras (1)
    • Tensorflow (3)
    • 大模型 (1)
    • 智能体 (4)
    • 深度学习 (14)
  • 储能 (44)
  • 前端 (5)
  • 大数据开发 (491)
    • CDH (6)
    • datax (4)
    • doris (31)
    • Elasticsearch (15)
    • Flink (78)
    • flume (7)
    • Hadoop (19)
    • Hbase (23)
    • Hive (41)
    • Impala (2)
    • Java (71)
    • Kafka (10)
    • neo4j (5)
    • shardingsphere (6)
    • solr (5)
    • Spark (100)
    • spring (11)
    • 数据仓库 (9)
    • 数据挖掘 (7)
    • 海豚调度器 (10)
    • 运维 (34)
      • Docker (3)
  • 小游戏代码 (1)
  • 小程序代码 (139)
    • O2O (16)
    • UI控件 (5)
    • 互联网类 (23)
    • 企业类 (6)
    • 地图定位 (9)
    • 多媒体 (6)
    • 工具类 (25)
    • 电商类 (22)
    • 社交 (7)
    • 行业软件 (7)
    • 资讯读书 (11)
  • 嵌入式 (71)
    • autosar (63)
    • RTOS (1)
    • 总线 (1)
  • 开发博客 (16)
    • Harmony (9)
  • 技术架构 (6)
  • 数据库 (32)
    • mongodb (1)
    • mysql (13)
    • pgsql (2)
    • redis (1)
    • tdengine (4)
  • 未分类 (7)
  • 程序员网赚 (20)
    • 广告联盟 (3)
    • 私域流量 (5)
    • 自媒体 (5)
  • 量化投资 (4)
  • 面试 (14)

功能

  • 登录
  • 文章RSS
  • 评论RSS
  • WordPress.org

All Rights Reserved by Gitweixin.本站收集网友上传代码, 如有侵犯版权,请发邮件联系yiyuyos@gmail.com删除.