algorithm - 文档特征向量表示

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

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

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

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

每个文档(扫描的 pdf 和图像)中的文本都是使用 OCR 检索的,因此有些单词包含错误。而且我之前不了解这些文档中使用的语言(不能使用词干提取)。

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

如果有人可以将我链接到 N-Gram 指南以便更清楚地了解它并了解其工作原理,我将不胜感激。

提前致谢

最佳答案

  1. 使用语言检测 获取文档的语言(我最喜欢的工具是 Tika 项目的 LanguageIdentifier,但还有许多其他工具可用)。
  2. 使用拼写校正(有关详细信息,请参阅 this question)。
  3. Stem 单词(如果您在 Java 环境中工作,则选择 Lucene)。
  4. 收集所有N-grams(见下文)。
  5. 通过从特定文档中提取 n 元语法来生成用于分类的实例
  6. 构建分类器

N-gram 模型

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

Hello, my name is Frank

你应该得到以下 unigrams:

[hello, my, name, is, frank] (or [hello, I, name, be, frank], if you use roots)

以下二元组:

[hello_my, my_name, name_is, is_frank]

等等。

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

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

关于algorithm - 文档特征向量表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12046213/

相关文章:

python - 概括二维数组中的沙漏运动 - Python 中的 DS

javascript - 如何将 "summarize"整数数组转换为具有范围的字符串?

image-processing - 词袋模型中的分割

machine-learning - 从网页分类网站类型

machine-learning - 使用一个 "majority topic"和多个 "minority topics"对语料库进行主题建模

classification - 特征向量: calculation of weights for training vs test set

r - 在 R 中计算蚕食/归因

algorithm - 将数字表示为 0..maxSummand 中 N 个数字的均匀随机总和

python - 线性判别分析逆变换

python - 如何将不同维度的多个分类输入变量用于随机森林回归模型?