Уникальные слова в комментариях к доставкам

тема: Текст: мешок слов и TF-IDF · уровень: базовый

Условие

Служба доставки хранит комментарии к заказам в одной таблице, а результаты доставки — в другой. Таблицы связываются по идентификатору заказа.

Нужно посчитать число различных слов в комментариях только тех заказов, у которых результат доставки равен delivered.

Нормализацией слова называется перевод букв в нижний регистр. Словом считается максимальная последовательность латинских букв AZ или az. Все остальные символы разделяют слова. Стоп-слова после нормализации не учитываются.

Пусть W — множество всех нормализованных слов из комментариев доставленных заказов, не являющихся стоп-словами. Требуется вывести величину |W|, то есть количество уникальных подходящих слов. Если доставленных заказов нет или после удаления стоп-слов не осталось слов, следует вывести 0. Повторения слов в одном или нескольких комментариях учитываются один раз.

Равенства между вариантами выбора не возникают, так как требуется вывести одно целое число.

Формат ввода

В первой строке даны два целых числа n и k — количество заказов в каждой из двух таблиц и количество стоп-слов.

Следующие n строк образуют таблицу комментариев. Каждая строка содержит идентификатор заказа, символ табуляции и комментарий к заказу:

order_id<TAB>comment

Комментарий может быть пустым, тогда после идентификатора всё равно записан символ табуляции.

Следующие n строк образуют таблицу результатов доставки. Каждая строка содержит идентификатор заказа, символ табуляции и результат:

order_id<TAB>status

Строки второй таблицы могут идти в любом порядке. Для каждого идентификатора из первой таблицы существует ровно одна строка во второй таблице.

В следующих k строках записаны стоп-слова, по одному в строке. Они уже записаны строчными латинскими буквами.

Формат вывода

Выведите одно целое число — количество уникальных нормализованных слов из комментариев заказов со статусом delivered, не входящих в список стоп-слов.

Дробной части у ответа нет, округление не применяется.

Ограничения

1 ≤ n ≤ 1000.

0 ≤ k ≤ 100.

Идентификатор заказа имеет длину от 1 до 12 символов, начинается с заглавной латинской буквы и далее содержит только заглавные латинские буквы и цифры.

Длина комментария от 0 до 120 символов. Комментарий содержит только латинские буквы, пробелы и символы ,, ., -, ?.

Каждое стоп-слово имеет длину от 1 до 20 символов и содержит только строчные латинские буквы.

Статус имеет одно из трёх значений: delivered, cancelled, returned.

Решить задачу с автопроверкой на Python →

Куда дальше