彻底搞懂文本相似度!从EMD、WMD到WRD,这篇保姆级教程让你一次通透!

人工神经网络模型的特点,人工神经网络模型定义 3、基于MATLAB语言的网络训练与仿真建立并初始化网络% ================S1 = 24;在学习阶段应该用大量的样本进行训练学习,通过样本的大量学习对神经网络的各层网络的连接权值进行修正,使其对样本有正确的识别结果,这就像人记数字一样,网络中的神经元就像是人脑细胞,权值的改变就像是人脑细胞的相互作用的改变,神经网络在样本学习中就像人记数字一样,学习样本时的网络权值调整就相当于人记住各个数字的形象,网络权值就是网络记住的内容,网络学习阶段就像人由不认识数字到认识数字反复学习过程是一样的。.. 阅读详情

在 NLP 中,我们经常要去比较两个句子的相似度,其标准方法是想办法将句子编码为固定大小的向量,然后用某种几何距离(欧氏距离、cos 距离等)作为相似度。这种方案相对来说比较简单,而且检索起来比较快速,一定程度上能满足工程需求。

此外,还可以直接比较两个变长序列的差异性,比如编辑距离,它通过动态规划找出两个字符串之间的最优映射,然后算不匹配程度;现在我们还有 Word2Vec、BERT 等工具,可以将文本序列转换为对应的向量序列,所以也可以直接比较这两个向量序列的差异,而不是先将向量序列弄成单个向量。

后一种方案速度相对慢一点,但可以比较得更精细一些,并且理论比较优雅,所以也有一定的应用场景。本文就来简单介绍一下属于后者的两个相似度指标,分别简称为 WMD、WRD。

一、Earth Mover’s Distance

本文要介绍的两个指标都是以 Wasserstein 距离为基础,这里会先对它做一个简单的介绍,相关内容也可以阅读笔者旧作从 [Wasserstein 距离、对偶理论到WGAN]

Wasserstein 距离也被形象地称之为**“推土机距离”(Earth Mover’s Distance,EMD)**,因为它可以用一个“推土”的例子来通俗地表达它的含义。

1.1 最优传输

假设在位置 处我们分布有 那么多的土,简单起见我们设土的总数量为 1,即 ,现在要将土推到位置 上,每处的量为 ,而从 i 推到 j 的成本为 ,求成本最低的方案以及对应的最低成本。

这其实就是一个经典的最优传输问题。我们将最优方案表示为 ,表示这个方案中要从 i 中把 数量的土推到 j 处,很明显我们有约束:

所以我们的优化问题是:

1.2 参考实现

看上去复杂,但认真观察下就能发现上式其实就是一个线性规划问题——在线性约束下求线性函数的极值。而scipy就自带了线性规划求解函数linprog,因此我们可以利用它实现求 Wasserstein 距离的函数:

importasfromimportdef wasserstein_distance(p, q, D):"""通过线性规划求Wasserstein距离    p.shape=[m], q.shape=[n], D.shape=[m, n]    p.sum()=1, q.sum()=1, p∈[0,1], q∈[0,1]    """forin1-1forin1-1-1-1-1return

读者可以留意到,在传入约束的时候用的是A_eq=A_eq[:-1], b_eq=b_eq[:-1],也就是去掉了最后一个约束。

这是因为 ,所以(1)中的等式约束本身存在冗余,而实际计算中有时候可能存在浮点误差,导致冗余的约束之间相互矛盾,从而使得线性规划的求解失败,所以干脆去掉最后一个冗余的约束,减少出错的可能性。

二、Word Mover’s Distance

很明显,Wasserstein 距离适合于用来计算两个不同长度的序列的差异性,而我们要做语义相似度的时候,两个句子通常也是不同长度的,刚好对应这个特性,因此很自然地就会联想到 Wasserstein 距离也许可以用来比较句子相似度,而首次进行这个尝试的是论文 From Word Embeddings To Document Distances [1]。

2.1 基本形式

