говорят, что у меня есть теговый текст (слово, тег) в формате кортежа.я хочу преобразовать его в строку, чтобы внести некоторые изменения в теги.моя функция ниже видит только последнее предложение в тексте, я предполагаю, что есть некоторая очевидная и глупая ошибка, которую я не могу осознать, поэтому плз поможет заставить ее работать на весь текст.
>>> 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'
PS для техкому интересно, функция tuple2str описана здесь
РЕДАКТИРОВАТЬ: теперь я должен преобразовать ее обратно в кортеж, имеющий тот же формат.Как мне это сделать?
>>> [nltk.tag.str2tuple(item) for item in t.split()]
приведенный выше конвертируется в целый кортеж, но мне нужен встроенный (такой же, как во входных данных (tpl
))
EDIT2: ну, наверное, стоит опубликовать весь код:
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