Как сопоставить категорию с предложением, используя словарь - PullRequest
1 голос
/ 27 марта 2020

У меня есть следующие предложения и дикт:

dictio = {'col1': ['smell', 'scent'], 'col2': ['color', 'red','blue'],'col3':['long','small']}

Sentence = ["The color of pants is blue and red","The tshirt smell very good", "She is a tall person", 
"The monkey is playing"]

Я хочу сопоставить предложение с его категорией:

dic_keys = dictio.keys()
resultat = []
for key_dics in dic_keys:
    for values in dictio[key_dics]:
        for sent in Sentence:
            if values in sent.lower().split():
                resultat.append(key_dics) 

Я получаю следующий результат:

['col1', 'col2', 'col2', 'col3']

Но мне нужны следующие результаты:

['col2', 'col1', 'col3', 'KO']

Когда я заканчиваю для l oop с условием else. У меня странный результат .

Мне нужна ваша помощь для решения этой проблемы.

1 Ответ

0 голосов
/ 27 марта 2020

Есть много вопросов в вашем вопросе, а также код.

Ваши ожидаемые результаты неверны - он имеет только 4 значения, когда ему нужно 5 - а также, col3 должен иметь smell и не small для получения необходимых результатов.

Ваши циклы for можно оптимизировать.

dictio = {'col1': ['smell', 'scent'], 'col2': ['color', 'red','blue'],'col3':['long','smell']}

Sentence = ["The color of pants is blue and red","The tshirt smell very good", "She is a tall person", "The monkey is playing"]

res = []
flag = True

for sent in Sentence:
  for k, v in dictio.items():
    if [x for x in v if x in sent.split()]:
      res.append(k)
      flag = False
  if flag:
    res.append("KO")
  flag = True

print(res)
# ['col2', 'col1', 'col3', 'KO', 'KO']
...