0

我正在使用nltk brown语料库来获取简化的标签集

import nltk
from nltk.corpus import brown

brown_tags = []

for sent in brown.tagged_sents(categories = 'news', simplify_tags = True):
    brown_tags.extend([tag for (word, tag) in sent])

tag_set = set(brown_tags)

然后我得到

set(['', 'FW', 'DET', 'WH', "''", 'VBZ', 'VB+PPO', "'", ')', 'ADJ', 'PRO', ' *', ',', '.', 'TO', 'NUM', 'NP', ':', 'ADV', '``', 'VD', 'VG', 'VN', 'N ', 'P', 'EX', 'V', 'CNJ', 'UH', '(', 'MOD'])

为什么有'', '""', ')',...?如何删除这些符号?

4

2 回答 2

1

奇怪的标签不是错误。您可以使用 来查看标签的完整列表及其含义nltk.help.brown_tagset()。神秘标签代表句子终止(.,标签.?!),否定词(*for notn't)等。所以不要把它们扔掉。

此外,您接受的答案将过滤掉所有双重标签,例如VB+PRO(动词加代词,如lemme , gimme )。不要这么快就扔掉信息。

于 2013-06-09T22:14:33.257 回答
1

你可以像这样删除,

>>> lst = ['', 'FW', 'DET', 'WH', "''", 'VBZ', 'VB+PPO', "'", ')', 'ADJ', 'PRO', '*', ',', '.', 'TO', 'NUM', 'NP', ':', 'ADV', '``', 'VD', 'VG', 'VN', 'N', 'P', 'EX', 'V', 'CNJ', 'UH', '(', 'MOD']    
>>> print ([ i for i in lst if i.isalpha() ])
['FW', 'DET', 'WH', 'VBZ', 'ADJ', 'PRO', 'TO', 'NUM', 'NP', 'ADV', 'VD', 'VG', 'VN', 'N', 'P', 'EX', 'V', 'CNJ', 'UH', 'MOD']
于 2013-06-06T13:11:01.590 回答