Advertisement
Guest User

Untitled

a guest
Jan 21st, 2020
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.89 KB | None | 0 0
  1. #KR3 V3 N3
  2. #3) Самые частовстречаемые слова в названиях фильмов в начале названия, в конце и в середине
  3. import dask.array as da
  4. import dask.bag as db
  5. import dask.dataframe as dd
  6. import json
  7. import os
  8. from os.path import join
  9. import re
  10. import operator as op
  11. import h5py
  12. import numpy as np
  13. from collections import Counter
  14. from dask import delayed
  15. import dask
  16. def z31(txt):#для параллельного расчёта по строкам
  17.     m=re.findall(r"\b([^ !,.]+)\b",txt)
  18.     m=[i.lower() for i in m]
  19.     if len(m)==1:
  20.         r= [[m[0]],[],[]]
  21.     elif len(m)==2:
  22.         r= [[m[0]],[m[-1]],[]]
  23.     else:
  24.         r= [[m[0]],[m[-1]],m[1:-1]]
  25.     if len(m)>1:#если последнее слово такое же, как первое, его не считаем (по заданию)
  26.         if r[0][0]==r[1][0]:
  27.             r[1]=[]
  28.     return r
  29. r1=[]
  30. with open("movies.txt") as f:
  31.     for i in f:
  32.         r1.append(delayed(z31)(i))
  33.     r1=dask.compute(*r1)
  34. def z32(spisok,n):#для параллельного расчёта по столбцам после расчёта по строкам
  35.     tk=Counter()
  36.     for i in spisok:
  37.         tk+=Counter(i[n])#складываем счётчики
  38.     return tk.most_common(2)#вычисляем два самых популярных значения
  39. r2=[]
  40. for i in range(3):
  41.     r2.append(delayed(z32)(r1,i))
  42. rez=[]
  43. for i in r2:
  44.     i=i.compute()
  45.     rez.append(i[0])
  46.     rez.append(i[1])
  47. print("Слова и количество:")
  48. print("В начале названия:")
  49. print(r2[0].compute())
  50. print("В конце названия:")
  51. print(r2[1].compute())
  52. print("В середине названия:")
  53. print(r2[2].compute())
  54. print()
  55. print(sorted(rez,key=lambda x:x[1],reverse=True))
  56. print("Ответ:")
  57. print([i[0] for i in rez])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement