2016-01-11 3 views
0

У меня есть фрагмент кода, который создал список позиций из нескольких списков слов, например:
не спрашивайте, что вы можете сделать для своей страны, спросите, что ваша страна может сделать для васпреобразование списка позиций в список слов

некоторые люди пользуются вычислительными другие не пользуются вычислительной

я буду использовать это как мое последнее предложение, как я не нужен еще один приговор

имеют списки позиционные:

[1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 3, 8, 9, 5, 6, 7, 4], [1, 2, 3, 4, 5, 6, 7, 3, 4], [1, 2, 3, 4, 5, 6, 7, 8, 5, 1, 11, 12, 13, 14, 8]

Теперь мне нужно создать кусок код, который может сделать обратное: воссоздать предложения из списка вакансий

Я застрял в попытке сделать это и был бы признателен за любую помощь.

если это неясно, скажите, пожалуйста, так что я могу сделать любой ammends моей формулировки

+0

Какую информацию занимает список позиций? Каково значение каждого значения в списке позиций? – inspectorG4dget

+0

каждое значение - это положение первого раза, когда каждое слово сначала возникает, если значение повторяется позже в списке, это означает, что слово было повторено – iamnonoob35

ответ

0
In [22]: sentence = "some people enjoy computing others do not enjoy computing".split() 

In [23]: poslist = [1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 3, 8, 9, 5, 6, 7, 4] 

In [24]: ' '.join(sentence[i-1] for i in poslist) 
Out[24]: 'some people enjoy computing others do not enjoy computing some enjoy enjoy computing others do not computing' 
0
data = ["ask not what you can do for your country ask what your country can do for you", 
"some people enjoy computing others do not enjoy computing", 
"i will use this as my last sentence as i do not need another sentence"] 

pos_lists = [[1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 3, 8, 9, 5, 6, 7, 4], [1, 2, 3, 4, 5, 6, 7, 3, 4], [1, 2, 3, 4, 5, 6, 7, 8, 5, 1, 11, 12, 13, 14, 8]] 

def regenerate_text(position_list, index): 
    sentence = [] 
    for position in position_list: 
     sentence.append(index[position]) 
    return " ".join(sentence) 

for sentence, pos_list in zip(data, pos_lists): 
    sentence_tokens = sentence.split() 
    index = dict() 
    for pos, word in enumerate(sentence_tokens): 
     if word not in index: 
      index.update({pos+1: word}) 
    new_sentence = regenerate_text(pos_list, index) 
    assert(sentence == new_sentence) 

Вы можете создать словарь позиций и соответствующие лексемы в предложении, а затем использовать словарь, чтобы получить окончательный список жетонов. regenerate_text преобразует список позиций и словарь для создания предложения.

Смежные вопросы