Hello, I'm scratching my head into solving a problem of transforming a POS-Tagged text in a normal text. My biggest problem is that I can't get the quotes to be placed properly. I had tried a different approach but was advised in the nltk list to use this example, but it does not solve the quoting problem...
#== Here's the sample code === # -*- coding: cp1252 -*- input = """Titelman NOM <unknown> riu-se V+P rir em PRP em seu ADJ seu típico ADJ típico modo NOM modo grosseiro ADJ grosseiro e CONJ e respondeu V responder : SENT : " QUOTE " Você P você prende V prender a DET a criminosos NOM criminoso e CONJ e a DET a pessoas NOM pessoa más ADJ mau , VIRG , mas CONJ mas eu P eu detenção NOM detenção só ADJ só aos PRP+DET a anabatistas NOM <unknown> , VIRG , quem PR quem levam V levar vidas NOM vida boas ADJ bom e CONJ e nunca ADV nunca fazem V fazer uso NOM uso da PRP+DET de violência NOM violência " QUOTE " . SENT . Ouvi V ouvir dizer V dizer que CONJSUB que o DET o servidor ADJ servidor público NOM público lhe P lhe deu V dar uma DET uma boa ADJ bom resposta NOM resposta : SENT : " QUOTE " Se P se eu P eu detenção NOM detenção a PRP a toda ADJ todo a DET a gente NOM gente má ADJ mau e CONJ e você P você prende V prender a PRP a toda ADJ todo a DET a gente NOM gente boa ADJ bom , VIRG , quem PR quem ficará V ficar ? SENT ? " QUOTE " +...@+ V <unknown> +...@+ V <unknown> – V <unknown> Sabes NOM <unknown> ? SENT ? """ PUNCT = '!#$%)*,-.:;<=>?@/\\]^_`}~”…' LINEBREAK = '+...@+' tokens = [line.split()[0] for line in input.splitlines()] # instead output = [] for t in tokens: if t == LINEBREAK: output.append('\n') else: if t not in PUNCT: output.append(' ') output.append(t) print ''.join(output) #== It ouputs this: Titelman riu-se em seu típico modo grosseiro e respondeu: " Você prende a criminosos e a pessoas más, mas eu detenção só aos anabatistas, quem levam vidas boas e nunca fazem uso da violência ". Ouvi dizer que o servidor público lhe deu uma boa resposta: " Se eu detenção a toda a gente má e você prende a toda a gente boa, quem ficará? " – Sabes? You see, the quotes have spaces in between: My old code that didn't do the job as good was this (hairy) one: The removing of tags I had already done with "sed". myoutput = cStringIO.StringIO() f = open(r'C:\mytools\supersed\tradunew.txt') lista = [line.strip() for line in f] punct = '!#$%)*,-.:;<=>?@/\\]^_`}~”…' for i, item in enumerate(lista): if item == '"' and lista[i + 1] not in punct: myoutput.write(item) spacer = True elif '+...@+' in item: donewline = item.replace('+...@+','\n ') myoutput.write(donewline) elif item not in punct and lista[i + 1] in punct: myoutput.write(item) elif item in punct and lista[i + 1] in punct: myoutput.write(item) elif item in punct and lista[i + 1] == '"' and spacer: myoutput.write(item) spacer = False elif item not in punct and lista[i + 1] == '"' and spacer: myoutput.write(item) spacer = False elif item in '([{“': myoutput.write(item) else: myoutput.write(item + " ") newlist = myoutput.getvalue().splitlines() myoutput.close() f = open(r'C:\mytools\supersed\traducerto-k.txt', 'w') for line in newlist: f.write(line.lstrip()+'\n') f.close() So a text like this: --- Example begins No , thank...@+ # this +...@+ I inserted to mark paragraphs, because the POS-Tagger don't keep paragraph marks He said , " No , thanks . " OK ? --- Example ends --- And I want to transform into this: No, thanks. He said, "No, thanks." OK? --- End example Thanks. _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor