Abstract
这篇文章主要是介绍了一个新方法,其效果与目前最好的LM词表相比显示出相当的性能
FinLex主要解决的问题是:
- 现有文献中的方法是依赖专家来创建这些词语集合。但这引入了一定程度的主观性和缺乏稳健性。
- 随着概念数量的增加,并随着时间的不同而有不同的表示——可能是由于语言的发展、经济变化(例如,诉讼的主题规则可能会改变),以及不同主题甚至同一主题的专业知识分布的变化,对如何构建词语集合的学科性和可重复性的需求应运而生。
FinLex的主要贡献是:
- 首先,该方法用可重复的算法取代了人类的主观选择。
- 其次,它可以由未来的建模者改进,因此更容易开发和适应。
- 第三,它并没有排除领域专家的作用——它只是给他们提供了一个更优的基础,以供他们用来细化结果。
- 最后,专家的作用也更加客观,因为专家强加观点的地方变得透明。这使得整个词语集合生成的过程以前所未有的方式变得透明。
Methodology
该方法(标记为 FinLex)如下。它接受一对词 (w1, w2) 作为输入。这些词可以是同义词或反义词。程序如下:
- 嵌入模型选择:从预训练的词嵌入模型中检索一大组词嵌入。词嵌入是固定维度 D(通常是 300)的数值向量,代表每个词,因此,每个词可以想象成 D 维空间中的一个点。生成嵌入的独特词的集合被称为“词汇表”,词汇表的大小记为 V。因此,词嵌入的集合可以用一个大小为 V×D 的矩阵表示。可以把这想象成把 V 个词投影到 D 维空间。在这个向量空间中,与相同概念和上下文相关的词会更接近彼此。
- 标准的数据源包括 Facebook 的 FastText,斯坦福大学的全局向量(GloVe),以及谷歌的 word2vec。每种方法都有稍微不同的方式从大型文本语料库生成词嵌入(例如,BOW,SkipGram,GloVe 等)。我们使用 FastText 作为嵌入的来源(基于 Mikolov 等人的工作),这些嵌入通常是大小为 300 的向量,但我们已使用 FastText 内置的降维功能将其减少到大小为 100,以提高计算效率。我们注意到这是一个初步的方法,可以尝试嵌入尺寸 D 及生成嵌入的来源和技术的各种变体。较新的 Transformer 模型如 BERT 使用更大的嵌入尺寸(D = {768,1024}),但使用这些模型时,相同的词可能会因周围上下文的不同而产生不同的嵌入。我们将上下文嵌入与词袋(BoW)模型的结合留待后续研究。
- 选取相似词:对于 $w_1$ 和 $w_2$,在嵌入空间中找到使用余弦相似性最相似的 K 个词,记为 $w_S(w_i)$,i = 1,2。对于本文中的例子,我们将 K 设置为 1000。这是一个较大的相似词数量,代表了词汇表可能的最大规模。此外,在将最相似的词集与英语词典相交之后,许多词会被筛除,因此我们最终得到的词集通常会小于 1000。
- 过滤标准词:然后我们将词转换为小写形式,并将该集合与一个标准英语词列表(记为集合 $w_E$)进行交集操作。在我们的案例中,我们简单地使用了哈佛查询中的词,但也可以使用任何词列表,例如麻省理工学院的词列表。因此,我们有了新的集合 $S(w_i) = w_S(w_i) \cap w_E$, i = 1,2。这样可以确保得到一个与概念词 $w_i$ 相关的干净的词列表。
- 合并:这里我们有两种情况,取决于这对词是同义词还是反义词。使用一对词是一个新思路,它提供了更广泛的概念包容性并在词汇表生成中提高了准确性。
- 同义词:如果 $w_1$ 和 $w_2$ 是同义词,我们将这两个集合合并为一个单一的词集合,即 $S(w_1) \cup S(w_2)$。如果有两个概念上相关的词,比如欺诈和疏忽,这样做可以让概念的涵盖范围更广。我们注意到,如果我们想要基于单个词的词列表,就像文献中的先前应用那样,我们会设置 $w_1 = w_2$。
- 反义词:如果 $w_1, w_2$ 是反义词,那么输出将是两个词集合 $S(w_i)$,i = 1,2,每个集合都是独立地使用余弦相似性生成的。如果一个词同时出现在 $S(w_1)$ 和 $S(w_2)$ 中,那么我们只保留在其与 $w_1$ 或 $w_2$ 更近的那个列表中,并从另一个列表中删除它。这确保了一个词不能同时属于两个对立的概念。在使用词嵌入时这一点尤为重要,因为有可能意义相反的词也会在嵌入空间中邻近出现,因为它们与概念词有关,即使它们的意义是对立的。例如,如果反义词是“战争”和“和平”,“冲突”这个词可能会同时出现在两个列表中,如果它更靠近“战争”(正如应该的那样),那么它将从基于“和平”的列表中移除。这是一个简单的制衡机制,有助于筛选出误分类的词。
此过程会在 $w_1, w_2$ 为同义词时创建一个单一的词列表,而在它们为反义词时创建两个词列表。我们不会移除停用词,也不会对词进行词干提取,因此同一词的多种形式可能会出现,这与 LM 词列表的情况一样。请注意,此过程可以很容易地扩展到使用多个词来表示一个概念的情况,即反义词对中每个概念都有多个词描述。
具体词表例子
下图为 FinLex 生成的负面和正面词列表。
这些词与概念词的关系相当紧密。显然有些词是不合适的,例如在负面词列表中:中立、因果、真相、暗示、确定、正常。在正面词列表中也有一些不正确的词,如被动、压力、自私、犹豫。这些词可以通过少量的人工努力手动筛选掉。
然而,在本文的研究中,为了展示保持过程完全自动化的潜力,我们没有包括人工干预
下表则列出了词表与标准词表的交集,并显示了前50个被排除的与positive最相近的词和前50个保留下来的词。
能看出被排除的top50中有大量的拼写错误的词(虽然我没看出positive与positive有什么区别,服了)。拼写错误的词之所以出现是因为词嵌入的语料库基于Wiki文本,后者也包含了许多拼写错误的词,但它们却出现在概念词的上下文中。
LM 词列表与 FinLex 词列表
本文还检查了LM 词列表与 FinLex 词列表之间的重叠部分。
我们可以看到,交集词的小集合都表达了不确定性。有趣的是,大量存在于 LM 词汇表中而不在 FinLex 中的词,反之亦然。这两个列表都非常清楚地包含了我们认为与不确定性概念相关的词。
那么为什么会有如此小的重叠呢?
- 可能是机制不同。人工策划可能是基于心理检索或是通过使用词库的方式,这是一种直接的方法。机器策划的方法利用了词嵌入中的文本上下文,因此是一种间接的方法,即不一起出现但在相似上下文中出现的词倾向于具有相似的词嵌入。这表明,人类和机器共同策划词汇表可能是有用的。无论如何,人类进一步策划机器生成的词汇表可能有助于移除不属于词列表的词。
词列表在分类任务中的表现
本文考虑了各种数据集来评估词列表作为分类分析特征的表现。对于数据集中的每个文档,我们计算文档中属于给定词列表的词的比例,并将这个比例作为一列(数值特征)添加到数据集中。例如,对于 LM 的负面词,我们创建一个单独的列。同样,对于 LM 和 FinLex 的每一个词列表也是如此。
评估所用的数据集如下:
- Financial Phrase Bank (FPB)数据集包含带有三种标签(离散的 y 变量)类别的金融新闻标题:负面、中性和正面。情感得分基于多名标注者的手动标注。有4846条新闻标题,情感水平为:负面13%,中性59%,正面28%。
- 还有一个基于上面的 FPB 数据集的子集,包含2264条所有标注者一致同意的新闻标题(负面占13%,中性占61%,正面占25%)。
- 灾难推文数据集 (https://www.kaggle.com/vstepanenko/disaster-tweets)该数据集包含11,370条推文,其中19%与灾难相关,其余的不相关。因此,该数据集的标签也是不平衡的。该数据集支持二元分类练习,在这里我们拟合机器学习模型以预测一条推文是否与灾难相关。
- Reddit 新闻频道的 Reddit 新闻数据集(https://www.kaggle.com/aaron7sun/stocknews) 该数据集包含每天排名前25(基于 Reddit 排名)的新闻标题,并附有一个二元标签,指示道琼斯工业平均指数调整后的收盘值是否上涨或保持不变。该数据集包含1989天的数据。对于每一天,我们将所有25条新闻标题合并成一个文档来配合标签。然后使用该数据集来拟合用于二元分类的机器学习模型。
比较的模型如下:
- 首先,我们使用了每篇文本文档的词频-逆文档频率(TF-IDF)表示来进行分类。这种标准方法使用文章中的所有词(不仅仅是词列表计数的数值得分),并且是一个有用的baseline。
- 如果我们有一个包含 N 篇文本的文章数据集,并且所有文章中有一个包含 V 个独特词的词汇表,那么可以在一个维度为 V×N 的词-文档矩阵中列出每篇文章中的词(术语)频率计数。对于该数据集的每一行,即该行词在所有列文档中的词频(TF)计数,我们将矩阵中的值除以包含该词的文档数量,即乘以逆文档频率(IDF)。
- Loughran-McDonald 的负面、正面、不确定性和诉讼倾向词列表来计算每篇文档中出现在每个列表中的词的比例。这将每篇文档转换为包含4个数值列的数据。
- 为了与 LM 特征集进行比较,我们使用了由 FinLex 算法生成的相同的四个特征(负面、正面、不确定性和诉讼倾向词列表)。我们在这些4个变量上拟合了机器学习模型。
- 我们使用之前的 FinLex 数据集,并通过添加基于欺诈和疏忽、安全、风险、确定性、不确定性、公平和不公平的新词汇表的附加列来增强它。我们称这个变量集为 FinLex+ 模型。
所有四种文本表示方式随后被拟合到一组机器学习模型的集成中。我们使用了一个名为 AutoGluon 的自动机器学习(AutoML)包来进行分类(Erickson 等人)。AutoGluon 是一个开源的 AutoML 框架,只需一行 Python 代码即可在未处理的表格数据集(数值加上文本)上训练机器学习模型。与主要关注模型/超参数选择的现有 AutoML 框架不同,AutoGluon Tabular 通过集成多个模型并在多层中堆叠它们来取得成功。所有实验中都使用了相同的模型集成。这些模型包括前馈神经网络、k-近邻算法、随机森林、额外树、LightGBM、XGBoost 和 CatBoost。这种方法支持对超参数选择的不可知性。
AutoGluon 是一种先进的方法,用于构建最佳的机器学习模型,然后将它们集成在一起以获得更好的模型。我们在这里提供一些简要的细节。代表文本的数值变量(X 自变量)和标签(Y 因变量)被用来训练上面提到的每一种机器学习模型(可以把它想象成拟合多个独立的非线性回归模型)。来自每个模型的预测值被加到 X 变量中,然后模型被重新拟合到扩展的自变量集。接着,来自每个模型的预测值被加权以创建一个组合预测,其中模型的权重由一个寻找最优模型权重的神经网络确定。整个方法被称为“堆叠集成”,这是一种准确且有效地汇集个体 ML 模型群体智慧的方式。
为什么在拟合4个数据集的机器学习模型时使用 AutoGluon 集成方法?
- 通过在数据集上集成并加权不同的机器学习分类器,我们可以为每个数据集找到最佳模型。有可能在 FinLex 数据集上 XGBoost 表现更好,而在 LM 数据集上随机森林表现更好。如果我们只将4个数据集拟合到 XGBoost,我们会发现 FinLex 的表现优于 LM。通过 AutoGluon 进行集成,我们确保每个数据集能够自动找到其最佳预测模型,这使得不同词汇表之间的比较更加公平。
结果
报告了五个指标(参见表的行):
- 准确率,即正确预测的百分比;
- Matthews 相关系数(MCC),其范围从 -1 到 +1,其中高于 0 的分数表明分类能力;
- 精确度,即模型正确预测的特定类别的数量,这侧重于假阳性的多少;
- 召回率,即模型正确预测的每个类别的案例数量,这侧重于假阴性的多少;
- 最后,F1 分数,精确度和召回率的调和平均数。
上表显示了不同词汇表在四个数据集上的分类性能。我们可以看到,
- TF-IDF 的结果是最好的,因为它基于全文本,而不仅仅是基于词的得分。
- 基于未经进一步人工策划的 FinLex 的分类器的性能略逊于 LM。因此,算法策划的金融词汇表在这类分类任务上的表现并不如 LM,但差距不大,这表明这种方法可能是为其他应用开发更多词列表的一个良好起点。
- 在最后一个数据集(Reddit)上,FinLex 的表现优于其他方法。
- 我们增加了经过算法策划但未进一步人工策划的新列表(欺诈、疏忽、风险性和安全性),并将这一特征集称为 FinLex+。这一特征集包含了算法创建的额外词列表,这些列表可能包含区分正面情绪和负面情绪的词,因此我们在分类准确率上看到的提升是合理的,这也表明这些新词列表是一个额外的贡献。
未来工作方向
- 这项工作可以扩展到除了新闻分类之外的其他金融应用和数据集。例子包括信用评分、分析师报告评分、使用新的风险和安全评分进行市场风险评分,以及通过增强 LM 的诉讼倾向词列表与 FinLex 的欺诈和疏忽列表来预测诉讼。
- 使用该词汇表算法在其他数据集上也能发挥作用。尽管新闻文章较短,可能更适合本研究中的数值评分,但使用较长的金融文件(如监管文件、法律卷宗和分析师收益电话会议记录)来比较 LM 与 FinLex 也许会更有趣。 用该词汇表算法在其他数据集上也能发挥作用。尽管新闻文章较短,可能更适合本研究中的数值评分,但使用较长的金融文件(如监管文件、法律卷宗和分析师收益电话会议记录)来比较 LM 与 FinLex 也许会更有趣。
- 随着这些任务标记数据集的可用性越来越广泛,使用本文中的算法开发新的词列表将缩短其工业应用的时间。其他值得进一步研究的课题包括使用在金融相关数据集上训练的词嵌入,以及将我们的算法应用于生成其他行业的词列表。