用于NLTK的宾夕法尼亚树银行标签集

时间:2015-10-06 23:03:31

标签: nlp nltk pos-tagger

我正在使用NLTK作为我项目的一部分,并且已经实现了Viterbi算法用于标记(尽管我知道标记器非常可用)。 我在我的代码中使用了以下剪辑

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

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

有没有办法可以将标签集参数设置为Penn bank标签集?追求这一点的动机是Penn Bank树有36-45个标签,这使得实现Viterbi算法变得可行(算法的复杂性为O(n * | S | ^ 3))其中n是句子的长度ans | S |是指标记集的大小,而棕色语料库中有一些~226个标记(这会增加计算时间)。并且通用标记集容易出现词义模糊。

如果PTB tagger不可用,可否有人建议替代它(除了布朗/通用)?

三江源。

1 个答案:

答案 0 :(得分:1)

您问题中的最后一句表示您已了解universal标记集:它只有大约10个POS标记,因为它们需要足够广泛才能映射其他标记集 他们。 Penn Treebank标签集与Brown有多对多关系,因此不可能(可靠)自动映射。

您可以使用已使用Penn Treebank标记集标记的语料库之一。 NLTK的treebank语料库样本只有布朗大小的十分之一(100,000字),但它可能足以满足您的需要。

或者,您可以自己简化布朗语料库:如果您只保留复合标记的第一部分,如VBN-TL-HLPPS+HVD,那么472个复杂标记将减少为71。仍然太多,检查定义并手动进一步折叠,例如合并NNNNS(单数和复数)。