Я пишу программу для тегов NER с nltk и Mallet. Мне нужно преобразовать два формата входных данных, которые я не могу изменить.Преобразование списка списков кортежей в кортеж списков списков в python
Данные в основном содержат слова со связанными с ними тегами для контролируемого обучения, но есть подразделение данных в предложениях, следовательно, список списков.
Первый формат
tuple(list(list(word)),list(list(tag)))
, а второй формат
list(list(tuple(word,tag))
В настоящее время я преобразование его как этот (формат 2 => формат 1):
([[tup[0] for tup in sent] for sent in train_set],
[[tup[1] for tup in sent] for sent in train_set])
Примеры данных:
[[('Steve','PERSON'),('runs','NONE'),('Apple','ORGANIZATION')],[('Today','NONE'),('is','NONE'),('June','DATETIME'),('27th','DATETIME')]]
и ожидаемые результаты:
([['Steve', 'runs', 'Apple' ],['Today','is','June','27th']],
[['PERSON','NONE','ORGANIZATION'],['NONE','NONE','DATETIME','DATETIME']])
я выполнить преобразование в обоих направлениях
EDIT: Я не обязательно хочу, чтобы это было короче - пожалуйста, просто предложить лучший (и более читаемый) способ делая это в python 2.7 (с образцом кода).
Предоставьте данные образца и ожидаемый результат. –
Меньше символов ** не означает ** лучше. С вашим решением вы выполняете тот же цикл дважды. Если вы напишете его в классическом стиле «для ... в ...», это будет длиннее, но 1) более эффективным (один цикл) и 2) легче читать (ну, по крайней мере, для меня). – freakish
объясните нижний предел, пожалуйста, – mz8i