В Pyspark, как проверить, начинаются ли последовательные слова в текстовом файле с того же алфавита? - PullRequest
0 голосов
/ 11 марта 2020

У меня есть следующий текст в файле:

Horrid Henry’s hound hunts in the massive Murree mountains. While silly stupid Samuel’s dark dreadful dragon likes to hunt in
skies.
Horrid Henry’s hound and Samuel’s dreadful dragon Dany are fast friends and like to hunt and play together. They call themselves
fantastic fanciful foursome.

Я загружаю этот файл и flatMap его следующим образом:

lines=sc.textFile("BigData test.txt")
RddWords=lines.flatMap(lambda line: line.split(" "))

Это преобразует его в список строк ( Каждое слово является строкой). Я хочу проверить, начинаются ли три последовательных слова с одного алфавита. Ожидаемый результат будет следующим:

H => 3
M=> 1
S => 1
D => 1
F => 1 

Вхождение последовательных слов, начинающихся с 'H', происходит 3 раза. Точно так же вхождение последовательных слов, начинающихся с «М», происходит только один раз. Ниже показано подробное вхождение этих последовательных слов.

Horrid Henry’s hound =>2
Henry’s hound hunts => 1
massive Murree mountains =>1
silly stupid Samuel’s =>1
dreadful dragon Dany=>1
fantastic fanciful foursome =>1

Я могу написать python функцию, которая просто проверяет наличие трех последовательных слов в цепочке слов. Но я не могу придумать, как реализовать эту функцию на распараллеленном Rdd с именем RddWords. Если я напишу функцию карты, она будет реализована отдельно для каждого x в Rdd RddWords. Как я буду работать над последовательными словами? Может кто-нибудь немного меня наставить? Большое спасибо

1 Ответ

1 голос
/ 11 марта 2020

Решение 1

Вам понадобится каждая строка в виде скользящей триграммы:

(word0, word1, word2)
(word1, word2, word3)
...

, а затем отобразить функцию f, которая извлекает необходимая информация.

Решение 2

Используйте API-интерфейс Dataframe и примените функцию скользящего окна с длиной 3

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