Предположим, для простоты у меня есть этот небольшой корпус, состоящий всего из двух строк.
'This is first'
'This is second'
Чтобы использовать его в моем искровом методе ReduceByKey, мне нужно иметь следующий вывод:
[((u'This', u'is'), 1), ((u'is', u'first.'), 1), ((u'This', u'is'), 1), ((u'is', u'second.'), 1)]
но с кодом, который я написал ниже, я взял следующий формат (больше списков).Убедитесь, что мое решение по желанию находится внутри одного «списка», но вывод, который я получаю, имеет больше (в зависимости от количества слов в предложении)
[[((u'This', u'is'), 1), ((u'This', u'first.'), 1)], [((u'is', u'first.'), 1)], [((u'This', u'is'), 1), ((u'This', u'second.'), 1)], [((u'is', u'second.'), 1)]]
Как изменить это, чтобы получить то, что я хочу.
couples = lines.map(lambda s : s.split(" ")).flatMap(lambda s: [[((s[i],s[j]), 1) for j in range(i+1 , len(s))] for i in range(len(s)-1) ])
Если кто-то не знает pyspark, но хороший python, я хочу изменить эту часть:
lambda s: [[((s[i],s[j]), 1) for j in range(i+1 , len(s))] for i in range(len(s)-1) ]
Заранее спасибо