Как подсчитать количество слов в строке с помощью Python PySpark MapReduce - PullRequest
0 голосов
/ 20 октября 2019

Я пытаюсь реализовать подсчет слов, используя MapReduce PySpark. Я хотел бы посчитать, сколько раз пара слов появляется в строке текста.

Например, если бы у меня было предложение: черная собака преследовала черный шар.

Вывод может быть ('a', 'black'): 2, потому что 'black' встречается дважды в строке с 'a'.

У меня есть следующий код, который подсчитывает количество раз, когда одно словопроисходит, но я борюсь с тем, как считать в парах:

text_file = sc.textFile("filepath")
import re, string
string.punctuation
punc = '!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'
  def uni_to_clean_str(x):
  converted = x.encode('utf-8')
  lowercased_str = converted.lower()
  lowercased_str = lowercased_str.replace('--',' ')
  clean_str = lowercased_str.translate(None, punc)
  return clean_str
one_RDD = text_file.flatMap(lambda x:uni_to_clean_str(x).split())
one_RDD = one_RDD.map(lambda x: (x,1))
one_RDD = one_RDD.reduceByKey(lambda x,y: x + y)    
one_RDD.saveAsTextFile("filepath")

Если бы я использовал пример предложения, это вернуло бы: ('a', 1) и т. д.

Любая помощь будет принята с благодарностью. Большое спасибо!

...