|
1 / 1 / 0
Регистрация: 04.11.2018
Сообщений: 23
|
|
Оптимизация кода19.09.2021, 20:52. Показов 2047. Ответов 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
|
|
|
2625 / 1636 / 266
Регистрация: 19.02.2010
Сообщений: 4,348
|
||
| 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. Оптимизация кода Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes.
А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения
развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам
Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
|
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|