2

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

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

经过一番研究,我发现我可以使用 Bag of Words 方法或 N-gram 方法将文档表示为向量。

使用 OCR 检索每个文档(扫描的 pdf 和图像)中的文本,因此某些单词包含错误。而且我没有关于这些文档中使用的语言的先前知识(不能使用词干)。

据我了解,我必须使用 n-gram 方法。还是有其他方法来表示文档?

如果有人可以将我链接到 N-Gram 指南以便获得更清晰的图片并了解其工作原理,我也将不胜感激。

提前致谢

4

1 回答 1

9
  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 是 unigrams(只是单词)、bigrams(2 个连续单词)和 trigrams(3 个连续单词)。所以,从句子

你好,我叫弗兰克

你应该得到以下 unigrams:

[hello, my, name, is, frank](或 [hello, I, name, be, frank],如果你使用词根)

以下二元组:

[hello_my, my_name, name_is, is_frank]

等等。

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

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

于 2012-08-21T01:08:23.877 回答