设有两个句子 ,经过某种映射(比如 Word2Vec 或者 BERT)后,它们变成了对应的向量序列 ,现在我们就想办法用 Wasserstein 距离来比较这两个序列的相似度。

根据前一节的介绍,Wasserstein 距离需要知道 三个量,我们逐一把它们都定义好即可。

由于没有什么先验知识,所以我们可以很朴素地将让 ,所以现在还剩 。显然, 代表着第一个序列的向量 与第二个序列的向量 的某种差异性,简单起见我们可以用欧氏距离 ,所以两个句子的差异程度可以表示为:

这便是 Word Mover’s Distance(WMD)(推词机距离),大概可以理解为将一个句子变为另一个句子的最短路径,某种意义上也可以理解为编辑距离的光滑版。实际使用的时候,通常会去掉停用词后再计算 WMD。

▲ Word Mover’s Distance 的示意图,来自论文 From Word Embeddings To Document Distances

2.2 参考实现

参考实现如下:

def word_mover_distance(x, y):"""WMD(Word Mover's Distance)的参考实现    x.shape=[m,d], y.shape=[n,d]    """0000NoneNone2return

2.3 下界公式

如果是检索场景,要将输入句子跟数据库里边所有句子一一算 WMD 并排序的话,那计算成本是相当大的,所以我们要尽量减少算 WMD 的次数,比如通过一些更简单高效的指标来过滤掉一些样本,然后才对剩下的样本算 WMD。

幸运的是,我们确实可以推导出 WMD 的一个下界公式,原论文称之为 Word Centroid Distance (WCD):

也就是说,WMD 大于两个句子的平均向量的欧氏距离,所以我们要检索 WMD 比较小的句子时,可以先用 WCD 把距离比较大的句子先过滤掉,然后剩下的采用 WMD 比较。

三、Word Rotator’s Distance

WMD 其实已经挺不错了,但非要鸡蛋里挑骨头的话,还是能挑出一些缺点来:

  1. 它使用的是欧氏距离作为语义差距度量,但从 Word2Vec 的经验我们就知道要算词向量的相似度的话,用 往往比欧氏距离要好;
  2. WMD 理论上是一个无上界的量,这意味着我们不大好直观感知相似程度,从而不能很好调整相似与否的阈值。

为了解决这两个问题,一个比较朴素的想法是将所有向量除以各自的模长来归一化后再算 WMD,但这样就完全失去了模长信息了。

最近的论文 Word Rotator’s Distance: Decomposing Vectors Gives Better Representations [2]则巧妙地提出,在归一化的同时可以把模长融入到约束条件 p,q 里边去,这就形成了 WRD。

3.1 基本形式

首先,WRD 提出了**“词向量的模长正相关于这个词的重要程度”**的观点,并通过一些实验结果验证了这个观点。事实上,这个观点跟笔者之前提出的 simpler glove 模型的观点一致,参考《更别致的词向量模型(五):有趣的结果》[3] 。

而在 WMD 中, 某种意义上也代表着对应句子中某个词的重要程度,所以我们可以设:

然后 就用余弦距离:

得到:

这就是 Word Rotator’s Distance (WRD) 了。由于使用的度量是余弦距离,所以两个向量之间的变换更像是一种旋转(rotate)而不是移动(move),所以有了这个命名;同样由于使用了余弦距离,所以它的结果在 [-1,1] 内,相对来说更容易去感知其相似程度。

3.2 参考实现

参考实现如下:

def word_rotator_distance(x, y):"""WRD(Word Rotator's Distance)的参考实现    x.shape=[m,d], y.shape=[n,d]    """21True0.521True0.5001returndef word_rotator_similarity(x, y):"""1 - WRD    x.shape=[m,d], y.shape=[n,d]    """return1

3.3 下界公式

同 WMD 一样,我们也可以推导出 WRD 的一个下界公式:

不过这部分内容并没有出现在 WRD 的论文中,只是笔者自行补充的。

四、小结

文本介绍了两种文本相似度算法 WMD、WRD,它们都是利用 Wasserstein 距离(Earth Mover’s Distance,推土机距离)来直接比较两个不定长向量的差异性。这类相似度算法在效率上会有所欠缺,但是理论上比较优雅,而且效果也颇为不错,值得学习一番。

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

