Я хочу создать диктонну из другого, но с тем же ключом. Я попытался обновить значение моего первого словаря, но я получил ошибку. Поэтому сейчас я пытаюсь создать новый словарь из первого.
Я бы хотел, чтобы ключ был таким же, а не менял их.
# -*- coding: UTF-8 -*-
import codecs
import re
import os
import sys, argparse
import subprocess
import pprint
import csv
from itertools import islice
import pickle
try:
import treetaggerwrapper
from treetaggerwrapper import TreeTagger, make_tags
print("import TreeTagger OK")
except:
print("Import TreeTagger pas Ok")
from itertools import islice
from collections import defaultdict
#export le lexique de sentiments
pickle_in = open("dict_pickle", "rb")
dico_lexique = pickle.load(pickle_in)
# extraction colonne verbatim
d = {}
with open(sys.argv[1], 'r', encoding="cp1252",) as csv_file:
csv_file.readline()
for line in csv_file:
token = line.split(';')
d[token[0]] = token[1]
#print(d)
#Writing in a new csv file
with open('result.csv','wb', sep=';', encoding='Cp1252') as f:
w = csv.writer(f)
w.writerows(d.items())
tagger = treetaggerwrapper.TreeTagger(TAGLANG='fr')
d_tag = {}
for key,val in d.items():
newvalues = tagger.tag_text(val)
#print(newvalues)
for key,val in d_tag.items():
d_tag[key] = d[key]
d_tag[val] = newvalues
print(d_tag)
#Writing in a new csv file, Writing the key to be sure it coincides
with open('result.csv','wb', sep=';', encoding='Cp1252') as f:
w = csv.writer(f)
w.writerows(d_tag.items())
файл (это пример, оригинал имеет около 6000 строк в CSV
id;Verbatim;score
1;tu es laid;5
2;Je suis belle; 6
3;Je n'aime pas la viande;7
Как это выглядит после извлечения первого и второго столбца:
{'1': 'tu es laid\n', '2': 'Je suis belle \n', '3': "Je n'aime pas la viande"}
Ожидаемый ответ, я бы хотел, чтобы тег соответствовал ключу их исходного предложения
d_tag = { "1" : ['tu\tPRO:PER\ttu', 'es\tVER:pres\têtre', 'laid\tADJ\tlaid'],
"2" : ['Je\tPRO:PER\tje', 'suis\tVER:pres\tsuivre|être', 'belle\tADJ\tbeau'],
"3" : ['Je\tPRO:PER\tje', "n'\tADV\tne", 'aime\tVER:pres\taimer', 'pas\tADV\tpas', 'la\tDET:ART\tle', 'viande\tNOM\tviande']}
Позже я хотел бы извлечь только третье слово (зацикливание во втором словаре и переписать новое с тем же ключом, но содержащим только лемму, содержащуюся в индексе [2].
Это значит, что нужно получить что-то вроде этого:
d_lemma = { "1" : ['tu', 'être', 'laid'],
"2" : ['Je', 'suivre|être', 'beau'],
"3" : ['Je', "ne", 'aimer', 'pas', 'le', 'viande']}
приведенный выше код не работает, есть идеи, как его изменить, чтобы получить ожидаемый результат для второго словаря.
К сожалению, мне нужно использовать ключ, чтобы сохранить предложения, чтобы я мог записывать значения по одному в CSV на каждом шаге или в конце.