|
1 / 1 / 0
Регистрация: 04.11.2018
Сообщений: 23
|
|
Оптимизация кода19.09.2021, 20:52. Показов 2096. Ответов 13
Коллеги, здравствуйте! Как можно оптимизировать код, долго что-то выполняется
import math from collections import Counter def read_data(data=True): df = open('war_peace_processed.txt', 'rt').read() if data: return df.split('\n') else: df = df.split('[new chapter]') return [i.split('\n') for i in df] def df_calc(target_word): corpus = read_data(data=False) # corpus number_of_documents_with_target_word = 0 for chapter in corpus: if target_word in chapter: number_of_documents_with_target_word += 1 return number_of_documents_with_target_word / len(corpus) def tf_calc(target_word, target_chapter): corpus = read_data(data=False) # corpus sum_word_in_chapter = 0 n_target_word_in_chapter = len(corpus[target_chapter]) for term in corpus[target_chapter]: if term == target_word: sum_word_in_chapter += 1 return sum_word_in_chapter / n_target_word_in_chapter def tfidf(target_word, target_chapter): tf = tf_calc(target_word, target_chapter) idf = 1 / df_calc(target_word) return math.log(1 + tf) * math.log(idf) def calc_all_tfidf(target_chapter): tfidf_dict = {} corp = read_data(data=False)[target_chapter] for w in corp: tfidf_dict[w] = tfidf(w, target_chapter) res = dict(Counter(tfidf_dict).most_common(5)) ds = {k: v for k, v in sorted(res.items(), key=lambda item: item[1])} return list(ds.keys())[4:1:-1] (edited)
0
|
|
| 19.09.2021, 20:52 | |
|
Ответы с готовыми решениями:
13
Оптимизация кода |
|
132 / 118 / 29
Регистрация: 09.07.2019
Сообщений: 1,071
|
||||||
| 19.09.2021, 21:22 | ||||||
|
Используйте теги оформления кода:
И конкретизируйте свой вопрос: опишите, что должен делать код.
2
|
||||||
|
1 / 1 / 0
Регистрация: 04.11.2018
Сообщений: 23
|
||||||
| 19.09.2021, 21:42 [ТС] | ||||||
0
|
||||||
|
|
||
| 19.09.2021, 21:46 | ||
|
Покажи результат бенчмарков. Нормальных, а не через time.time. Покажи данные на которых выполняется бенчмарк. P.S.И сразу скажи откуда скопипастил код, чтобы у нас не было иллюзий.
0
|
||
|
1 / 1 / 0
Регистрация: 04.11.2018
Сообщений: 23
|
|
| 19.09.2021, 21:51 [ТС] | |
|
Задача выглядит так: напишите код, который выведет на экран через пробел три слова, имеющие самое высокое значение tf*idf в заданной главе target_chapter в порядке убывания tf*idf.
Дело в том, что проверка данного кода выполняется грейдером на платформе SkillFactory, вот этот самый грейдер выдает ошибку: Code error: Exception('Timed out!',) в PyCharm выдается правильный (предложенный) ответ, как ускорить не могу разобраться
0
|
|
|
1956 / 874 / 352
Регистрация: 05.09.2021
Сообщений: 1,387
|
|
| 19.09.2021, 21:53 | |
|
0
|
|
|
1 / 1 / 0
Регистрация: 04.11.2018
Сообщений: 23
|
|
| 19.09.2021, 22:04 [ТС] | |
|
1 мин 20
0
|
|
|
2648 / 1659 / 267
Регистрация: 19.02.2010
Сообщений: 4,392
|
||
| 19.09.2021, 23:12 | ||
|
Не надо и внутри последовательного блока операторов дублировать вычисления. Этому приёму во всех школах учат, в средних классах (на алгебре, когда учат выносить общий множитель за скобки). Конкретно - в calc_all_tfidf() на каждой (!) итерации тамошнего цикла ты дважды (!) открываешь-читаешь-раскладываешь на слова файл. Пройдись по дереву вызовов функций - увидишь.
1
|
||
|
1 / 1 / 0
Регистрация: 04.11.2018
Сообщений: 23
|
|
| 19.09.2021, 23:45 [ТС] | |
|
Подскажи, как исправить
0
|
|
|
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
|
|
| 19.09.2021, 23:50 | |
|
0
|
|
|
1 / 1 / 0
Регистрация: 04.11.2018
Сообщений: 23
|
|
| 19.09.2021, 23:59 [ТС] | |
|
не понятно как реализовать, не все я понимаю в программировании, иногда кажется, что ни чего. Подскажешь?
0
|
|
|
Просто Лис
|
||||||
| 20.09.2021, 07:49 | ||||||
Сообщение было отмечено STV_AL как решение
РешениеНе по теме: переменная df меня чуть не отпугнула и почти заставила закрыть вкладку Ну во-первых закешируй текст.
2
|
||||||
|
1 / 1 / 0
Регистрация: 04.11.2018
Сообщений: 23
|
|
| 20.09.2021, 20:04 [ТС] | |
|
Лис, ты крут!!! Спасибо!!!
0
|
|
|
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
|
|
| 20.09.2021, 20:06 | |
|
0
|
|
| 20.09.2021, 20:06 | |
|
Помогаю со студенческими работами здесь
14
Оптимизация кода Оптимизация кода Оптимизация скорости кода Оптимизация кода по времени Python. Оптимизация кода Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|