在这里插入图片描述

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范
  • …

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署
  • …

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建
  • …

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案
  • …

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】

在这里插入图片描述

WMD算法及python代码实现 本次讲解的论文来自J.Kusner等人2015年发表的论文,论文名字为From Word Embeddngs To Document Distances。 一、全篇概述 全篇最大的贡献是提出了WMD算法,并且为了提高计算速度,减低时间复杂度对模型进行了化简,得到WCD及RWMD算法,然后综合WCD及RWMD提出预取和修剪(Prefetch and prune),在几乎不影响算法准确率的情况下,大大... 阅读详情

相关推荐

文本相似度的三种算法

​为了实现基于嵌入向量相似度来查找输入文本与给定列表中最相似的元素,你可以使用预训练的文本嵌入模型(例如,sentence-transforers),并计算输入文本与列表元素之间的余弦相似度。如果想避免依赖外部库或模型,也可以使用传统的文本相似度方法(如 TF-IDF、词袋模型)配合 scikit-learn 来实现相似度计算,但这些方法通常无法捕捉到语义层次的相似度。

酌沧 2752

从EMD、WMD到WRD:文本向量序列的相似度计算

©PaperWeekly 原创 ·作者|苏剑林单位|追一科技研究方向|NLP、神经网络在 NLP 中,我们经常要去比较两个句子的相似度,其标准方法是想办法将句子编码为固定大小的向量,然...

Paper weekly 1692

词汇移动距离算法 Python 实现

词汇移动距离(Word Mover‘s Distance,WMD)是一种测量文本相似度的指标,它考虑了不同单词之间的距离和语义关系。在NLP领域中,WMD已经被广泛应用于文本分类、信息检索、实体链接等领域。我们使用NLTK停用词列表来移除常见但不重要的单词,然后构建单词-词项矩阵并计算它们之间的WMD距离。这意味着,在文本1和文本2之间,平均每个单词需要移动约1.12个单位才能转换为另一个文本中的相应单词。通过实现WMD算法,我们可以更准确地测量文本之间的相似度,并在自然语言处理任务中发挥作用。

BUG?不存在的! 374

python 多维向量相似度计算_如何计算两篇文章的相似度?

