【问题标题】:Penn tree Bank tagset for NLTKNLTK 的 Penn 树银行标签集
【发布时间】:2015-10-06 23:03:31
【问题描述】:

我在我的项目中使用 NLTK,并且已经实现了 Viterbi 算法来进行标记(尽管我知道标记器非常可用)。 我在我的代码中使用了以下代码

tagdict = load('help/tagsets/brown_tagset.pickle')
taglist = tagdict.keys()
tag_sequence_corpus = brown.tagged_sents(tagset='brown')

前两行用于从棕色标记集中提取键,其中键是棕色标记集中可用的标记列表。 第三行的参数 tag-set='brown' 用于根据 Brown 语料库提供的标签集标记 brown 语料库。

有什么方法可以将标签集参数设置为宾夕法尼亚银行标签集?这样做的动机是 Penn Bank 树有大约 36-45 个标签,这使得实现 Viterbi 算法(算法的复杂性为 O(n*|S|^3) )成为可能,其中 n 是句子的长度|S|指标签集的大小,而棕色语料库中有大约 226 个标签(这增加了计算时间)。并且通用标签集容易产生词义歧义。

如果 PTB 标记器不可用,是否有人建议替代它(布朗/通用除外)?

谢谢。

【问题讨论】:

    标签: nlp nltk pos-tagger


    【解决方案1】:

    您问题中的最后一句话表明您知道universal 标签集:它只有大约 10 个 POS 标签,因为它们需要足够宽,以便将其他标签集映射到 他们。 Penn Treebank 标记集与 Brown 具有多对多关系,因此不可能进行(可靠的)自动映射。

    您可以做的是使用已经用 Penn Treebank 标记集标记的语料库之一。 NLTK 的treebank 语料库样本只有布朗(100,000 字)大小的 1/10,但它可能足以满足您的目的。

    或者,您可以自己简化 Brown 语料库:如果您只保留复合标签的第一部分,例如 VBN-TL-HLPPS+HVD,则 472 个复杂标签会减少到 71 个。如果仍然太多,请检查定义并手动进一步折叠它,例如通过合并 NNNNS(单数和复数)。

    【讨论】:

      猜你喜欢
      • 2017-10-22
      • 2016-07-04
      • 1970-01-01
      • 2011-10-28
      • 2013-10-05
      • 1970-01-01
      • 2016-11-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多