dis que j'ai un texte étiqueté (mot, étiquette) au format tuple. Je veux le convertir en une chaîne afin d'apporter quelques modifications aux tags. ma fonction ci-dessous ne voit que la dernière phrase dans le texte, je suppose qu'il ya une erreur évidente et stupide que je ne peux pas réaliser, alors plz aider à faire fonctionner le texte entier.opérant sur des tuples/chaînes intégrés, python
>>> import nltk
>>> tpl = [[('This', 'V'), ('is', 'V'), ('one', 'NUM'), ('sentence', 'NN'), ('.', '.')], [('And', 'CNJ'), ('This', 'V'), ('is', 'V'), ('another', 'DET'), ('one', 'NUM')]]
def translate(tuple2string):
for sent in tpl:
t = ' '.join([nltk.tag.tuple2str(item) for item in sent])
>>> print t
'And/CNJ This/V is/V another/DET one/NUM'
P.S. pour ceux qui sont intéressés, tuple2str fonction est décrite here
EDIT: maintenant je devrait reconvertir en un tuple, ayant le même format. Comment fait-on ça?
>>> [nltk.tag.str2tuple(item) for item in t.split()]
celui ci-dessus convertit en en uplet entier, mais j'ai besoin d'un embedded (le même que dans l'entrée (tpl
))
EDIT2: bien, sans doute il vaut la peine de publier le code entier :
def translate(tpl):
t0 = [' '.join([nltk.tag.tuple2str(item) for item in sent]) for sent in tpl]
for t in t0:
t = re.sub(r'/NUM', '/N', t)
t = [nltk.tag.str2tuple(item) for item in t.split()]
print t
absolument et évidemment à droite! – Gusto
plz voir le ** EDIT: ** ajouter – Gusto
mais je ne peux pas le modifier car il est encore un tuple ... – Gusto