|
0 / 0 / 0
Регистрация: 14.11.2021
Сообщений: 8
|
||||||
Шаблонная функция которая будет вычислять TF-IDF14.11.2021, 00:09. Показов 4209. Ответов 16
Всем добрый вечер!
Нужно сделать шаблонную функцию, которая будет вычислять TF-IDF. Однако не проходит решение, судя по всему из-за map<vector<Term>, double> TF. Чем его можно заменить или как исправить? Заранее спасибо. Код получился следующий:
0
|
||||||
| 14.11.2021, 00:09 | |
|
Ответы с готовыми решениями:
16
Нужно создать функцию которая будет вычислять центры этих фигур,а потом создать еще одну функцию которая уже будет рисовать эти точки(центры)в фигурах Составьте функцию, которая будет вычислять модуль вектора Составить программу которая будет вычислять произведение двух матриц... |
|
Вездепух
12928 / 6796 / 1819
Регистрация: 18.10.2014
Сообщений: 17,193
|
|||
| 14.11.2021, 02:04 | |||
vector<Term>? Почему vector<Term>?
0
|
|||
|
0 / 0 / 0
Регистрация: 14.11.2021
Сообщений: 8
|
||||
| 14.11.2021, 16:16 [ТС] | ||||
Суть в том, что нужно на что-то заменить этот map. Как подсказали, нужно использовать алгоритм count, чтобы подсчитать число вхождений term_query в документ. Но пока не могу понять, куда его поместить. Если в цикл, то получается совсем неправильное решение.
0
|
||||
|
Вездепух
12928 / 6796 / 1819
Регистрация: 18.10.2014
Сообщений: 17,193
|
||
| 14.11.2021, 16:47 | ||
|
Я еще раз повторяю вопрос: почему в коде объявляется map<vector<Term>, double>? Что такое vector<Term>? Почему в качестве ключа в map указан некий vector<Term>? Откуда взялся vector<Term>?
0
|
||
|
0 / 0 / 0
Регистрация: 14.11.2021
Сообщений: 8
|
||
| 14.11.2021, 16:54 [ТС] | ||
Реализуйте шаблонную функцию ComputeTfIdfs, которая вычисляет TF-IDF заданного слова для каждого документа из набора. Первый параметр documents — контейнер документов. Циклом for (const auto& document : documents) можно перебрать все документы в нём, а в каждом документе — все слова. Тип слова, документа и набора документов может быть произвольным — ваша функция должна быть готова к любым, если есть возможность итерирования. Гарантируется, что и набор документов, и каждый отдельный документ имеют методы begin, end и size. Например, документом может быть строка, а словом — символ. Второй параметр term — слово, у которого нужно вычислить TF-IDF. Его тип совпадает с типом слов, которые получаются при итерировании по документу. Функция должна вернуть вектор вещественных чисел, который совпадает по длине с количеством документов. В первом элементе должен лежать TF-IDF слова term для первого документа, в последнем элементе — TF-IDF слова term для последнего документа. Напоминаем, что TF-IDF — это произведение TF и IDF. TF слова term в документе — доля слов документа, совпадающих с term. IDF вычисляется для слова независимо от конкретного документа и равен логарифму (функция log из <cmath>) от documents.size() / document_freq, где знаменатель — это количество документов, содержащих term. Пример из тренажёра должен вывести 0.081093 0.101366 0.
0
|
||
|
Заблокирован
|
||||||
| 14.11.2021, 16:57 | ||||||
|
не тестировал, но куда ближе к реальности...
0
|
||||||
|
0 / 0 / 0
Регистрация: 14.11.2021
Сообщений: 8
|
|||||||
| 14.11.2021, 16:58 [ТС] | |||||||
|
Vector<Term> - вектор определенных слов, число вхождений которых/ого и нужно проверить в ряде документов. Вот так выглядит main
0
|
|||||||
|
Заблокирован
|
|
| 14.11.2021, 17:06 | |
|
Поправил грубые ошибки.
Добавлено через 2 минуты for (auto i = 0; i<=documents.size(); ++i ) убрать равно, по естественным причинам Добавлено через 4 минуты из вики не понял значения знаменателя для IDF. Он будет равен нулю если нет вхождения ни в один документ. То есть нужно добавить условие, либо есть вхождение либо 1 ?
0
|
|
|
0 / 0 / 0
Регистрация: 14.11.2021
Сообщений: 8
|
||
| 14.11.2021, 17:14 [ТС] | ||
|
По изначальному коду как раз и вычисляется, что в третьем документе слова "кот" нет, потому и tf-idf=0
0
|
||
|
Заблокирован
|
|||||||
| 14.11.2021, 17:23 | |||||||
0
|
|||||||
|
0 / 0 / 0
Регистрация: 14.11.2021
Сообщений: 8
|
||
| 14.11.2021, 17:28 [ТС] | ||
|
Ошибка компиляции: /tmp/tmpx1eo3t1h/submission.cpp: In instantiation of ‘std::vector<double> ComputeTfIdfs(const Documents&, const Term&) [with Documents = std::set<std::__cxx11::basic_string<char > >; Term = char]’: /tmp/tmpx1eo3t1h/submission.cpp:159:59: required from here /tmp/tmpx1eo3t1h/submission.cpp:15:38: error: no match for ‘operator[]’ (operand types are ‘const std::set<std::__cxx11::basic_string<char > >’ and ‘int’) 15 | query_count = count(documents[i].begin(), documents[i].end(), term_query); | ~~~~~~~~~^ compilation terminated due to -Wfatal-errors.
0
|
||
|
Заблокирован
|
|
| 14.11.2021, 17:43 | |
|
Там Documents - std::set<string>
![]() Хотел как лучше, итерирования только begin, end. Сразу бы задание написали, обошлись бы без этого. Исправляйте сами.
0
|
|
|
0 / 0 / 0
Регистрация: 14.11.2021
Сообщений: 8
|
|
| 14.11.2021, 17:46 [ТС] | |
|
Ну ладно, в любом случае спасибо
0
|
|
|
Заблокирован
|
||||||
| 14.11.2021, 17:52 | ||||||
Сообщение было отмечено TONRU как решение
Решение
1
|
||||||
|
0 / 0 / 0
Регистрация: 14.11.2021
Сообщений: 8
|
|
| 14.11.2021, 18:50 [ТС] | |
|
0
|
|
|
Заблокирован
|
||
| 14.11.2021, 18:52 | ||
|
Но сколько нафлудили ....
0
|
||
| 14.11.2021, 18:52 | |
|
Помогаю со студенческими работами здесь
17
Написать программу, которая будет вычислять среднюю температуру за 4 дня
Написать функцию, которая будет вычислять интеграл методом Симпсона вручную Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Ниже машинный перевод статьи The Thinkpad X220 Tablet is the best budget school laptop period .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы,. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|