基础知识预备:1.什么是空间向量:空间中具有大小和方向的量叫做空间向量。向量的大小叫做向量的长度或模(modulus)空间向量的坐标表示:A(x,y ,z)2.空间向量的运算:空间向量的坐标运算:设a=(x1,y1,z1),b=(x2,y2,z2)|a|= (根据勾股定理)a+b=(x1+x2,y1+y2,z1+z2)a-b=(x1-x2,y1-y2,z1-z2)ka=k(x1,y1,z1)=(k...

weixin_39658726的博客 2382

信息检索与数据挖掘 | (五)文档评分、词项权重计算及向量空间模型

我们需要一种方法分配一个分数,如果查询项不出现在文档,分数应该是0,更频繁的查询项的文档,分数越高。在文档集规模很大的情况下,满足布尔查询的结果文档数量可能非常多,往往会大大超过用户能够浏览的文档数目。因此对搜索引擎来说,对文档进行非常重要。

知识库搭建ing 1991

Python-WMD用于IT安全工具的Python框架

WMD 用于IT安全工具的Python框架

Word Rotator‘s Distance——WRD算法应用

WRD算法的应用

HUSTHY的博客 1399

MIKE11实战:平原河网水动力建模从入门到精通(附GIS数据处理技巧)

本文系统介绍了MIKE11软件在平原河网水动力建模中的完整实战流程。从GIS数据预处理、河网构建、参数率定到结果分析,详细阐述了构建可靠数字孪生模型的关键步骤与技巧,旨在帮助水利工程师高效解决平原地区复杂水流模拟的挑战,为防洪决策提供科学依据。

weixin_28419039的博客 689

生成式AI

为了增强图片生成效果,采用一种加噪(前向过程)+降噪(反向过程)的方法,对样本图片进行加噪处理,并使其噪声逐渐满足高斯分布,再学习降噪方法,将样本图片还原,这样让模型掌握利用一定的随机噪音来完成高质量图片生成能力;模型需要学习到的实际上是能力;此处的应当是一个分布而不是一个具体的样本,由推得的一系列分布,可以使模型的生成效果更加多元化。

weixin_53196770的博客 564

STM32F103C8T6 + GY-906红外测温:手把手教你用CubeMX和HAL库搞定IIC驱动(附完整工程)

本文详细介绍了如何使用STM32F103C8T6和GY-906红外测温传感器(基于MLX90614芯片)实现非接触式温度测量。从STM32CubeMX工程创建、HAL库驱动适配到温度数据采集与处理,提供完整的开发流程和常见问题解决方案,帮助开发者快速掌握红外测温技术。

weixin_29188043的博客 254

常规波束形成——时域波束形成、频域波束形成

本文介绍了波束成形,包括时域波束成形和频域波束成形,并解释了在实现过程可能存在疑惑的相位补偿。

Candy_Editor的博客 3659

向量的相似度计算常用方法

向量的相似度计算常用方法相似度的计算简介   关于相似度的计算,现有的几种基本方法都是基于向量(Vector)的,其实也就是计算两个向量的距离,距离越近相似度越大。在推荐的场景中,在用户-物品偏好的二维矩阵中,我们可以将一个用户对所有物品的偏好作为一个向量来计算用户之间的相似度,或者将所有用户对某个物品的偏好作为一个向量来计算物品之间的相似度。下面我们详细介绍几种常用的相似度计算方法。共8种。每人...

G_persist的博客 1万+

FPGA实现16x16点阵汉字滚动显示:Verilog代码与Quartus仿真详解

本文详细介绍了如何使用FPGA实现16x16点阵汉字滚动显示,包括Verilog代码设计、Quartus仿真及硬件连接技巧。通过字模数据存储和扫描控制逻辑,实现汉字的动态显示效果,并提供了优化建议和常见问题解决方案,适合FPGA开发者和硬件爱好者学习参考。

weixin_29172963的博客 352

wmd 源码 python实现版

from gensim.models import Word2Vec from gensim import corpora, models, similarities import numpy as np import scipy.optimize from scipy import spatial import time import jieba import itertools jieba.lo

shizhengxin123的博客 3982

从硅片到时钟:揭秘SiTime MEMS谐振子的精密制造之旅

本文深入解析了SiTime MEMS谐振子的精密制造工艺,从硅晶圆的提纯到DRIE深硅刻蚀,再到真空封装技术,揭示了其如何克服传统石英晶振的局限。通过对比测试数据,展示了MEMS谐振子在精度、可靠性和生产效率上的显著优势,特别是在5G基站和汽车电子等领域的应用潜力。

weixin_42522953的博客 403

极智芯 | 解读国产CPU之海光

大家好,我是极智视界,本文分享一下 解读国产CPU之海光。希望我的分享能对你的学习有一点帮助。

极智视界 3319

基于WMD(词移距离)的短文本相似度计算

最近在预言文本相似度相关的知识,接下来实践一下基于WMD(词移距离)的短文本相似度计算。 词移距离(Word Mover's Distance)是在词向量的基础上发展而来的用来衡量文档相似性的度量,是一种计算句子之间距离的方法,距离越小,相似度越高。 词移距离WMD: Word2Vec得到的词向量可以反映词与词之间的语义差别,那么如果我们希望有一个距离能够反映文档和文档之间的相似度,应该怎...

weixin_40547993的博客 7096

【人工智能】Claude Code 安装、配置及问题排查完整指南

建议使用IDE来启动 Claude,执行后,内容如下。(确保环境可正常运行 npm 命令)。

奶爸的编程之路,也就一周冷个三天 1207

python 多维向量相似度计算_推荐系统-协同过滤-相似度计算

余弦相似度余弦相似度(Cosine Similarity):衡量了两个用户向量之间的向量夹角大小;夹角越小,证明余弦相似度越大,两个用户也就越相似。这里的A,B指的就是用户的向量;举例:如图:是四个用户对于四个物品的购买记录;我们计算User_A跟User_B的相似度约等于0.408;Python Demo:import numpy as np def cosine_similarity(x, ...

weixin_39890517的博客 2818

嵌入式开发环境Vscode开发STM32单片机程序

STM32单片机非常强大,大多数教程都是使用 keil 编译器,keil 是收费的而 gcc 是开源免费的。这里介绍一些使用 gcc +开发单片机程序的经验。(这里不解释 gcc 是什么)。

嵌入式技术开发 1843

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

WMD实现 python

参考这个链接using Gensim’s implemenation of the WMD.。 下载NLTK,去掉停用词 # Import and download stopwords from NLTK from nltk.corpus import stopwords from nltk import download download('stopwords') # Download stopwords list. stop_words = stopwords.words('english')

weixin_44019018的博客 1037

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

相似度计算

1. 相似度计算 1.1 概念 从多个维度分析两组数据的相似度,比如大的文本使用word2vec转成向量,类别根据最大的类别数量N拆成n维0或1表示的vector,数值类型归一化之后表示一个维度,然后根据cos、L1、L2等方式计算相似度 1.2 用处 可以用于推荐系统、协同过滤等算法 1.3 细节 注意double值的精度处理 1.4 公式 1.4.1 COSINE 将向量根据

liuwei063608的专栏 1903

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

NLP从零开始------9文本进阶处理之文本相似度计算

在自然语言处理中,经常会涉及度量两个文本相似度的问题。在诸如对话系统和信息减速等中,度量句子或短语之间的相似度尤为重要。在新闻学传媒中应用文本相似度可以帮助读者快速检索到想要了解的报道。文本相似度的定义式如下所示:其中,common(A,B)和A和B的共性信息,description(A,B)是描述A和B的全部信息,上式表达出相似度与文本共性成正相关。由于没有限制应用领域,由此此定义被广泛采用。相似度一般可用[0,1]中的实数表示,该实数可通过语义距离计算获得。相似度与语义距离呈负相关。

m0_74922316的博客 6529

python 多维度求两个值的余弦相似度

import numpy as np import pandas as pd a=np.array([3,5,0,1]) b=np.array([2,5,3,1]) c=np.array([0,1,3,0]) a_norm=np.linalg.norm(a) b_norm=np.linalg.norm(b) c_norm=np.linalg.norm(c) a_dot_b=a.dot(b) b_...

qq_42467563的博客 2907

python多维分类_DTW(多维)原理与代码实现(Python)

1.概述​ 作为一种Metric distance, 动态时间调整算法(Dynamic Time Warping, DTW)能够测量两个不同长度的时序信号的相似程度.​ 在很多任务中,获取的数据是一种时序数据,而最常见的任务就是分析两个时间序列的相似性,例如语音的孤立词语音识别,时序动作分类,轨迹相似度分析等领域.2.DTW原理的一些细节(个人见解)一维变多维度(也可以使用DB...

weixin_39675513的博客 1497

【数据挖掘】编程实现任意给定两个相同维度的向量之间的夹角余弦相似度计算函数sim=sim_COS(x,y)

实验内容 编程实现任意给定两个相同维度的向量之间的夹角余弦相似度计算函数sim=sim_COS(x,y)。输入:两个任意k维向量x和y,其中k的值随由数据决定。 数据 测试代码如下: x=[3,20,3.5]; y=[-3,34,7]; sim=sim_COS(x,y); 实验代码 function sim=sim_COS(vec1,vec2) sim=[]; if(length(vec1)~=length(vec2)) disp('长度不一样,不符合要求!'); else sim=sum

超逸の学习技术博客 2511
上一篇: 什么是AI智能体?一文彻底讲透,零基础也能看懂!
下一篇: 知识图谱+AI大模型,看这9个案例就够了!从入门到实战应用一篇搞定!
Python_金钱豹
博客等级 码龄5年 1万+粉丝 2835原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值