Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #KR3 V3 N3
- #3) Самые частовстречаемые слова в названиях фильмов в начале названия, в конце и в середине
- import dask.array as da
- import dask.bag as db
- import dask.dataframe as dd
- import json
- import os
- from os.path import join
- import re
- import operator as op
- import h5py
- import numpy as np
- from collections import Counter
- from dask import delayed
- import dask
- def z31(txt):#для параллельного расчёта по строкам
- m=re.findall(r"\b([^ !,.]+)\b",txt)
- m=[i.lower() for i in m]
- if len(m)==1:
- r= [[m[0]],[],[]]
- elif len(m)==2:
- r= [[m[0]],[m[-1]],[]]
- else:
- r= [[m[0]],[m[-1]],m[1:-1]]
- if len(m)>1:#если последнее слово такое же, как первое, его не считаем (по заданию)
- if r[0][0]==r[1][0]:
- r[1]=[]
- return r
- r1=[]
- with open("movies.txt") as f:
- for i in f:
- r1.append(delayed(z31)(i))
- r1=dask.compute(*r1)
- def z32(spisok,n):#для параллельного расчёта по столбцам после расчёта по строкам
- tk=Counter()
- for i in spisok:
- tk+=Counter(i[n])#складываем счётчики
- return tk.most_common(2)#вычисляем два самых популярных значения
- r2=[]
- for i in range(3):
- r2.append(delayed(z32)(r1,i))
- rez=[]
- for i in r2:
- i=i.compute()
- rez.append(i[0])
- rez.append(i[1])
- print("Слова и количество:")
- print("В начале названия:")
- print(r2[0].compute())
- print("В конце названия:")
- print(r2[1].compute())
- print("В середине названия:")
- print(r2[2].compute())
- print()
- print(sorted(rez,key=lambda x:x[1],reverse=True))
- print("Ответ:")
- print([i[0] for i in rez])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement