Doc2Vec 如何处理作为文本数据一部分的数字数据?

数据挖掘 机器学习 文本挖掘 特征提取 词嵌入
2021-10-15 01:42:14

我的数据包含不同的数字和原始文本,例如:

  1. 柴油发电机的功率为15kva。我需要一个单相发电机。
  2. 需要 140 kva 的三相发电机。
  3. 需要 70g/m^2 GSM a4 尺寸的复印纸。

我删除了数值数据,并在从 Doc2Vec 获得的向量上训练了一个分类器,得到了大约 80% 的准确率。

有没有办法在创建 doc2vec 向量时考虑文本中涉及的数字(这里是 15,140,​​70)?或者是否有任何方法可以考虑这些数字以提高准确性?

3个回答

如果您将数字作为字符串类型传递,Doc2Vec 应该只接受这些作为词汇表的一部分而没有问题。您是否尝试过使用仍然包含数字的 Doc2Vec 培训?

如果您不能按原样传递值,那么解决问题的一种方法是给它们一个唯一标识符(例如 < NUM >)。值是多少并不重要,因为理论上 Doc2Vec 应该不能从中提取任何信息(实际上不应该)。相反,如果您在文档中出现数字(通过使用标识符)时教它,这可能会提高准确性。

在阅读了谷歌和其他人发表的关于词嵌入的原始研究之后,我很遗憾地说它没有提到如何处理这些数据。虽然您可以假设只是在未经编辑的原始文本上运行模型,但取决于您所需的最终用途(以及数据的维度),预处理可能非常有益。

如果我试图建立一个词嵌入模型并且没有足够的包含数字的原始数据来让模型找出不同数字及其用途之间的差异,我可能会使用正则表达式来帮助简化输入。虽然您可以将所有数字(任何长度)替换为统一标签(即@HFulcher建议的“NUM”),但根据您的应用程序,您可能会因为这样做而丢失数据。您可能想要区分价格、分数/百分比、序数、日期等。这可以通过改变将原始数字替换为('PRICE'、'DATE'等)的标签来完成。假设您也可以在数字和拼写数字之间交换,如果它们适合某个类别(例如落在某个上限或序数之下)。

欢迎来到本站!我认为这是一个很好的问题,可能没有快速的答案。我的直觉告诉我,您必须通过对数字和单位的一些培训来创建自己的自定义 Doc2Vec 实例。当您谈论“kva”和“a4”等特定领域的项目时尤其如此 - Doc2Vec 不会知道如何处理这些 OOTB,但您可以对其进行训练。