产品描述凌乱文本数据分类的最佳方法

Posted

技术标签:

【中文标题】产品描述凌乱文本数据分类的最佳方法【英文标题】:Best way to classify Messy Text Data of Product Description 【发布时间】:2020-05-09 10:28:09 【问题描述】:

Word Embeddings + Feature Extraction + Classifier 的管道经常用于文本分类(例如服饰、玩具、食物等类别),但 这假设数据中的很多东西都是结构良好的。 对充满印刷错误(例如“RUBBER DUCK TYS”)、缺少空格(例如“PINKPOLYESTERDRESSES”)、一堆插入的随机单词的文本数据进行分类的技术呢? (例如“INTEL CHIP 220mg 1104 OLD TOWN ST.)等?

我知道 n-gram 方法 + 可以在这里使用分类器,但是

    使用 n-gram 可能在计算上很昂贵(想象一下 由 1 亿个类似的产品条目组成的数据集 不可能在 n-gram 中使用嵌入(DRESS VS SHIRT 使用 三元组)

您认为有哪些方法适用于此?

【问题讨论】:

【参考方案1】: 基于

n-gram 的方法要求输入文本的结构更好。通常,您将输入表示为一袋 n-gram,因此请依赖训练数据和测试数据中出现的完全相同的 n-gram。另一方面,在使用预训练嵌入时,相似的词以相似的方式表示,因此您不需要在训练和测试数据中看到完全相同的词。

还有一些学习 n-gram 嵌入的方法(例如,https://github.com/artetxem/phrase2vec),但只有当你拥有像数百万个句子这样的非常大的数据时,它们才会得到回报。

在这种情况下,我会说,您应该专注于清理数据。 (删除停用词、OOV 和一些规范化应该会有所帮助。)

【讨论】:

当您说使用预训练嵌入时,您是指 GloVe 吗? BERT 是否使用预训练嵌入?我的问题是使它们正常化。那么你对此有何建议?可能是某种 XLNET + 的东西 我的意思是非上下文嵌入,GloVe 或 FastText。上下文嵌入(BERT、XLNet、...)也值得尝试,具体取决于您的输入有多嘈杂。它们经过预训练但不使用预训练的嵌入,它们训练自己的令牌嵌入。规范化是指手工制作的规则,从文本中过滤掉奇怪的东西。

以上是关于产品描述凌乱文本数据分类的最佳方法的主要内容,如果未能解决你的问题,请参考以下文章

文本分类任务的最佳 scikit 分类器

最佳文本文档分类算法 [关闭]

scikit-learn 中为文本分类排列文本数据的标准方法是啥?

在 Weka 中级联分类器的错误方法

选择最适合的分类器算法

文本分类(机器学习方法)