Проблемы, показывающие различные представления слова - PullRequest
0 голосов
/ 02 марта 2020

Я делаю подсчет слов в PySpark, где одна из задач, которые мне нужно решить, - показать все представления одного слова (например, apple, Apple, aPPLe и т. Д. c.)

* 1002. * В настоящее время мой код показывает только версию слова в нижнем регистре, но он учитывает все представления. Я знаю, что это потому, что в начале я поместил все слова в текстовом файле в нижний регистр, но я не уверен, как его изменить, чтобы мои wordReps показывали все представления.
hussle = sc.textFile("SOME_TEXT_FILE")

def removePunc(x):
    bars = x.encode('utf-8')
    lowerBars = bars.lower()
    cleanBars = lowerBars.translate(None, string.punctuation)
    return cleanBars

words = hussle.flatMap(lambda x: removePunc(x).split())

total_words = words.count()

wordCount = words.map(lambda x: (x,1)).reduceByKey(lambda x,y: x + y).map(lambda x:(x[0],x[1],x[1]/float(total_words))).sortByKey(False)
wordReps = words.map(lambda word: (word.lower(), word)).reduceByKey(lambda word1, word2: word1 + " " + word2 if word2 not in word1 else word1)
wordsFinal = wordCount.join(wordReps)

Мой ожидаемый результат должен быть примерно таким:

'all' (4, 'all All aLL')

, а я получаю:

'all' (4, 'all')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...