我想阅读一个相当大的文档并从中提取N-gram(N个单词的连续序列)。我还想按频率的升序排序。虽然我知道这是字数的延伸,但我不知道如何在Pyspark中这样做。任何帮助表示赞赏。
答案 0 :(得分:0)
atg@lynntools01$ uname -a
SunOS lynntools01 5.10 Generic_150400-30 sun4v sparc sun4v
这种方法的局限性与通常几乎相同 - 它是逐行操作的,因此如果文档跨越多行,您将无法获得跨越线边界的n-gram。
可以通过跟踪行号和位置或使用from toolz.curried import sliding_window
from operator import add, itemgetter
rdd = sc.textFile("README.md")
tokens = rdd.map(str.split)
counts = (tokens
.flatMap(sliding_window(3))
.map(lambda x: (x, 1))
.reduceByKey(add))
counts.top(3, key=itemgetter(1))
## [(('command,', 'which', 'should'), 2),
## (('on', 'how', 'to'), 2),
## (('Please', 'refer', 'to'), 2)]
来纠正错误。