删除tagged_sents中不需要的符号

时间:2013-06-06 12:59:48

标签: python nltk

我正在使用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'])

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

2 个答案:

答案 0 :(得分: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']

答案 1 :(得分:1)

奇怪的标签不是错误。您可以使用nltk.help.brown_tagset()查看完整的标记列表及其含义。神秘标签代表句子终止(..?!等标签),负{* 1}} * },not)等等所以不要把它们抛弃。

此外,您接受的答案将过滤掉所有双重标记,例如n't(动词加代词,如 lemme gimme )。不要太快丢弃信息。