极短文本的句子嵌入(1-3 个单词/句子)

问题描述 投票:0回答:1

我有一些来自银行交易的非常短的文本(80% 的数据集少于 3 个单词),我想将它们分为约 90.000 个类(供应商)。 由于文本来自银行交易,很多单词并不准确,但经常被截断、拼写错误等,因此 BoW 不是最优的,因为我们将

facebk
facebook
faceboo
等单词视为不同的单词。 FastText 是创建嵌入的一个很好的候选者,逐字逐句地创建了一些非常好的相似之处。

问题是我想创建一个句子嵌入。由于银行交易通常有(很多)“停用词”,例如。

facebook/zg181239 202392
MC 102930
删除所有“垃圾”词是极其困难的。

使用所有单词的平均值作为句子嵌入效果不是很好,因为有些交易包含垃圾词,而且句子很短,那些“噪音”词有很大的影响,例如

faceboo 1230jaisd
facebook 1231jaikj
是在“句子”空间中不是很相似。

有没有办法制作某种句子嵌入来处理这个问题?

embedding fasttext
1个回答
0
投票

拥有 90,000 个类别和大量精简/垃圾数据,可能没有足够的模式来学习一个好的分类器。 (每个班至少有很多不同的例子吗?)

还有一些想法:

  1. 如果某些标记甚至标记片段是物品必须/不得来自某些供应商的可靠指标,则基于词袋或字符袋 n 的更离散特征的分类器-grams,表示可能会做得更好。 (或者,这些功能可能会在连续词向量单独或组合成更模糊的总和/均值时出现最大问题的地方提供帮助。也就是说,即使您的拼写错误示例如

    facebk
    faceboo
    仍然包括4 个字符的 n-gram
    face
    ,以及该片段的二进制存在/不存在,在稀疏的 BoW/Bag-of-ngrams 表示中,对于下游分类器来说可能比连续的 FastText n-gram 向量更清晰在将它们混合到 OOV 向量合成中而不是 multitoken 平均值之后,将为
    face
    学习。)

  2. 如果您怀疑是特定的“噪音”词导致了问题——很少有帮助,您可以尝试以下方法:

    一个。丢弃低于特定频率的所有令牌,通过实验达到阈值待定;

    b。与更常见标记的向量相比,当将它们平均在一起时,低于特定频率或通过 FastText 的 ngrams 方法由 OOV 合成的标记的权重向量下降。

    c。将每个项目表示为频繁/已知标记的平均值的串联,以及粗略/低频/OOV 合成标记的单独平均值 - 因此您认为那些垃圾/噪音的标记不一定会稀释更好的标记, 但仍在为更棘手的案件做出贡献。 (您也可以尝试基于全字母或全数字或其他标记子集的特征子分段。)

  3. FastText 本身和任何下行流分类器都可能具有可以提供帮助的参数调整选项,特别是考虑到您的数据不是真正的自然语言,因此将具有与通常情况完全不同的标记/子词频率/模式。 (举个例子:许多任意数字极不可能具有与自然语言相同类型的模糊含义子字符串,因此

    buckets
    值的更高或更低的值可能会更好,或者将大多数数字信息保留在完全是词向量建模。)

© www.soinside.com 2019 - 2024. All rights reserved.