文档特征向量表示

我正在构建一个文档分类器来对文档进行分类。

因此,第一步是将每个文档表示为“特征向量”以用于训练目的。

经过一些研究,我发现我可以使用词袋方法或N-gram方法来将文档表示为向量。

每个文档中的文本(扫描的PDF和图像)是通过OCR检索的,因此有些词包含错误。而且我对这些文档中使用的语言没有先验知识(不能使用词干提取)。

据我所知,我必须使用N-gram方法。或者还有其他方法来表示文档吗?


回答:

  1. 使用语言检测来获取文档的语言(我最喜欢的工具是Tika项目中的LanguageIdentifier,但还有许多其他可用的工具)。
  2. 使用拼写纠正(有关详细信息,请参见这个问题)。
  3. 词干提取(如果您在Java环境中工作,Lucene是您的选择)。
  4. 收集所有N-gram(见下文)。
  5. 通过从特定文档中提取N-gram来制作实例以进行分类。
  6. 构建分类器

N-gram模型

N-gram只是N个项目的序列。在按主题分类时,您通常使用词或其词根的N-gram(尽管也有基于字符N-gram的模型)。最流行的N-gram是一元 gram(单个词)、二元 gram(两个连续的词)和三元 gram(三个连续的词)。因此,从句子

Hello, my name is Frank

您应该得到以下一元 gram:

[hello, my, name, is, frank](或者如果您使用词根,则为[hello, I, name, be, frank])

以下是二元 gram:

[hello_my, my_name, name_is, is_frank]

依此类推。

最后,您的特征向量应该有与您所有文本中的词一样多的位置(维度)再加上一个用于未知词的位置。实例向量中的每个位置应该以某种方式反映实例文本中相应词的数量。这可能是出现次数二元特征(如果词出现则为1,否则为0)、归一化特征tf-idf(在按主题分类中非常流行)。

分类过程本身与任何其他领域的分类过程相同。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注