Сходство описаний фильмов

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

Условие

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

Для двух фильмов из запроса требуется вычислить коэффициент Жаккара между множествами слов их описаний. Если множества слов обозначены через A и B, то коэффициент Жаккара равен J(A, B) = |A ∩ B| / |A ∪ B|.

Описание - означает отсутствие тематических слов, то есть пустое множество. Если оба множества пусты, коэффициент Жаккара считается равным 0. При равенстве идентификаторов фильмов в запросе документ сравнивается сам с собой.

Выведите значение коэффициента с тремя знаками после точки. Используется обычное форматирование до трёх знаков после точки.

Формат ввода

В первой строке дано целое число n — количество фильмов.

В следующих n строках записаны идентификатор фильма и его описание через пробел. Описание состоит из строчных латинских слов, разделённых одним пробелом, либо из единственного символа -.

В последней строке записаны два идентификатора фильмов movie_id_a и movie_id_b — запрос на сравнение. Оба идентификатора присутствуют среди фильмов.

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

Выведите один коэффициент Жаккара для двух фильмов из запроса с тремя знаками после точки.

Ограничения

1 ≤ n ≤ 2000.

1 ≤ movie_id ≤ 10^9, все идентификаторы фильмов различны.

В описании содержится от 0 до 50 слов.

Длина каждого слова составляет от 1 до 20 символов, используются только строчные латинские буквы.

Длина строки с описанием не превышает 1100 символов.

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

Куда дальше