Входной файл: | Стандартный вход | Ограничение времени: | 10 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
Требуется реализовать TF-IDF векторайзер по заданному корпусы D содержащему N предложений и примерить его к K предложениям.
tf(t,d) = nt∑k nk
Где nt есть число вхождений слова t в предложение, а в знаменателе — общее число слов в данном предложении.
idf(t,D) = log10|D||{ di ∈ D ∣ t ∈ di }|
|D| — число документов в коллекции; |{ di ∈ D ∣ t ∈ di }| — число документов из коллекции D, в которых встречается t.
Первая строка содержит N - количество предложений в корпусе D. Далее следует N строк описывающих предложения корпуса, первое число в строке m количество слов в предложении, далее идёт m слов, являющиеся результатом токенизации предложения из корпуса D. Далее следует W - количество уникальных слов в корпусе D. Следующие W строк содержат слова и их индексы. Далее следует K запросов, такого же формата как и предложения корпуса D.
Для каждого запроса из требуется вывести значения TF-IDF для каждого слова (сначала индекс слова, потом значение TF-IDF), в порядке увеличения индексов с точность до 5ти знаков после запятой.
1 ≤ N, W,K ≤ 105.
Суммарная длина всех слов в тест не превосходи 106. Во всех предложениях запросов все слова содержатся в корпусе.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|