文件功能矢量表示

时间:2012-08-20 22:40:32

标签: algorithm machine-learning document-classification feature-extraction

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

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

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

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

据我所知,我必须使用n-gram方法。还是有其他方法来表示文件?

如果有人可以将我与N-Gram指南联系起来,以便更清晰地了解并了解其运作方式,我也将不胜感激。

先谢谢

1 个答案:

答案 0 :(得分:9)

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

    N-gram只是N个项目的序列。在按主题分类时,您通常使用N-gram单词或其根(尽管有基于N-gram字符的模型)。最流行的N-gram是unigrams(只是单词),bigrams(2个连续单词)和trigrams(3个连续单词)。所以,从句子

      

    您好,我的名字是弗兰克

    你应该得到以下的unigrams:

      

    [你好,我的,名字,是,坦白](或[你好,我,名字,是,坦白],如果你使用根)

    关注双胞胎:

      

    [hello_my,my_name,name_is,is_frank]

    等等。

    最后,您的要素向量应具有与所有文本中的单词以及未知单词中的单词一样多的位置(维度)。实例向量中的每个位置都应以某种方式反映实例文本中相应单词的数量。这可能是出现次数二进制要素(如果出现单词则为1,否则为0),规范化要素tf-idf(非常按主题分类很受欢迎)。

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