3

我在理解应该如何为词性标记实现结构化感知器时遇到了一些麻烦。您能否确认或更正我的想法,和/或填补任何缺失的空白?

因此,基本上结构化感知器是多类感知器的变体,除了您如何实现收集最佳分数。做出一阶马尔可夫假设,表示当前序列索引只依赖于前一个索引。输入是整个单词序列,而不是像在非结构化情况下那样只有一个单词,以及所有可能标签 (y) 的向量。函数 f(x,y) 返回给定单词序列的猜测标签序列。

在多类感知器中,通过迭代很容易获得最佳分数,因为我们只处理将一个标签分类到一个实例。对整个序列进行分类的问题在于它会导致可能的标记数量呈指数增长。这就是需要维特比算法的地方,它使用两个特征集递归地找到最佳路径;一个用于确定给定词性标签与某个词的可能性有多大,另一个用于确定某个词性标签直接出现在另一个词性标签之后的可能性。这些特征集中的分数乘以每个状态的唯一权重。如果选择的路径是错误的,则惩罚错误路径状态中的每个权重,并奖励正确路径中的权重。

这是关于我(希望)了解的程度。我现在最大的问题是特征是如何构造的(之前的标签序列是特征的一部分吗?),以及如何实际实现维特比算法。此外,在我可以分析的任何地方(最好是在 Java 中)是否有使用结构化感知器的 POS 标记器的实现?

如果您能给我一些提示,我将不胜感激!

4

1 回答 1

3

我想您已经阅读了原始论文,但为了完整起见,将在此处留下链接。

你的直觉基本上是正确的。关于特征,只要你坚持使用维特比算法,你就必须将自己局限于本地。这些通常包括一个单词窗口(我相信上面的论文中有 5 个单词)、一个或多个前面的 POS 标签和/或它们的组合。Viterbi 算法的实现将在一定程度上取决于特征的选择。一般来说,后者是动态编程中相对简单的练习,但您也可以在 Google 上搜索一些实现。例如,该项目声称包含上述论文中描述的算法的实现。

于 2012-10-11T14:33:42.750 回答