【问题标题】:Binarization in Natural Language Processing自然语言处理中的二值化
【发布时间】:2010-10-09 09:59:03
【问题描述】:

二值化是将实体的彩色特征转换为数字向量(通常是二进制向量)的行为,以便为分类器算法提供良好的示例。

如果我们在哪里对句子“The cat ate the dog”进行二值化,我们可以首先为每个单词分配一个 ID(例如 cat-1、ate-2、the-3、dog-4),然后简单地替换单词的 ID 给出向量 。

给定这些 ID,我们还可以通过为每个单词赋予四个可能的槽位并将与特定单词对应的槽位设置为 1 来创建二进制向量,从而给出向量 。后一种方法,据我所知,通常被称为词袋法。

现在我的问题是,在描述自然语言处理的一般特性和基于转换的依赖解析(使用 Nivres算法)特别是?

在这种情况下,我们不想对整个句子进行编码,而是要对解析的当前状态进行编码,例如堆栈上的顶部单词和输入队列中的第一个单词。由于顺序是高度相关的,这排除了词袋方法。

best,我指的是使数据对分类器最易理解的方法,而不会占用不必要的内存。例如,我不希望一个单词 bigram 使用 4 亿个特征来处理 20000 个独特的单词,如果实际上只有 2% 的 bigrams 存在的话。

由于答案也取决于特定的分类器,我最感兴趣的是最大熵模型 (liblinear)、支持向量机 (libsvm) 和感知器,但也欢迎适用于其他模型的答案。

【问题讨论】:

  • 我不知道二值化是什么,而且我敢肯定很多其他人都在同一条船上,所以如果你能解释一下你对我们这些人的意义,那就太好了不熟悉 NLP 的人(如果不是为了帮助我们回答,至少是为了帮助理解该主题)。
  • 这里一样——你能定义二值化吗?
  • 也许您可以定义“最佳”的含义,即最节省空间、最高效处理、最具描述性。
  • 我认为很明显,最节省空间的方法可能是对大多数分类器进行模糊处理,只要您不截断我不想这样做的数据,所有表示都会就像描述一样。至于处理效率,目前这不是问题……

标签: machine-learning nlp classification libsvm


【解决方案1】:

二值化是 改变多彩的特征 将实体转换为数字向量, 最常见的二元向量,使 分类器的好例子 算法。

我遇到的大多数数值特征的取值01(不是您描述的二进制)之间,表示向量中特定特征的相关性(在 0% 之间)和 100%,其中1 代表 100%)。一个常见的例子是 tf-idf 向量:在表示文档(或句子)的向量中,整个词汇表中的每个术语都有一个值,表示该术语与所表示的文档的相关性。

正如 Mike 在his reply 中所说的那样,这是一个广泛领域的复杂问题。除了他的建议之外,您可能会发现以vector space modelvector space classificationlatent semantic indexing 等一些information retrieval 技术为起点很有用。此外,word sense disambiguation 领域在 NLP 中处理了很多feature 表示问题。

【讨论】:

    【解决方案2】:

    [不是直接的答案] 这完全取决于您尝试解析和处理的内容,但对于一般的短人类短语处理(例如 IVT),另一种方法是使用神经网络来学习模式。这对于小词汇量来说可能非常准确

    【讨论】:

      【解决方案3】:

      这实际上是一个非常复杂的问题。您必须做出的第一个决定是是否lemmatize 您的输入标记(您的话)。如果你这样做,你会大大减少你的类型计数,并且你的语法解析变得不那么复杂。但是,要对令牌进行词形还原需要做很多工作。现在,在计算机语言中,这项任务大大减少了,因为大多数语言使用一组明确定义的符号(例如空格或句点或诸如此类)来分隔关键字或变量名。

      第二个关键决定是您将在事后处理数据。您提供的二进制形式的“词袋”方法会忽略词序,如果您正在执行 summarization of a text 或者您不关心的 Google 风格的搜索,这完全没问题 where 单词出现的地方,只要它们出现。另一方面,如果您正在构建诸如编译器或解析器之类的东西,那么顺序非常重要。您可以使用令牌向量方法(如第二段中所述),或者您可以扩展词袋方法,以便词袋向量中的每个非零条目都包含令牌的线性索引位置在短语中。

      最后,如果您要构建 parse trees,有明显的原因需要您使用标记向量方法,因为维护每个单词的子短语 ID 很麻烦词袋向量,但很容易在标记向量中制作“子向量”。事实上,Eric Brill 为他的part-of-speech tagger 使用了一个 token-id 序列,这真的很整洁。

      你介意我问一下你在做什么具体的任务吗?

      【讨论】:

      • 感谢您的良好回答! :) 我一定会查看 Brills 令牌 ID 序列的详细信息。关于使用带有整数的 BOW 表示来表示标记线性索引,您真的认为这对 SVM 分类器有效(提供良好的性能)吗?
      • 具体任务是Nivres线性时间,基于转换的解析算法和liblinear最大熵分类器的实现。
      • @sganslandt:对于 SVM 分类器,您可能会考虑使用 n-gram(bigrams、trigrams 等)而不是标记 - 这保留了本地上下文顺序,但忽略了全局顺序。然后,您可以使用常规的旧词袋并仍然保留一些上下文信息。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多