Я пытаюсь собрать в PySpark программу подсчета биграмм, которая берет текстовый файл и выводит частоту каждого правильного биграмма (два последовательных слова в предложении).
from pyspark.ml.feature import NGram
with use_spark_session("Bigrams") as spark:
text_file = spark.sparkContext.textFile(text_path)
sentences = text_file.flatMap(lambda line: line.split(".")) \
.filter(lambda line: len(line) > 0) \
.map(lambda line: (0, line.strip().split(" ")))
sentences_df = sentences.toDF(schema=["id", "words"])
ngram_df = NGram(n=2, inputCol="words", outputCol="bigrams").transform(sentences_df)
ngram_df.select("bigrams")
сейчассодержит:
+--------------------+
| bigrams|
+--------------------+
|[April is, is the...|
|[It is, is one, o...|
|[April always, al...|
|[April always, al...|
|[April's flowers,...|
|[Its birthstone, ...|
|[The meaning, mea...|
|[April comes, com...|
|[It also, also co...|
|[April begins, be...|
|[April ends, ends...|
|[In common, commo...|
|[In common, commo...|
|[In common, commo...|
|[In years, years ...|
|[In years, years ...|
+--------------------+
Таким образом, есть список биграмм для каждого предложения.Теперь необходимо подсчитать различные биграммы.Как?Кроме того, весь код кажется излишне многословным, поэтому я был бы рад видеть более сжатые решения.