Я предположил, что на каждое предложение приходится 4 фрагмента. Если это не так, я уверен, что вы можете легко настроить мой код, но пока это жестко закодировано для 4 элементов. Это, безусловно, может быть изменено, хотя. То, как я решил вывести эту информацию в списке. Для меня с тонкими списками гораздо проще работать и играть с ними, чем со словарями, и поэтому я сделал это следующим образом: Это будет список, заполненный такими элементами, как
sentence,uhm moeten langs uhm : sentence is made up of the following chunks : 1,uhm : 2,uhm moeten : 3,uhm moeten langs : 4,uhm moeten langs uhm
и следующим элементом. в списке будет
sentence,uh om die afsluiters : sentence is made up of the following chunks : 1,uh : 2,uh om : 3,uh om die : 4,uh om die afsluiters
Причина, по которой я сделал это так, состоит в том, что он легко разделяется, вы можете легко получить любой элемент, который хотите, например, вы можете разделить на
" : "
, а затем после того, как вы сможете l oop пройти и разделить на
","
, чтобы получить сам элемент.
ваш код в конце для меня выглядел следующим образом.
def prepare(file):
# set up variables
text = []
sent_dict = {}
sentence = ""
chunks = []
ngram = ""
maxn = 5
for word in file:
if word["eos"] == False:
# concatenate words
sentence += word["text"] + " "
chunk = " ".join(sentence.split(" ")[:-1][-maxn:])
index = word["index"]
chunks.append({index: {"ngram" : chunk}})
else:
sentence += word["text"]
chunk = " ".join(sentence.split(" ")[-maxn:])
index = word["index"]
chunks.append({index: {"ngram" : chunk}})
sent_dict["sentence"] = sentence
sent_dict["chunks"] = chunks
text.append(sent_dict)
sent_dict = {}
sentence = ""
chunks = []
return(text)
file = [{"index": "1", "text": "uhm", "eos": False}, {"index": "2", "text": "moeten", "eos": False}, {"index": "3", "text": "langs", "eos": False}, {"index": "4", "text": "uhm", "eos": True}, {"index": "1", "text": "uh", "eos": False}, {"index": "2", "text": "om", "eos": False}, {"index": "3", "text": "die", "eos": False}, {"index": "4", "text": "afsluiters", "eos": True}]
final_list = []
x = (prepare(file))
for i in x:
new_string = "sentence,{} : sentence is made up of the following chunks : 1,{} : 2,{} : 3,{} : 4,{}".format(i["sentence"], i["chunks"][0]["1"]["ngram"], i["chunks"][1]["2"]["ngram"], i["chunks"][2]["3"]["ngram"], i["chunks"][3]["4"]["ngram"])
final_list.append(new_string)
Помните, список с отформатированными у меня элементами называется final_list. Если вы выполните oop и напечатаете каждый элемент, вы увидите, что я вам показал. Надеюсь, с этим легче работать.