Преобразуйте RDD (PySpark / Python), чтобы получить обратно отсортированный POS с наибольшим количеством слов на слова с тегами «Часть речи» (POS) - PullRequest
0 голосов
/ 13 марта 2020

Это Python проблема типа PySparks RDD.

Существует уже настроенная функция с именем pos_count, которая помечает слова с помощью части речи (POS).

text = s c .textFile ('data_files / data.txt') )

countts = text.filter (лямбда-строка: len (строка)> 0) \ .filter (лямбда-строка: re.findall ('^ (?! URL). *', Строка)) \. flatMap (pos_tag_counter) \ .map (лямбда-x: (x [1], x [0])) \ .map (лямбда-слово: ((word [0], word [1]), 1)) \ .reduceByKey ( лямбда x, y: x + y) \ .sortByKey (лямбда x: x [1])

counts.flatMap (лямбда x: x [0: 1]). collect ()

Вывод :

[('CC', 'и'), ('DT', 'a'), ('DT', 'the'), (' IN ',' at '), (' IN ',' for '), (' IN ',' in '), (' IN ',' into '), (' IN ',' of '), (' IN ',' on '), (' JJ ',' apply '), (' JJ ',' всеобъемлющий '), (' JJ ',' критический '), (' JJ ',' michigan '), (' JJ ',' multidisciplinary '), (' JJ ',' new '), (' JJ ',' real '), (' JJR ',' more '), (' NN ',' подхода '), (' NN ',' collection '), (' NN ',' computing '), (' NN ',' computer '), (' NN ',' coursework '), (' NN ',' information '), (' NN ',' понимание '), (' NN ',' проценты », (« NN »,« пересечение »), (« NN »,« список »), (« NN »,« мастер »), (« NN »,« программа »), (« NN »,« s '), («NN», «школа»), («NN», «наука»), («NN», «технология»), («NN», «университет»), («NN», « world '), (' NNS ',' admissions '), (' NNS ',' analytics '), (' NNS ',' data '), (' NNS ',' hands '), (' NNS ',' люди '), («NNS», «проблемы»), («NNS», «проекты»), («NNS», «навыки»), («NNS», «статистика»), («PRP», « мы '), (' PRP ',' вы '), (' PRP $ ',' его '), (' PRP $ ',' наш '), (' RB ',' полностью '), (' TO ' , 'to'), ('VB', 'Develop'), ('VB', 'help'), ('VB', 'join'), ('VB', 'offer'), ('VBD') , 'внедренный'), ('VBG', 'применяющий'), ('VBG', 'использующий'), ('VBN', 'прикладной'), ('VBN', 'довольный'), ('VBP' , «критерии»), («VBP», «фокус»), («VBP», «пригласить»), («VBP», «онлайн»), («VBP», «предоставить»), («VBP») , 'learn'), ('VBZ', 'is')]

Однако это не совсем верно. Есть проблемы с этим выводом.

Мне нужно, чтобы он возвращался к СЧЕТЧИКУ ВЫСОКОГО СЧЕТА для каждого POS типа 'CC' или 'NN' et c. Мне нужен самый высокий счет. Например, «NN» должно быть «NN», «наука», потому что счет «наука» равен 4, что больше, чем другие значения «NN».

См. Ниже более информативный результат, включающий счет , Я попытался уменьшитьByKey (max), но MAX не работает в ReduByKey, потому что я думаю, что счетчик не является основным индексом, и из-за этого MAX не знает, как найти наибольшее значение? Нужно просто посмотреть последнюю запись в списке каждого типа POS.

[('CC', 'and'), 6, ('DT', 'The'), 1, ('DT', 'a'), 2, ('DT', 'the'), 1, ('IN', 'For'), 1, ('IN', 'at'), 1, ('IN', 'in'), 2, ('IN', 'into'), 1, ('IN', 'of'), 3, ('IN', 'on'), 3, (' JJ ',' apply '), 1, (' JJ ',' всеобъемлющий '), 1, (' JJ ',' критический '), 1, (' JJ ',' мультидисциплинарный '), 1, (' JJ ' , 'new'), 1, ('JJ', 'real'), 1, ('JJR', 'more'), 1, ('NN', 'Coursework'), 1, ('NN', ' подход », 1, (« NN »,« сбор »), 1, (« NN »,« вычисление »), 1, (« NN »,« компьютер »), 1, (« NN »,« информация » ), 2, («NN», «понимание»), 1, («NN», «интерес»), 1, («NN», «пересечение»), 1, («NN», «список»), 1, («NN», «мастер»), 1, («NN», «программа»), 2, («NN», «s»), 1, («NN», «наука») , 4, («NN», «технология»), 1, («NN», «мир»), 1, («NNP», «Информация»), 1, («NNP», «Мичиган») ), 1, («NNP», «Школа»), 1, («NNP», «Университет»), 1, («NNS», «прием»), 1, («NNS», «аналитика»), 1, («NNS», «данные»), 4, («NNS», «руки»), 1 , («NNS», «люди»), 1, («NNS», «проблемы»), 1, («NNS», «проекты»), 1, («NNS», «навыки»), 1, ( «NNS», «статистика»), 1, («PRP», «мы»), 2, («PRP», «мы»), 1, («PRP», «вы»), 1, («PRP» $ ',' its '), 1, (' PRP $ ',' our '), 2, (' RB ',' полностью '), 1, (' TO ',' to '), 3, (' VB ',' Develop '), 1, (' VB ',' help '), 1, (' VB ',' join '), 1, (' VB ',' offer '), 1, («VBD», «внедренный»), 1, («VBG», «применяющий»), 1, («VBG», «использующий»), 1, («VBN», «примененный»), 1, (« VBN, «доволен», 1, («VBP», «критерии»), 1, («VBP», «фокус»), 1, («VBP», «пригласить»), 1, («VBP» , «онлайн»), 1, («VBP», «предоставить»), 1, («VBP», «учить»), 1, («VBZ», «есть»), 1]

СПАСИБО за помощь!

...