NLTK 的 Penn tree Bank 标签集
Penn tree Bank tagset for NLTK
我正在使用 NLTK 作为我项目的一部分,并实现了用于标记目的的 Viterbi 算法(尽管我知道标记器非常可用)。
我在我的代码中使用了以下片段
tagdict = load('help/tagsets/brown_tagset.pickle')
taglist = tagdict.keys()
tag_sequence_corpus = brown.tagged_sents(tagset='brown')
前两行用于从棕色标签集中提取密钥,其中密钥是棕色标签集中可用的标签列表。
第三行参数tag-set='brown'用于根据Brown语料库提供的tag-set对brown语料库进行标注
有什么方法可以将标记集参数设置为 Penn bank 标记集?这样做的动机是宾夕法尼亚银行树有一些 36-45 个标签,这使得实现 Viterbi 算法(算法的复杂度为 O(n*|S|^3) )变得可行,其中 n 是句子长度ans |S|指的是标签集的大小,而棕色语料库中有大约 226 个标签(这增加了计算时间)。通用标签集容易出现词义歧义。
如果 PTB 标记器不可用,是否有人可以建议替代它(Brown/universal 除外)?
谢谢。
你问题的最后一句话表明你知道 universal
标签集:它只有大约 10 个 POS 标签,因为它们需要足够广泛才能映射其他标签集 给他们。 Penn Treebank 标签集与 Brown 具有多对多关系,因此不可能有(可靠的)自动映射。
您可以做的是使用已经用 Penn Treebank 标记集标记的语料库之一。 NLTK 的 treebank
语料库样本仅为 Brown 的 1/10(100,000 个单词),但它可能足以满足您的目的。
或者,你可以自己简化布朗语料库:如果你只保留复合标签的第一部分,如VBN-TL-HL
或PPS+HVD
,那么472个复杂标签减少到71个。如果仍然如此太多,检查定义并进一步手动折叠它,例如通过合并 NN
和 NNS
(单数和复数)。
我正在使用 NLTK 作为我项目的一部分,并实现了用于标记目的的 Viterbi 算法(尽管我知道标记器非常可用)。 我在我的代码中使用了以下片段
tagdict = load('help/tagsets/brown_tagset.pickle')
taglist = tagdict.keys()
tag_sequence_corpus = brown.tagged_sents(tagset='brown')
前两行用于从棕色标签集中提取密钥,其中密钥是棕色标签集中可用的标签列表。 第三行参数tag-set='brown'用于根据Brown语料库提供的tag-set对brown语料库进行标注
有什么方法可以将标记集参数设置为 Penn bank 标记集?这样做的动机是宾夕法尼亚银行树有一些 36-45 个标签,这使得实现 Viterbi 算法(算法的复杂度为 O(n*|S|^3) )变得可行,其中 n 是句子长度ans |S|指的是标签集的大小,而棕色语料库中有大约 226 个标签(这增加了计算时间)。通用标签集容易出现词义歧义。
如果 PTB 标记器不可用,是否有人可以建议替代它(Brown/universal 除外)?
谢谢。
你问题的最后一句话表明你知道 universal
标签集:它只有大约 10 个 POS 标签,因为它们需要足够广泛才能映射其他标签集 给他们。 Penn Treebank 标签集与 Brown 具有多对多关系,因此不可能有(可靠的)自动映射。
您可以做的是使用已经用 Penn Treebank 标记集标记的语料库之一。 NLTK 的 treebank
语料库样本仅为 Brown 的 1/10(100,000 个单词),但它可能足以满足您的目的。
或者,你可以自己简化布朗语料库:如果你只保留复合标签的第一部分,如VBN-TL-HL
或PPS+HVD
,那么472个复杂标签减少到71个。如果仍然如此太多,检查定义并进一步手动折叠它,例如通过合并 NN
和 NNS
(单数和复数)。