gpt4 book ai didi

scala - 如何基于大文本提取字符n-gram

转载 作者:行者123 更新时间:2023-12-01 03:35:51 47 4
gpt4 key购买 nike

给定一个大文本文件,我想使用 Apache Spark 提取字符 n-gram(并行执行任务)。

示例输入(2 行文本):
第 1 行:(Hello World,它)
第 2 行:(是美好的一天)

输出 n-gram:
Hel - ell -llo -lo_ - o_W - _Wo - Wor - orl - rld - ld, - d,_ - ,_i - _it - it_ - t_i - _is - ...等等。所以我希望返回值是一个 RDD[String],每个字符串都包含 n-gram。

请注意,新行被视为输出 n-gram 中的空白。为了清楚起见,我将每一行都放在括号中。另外,要清楚字符串或文本不是 RDD 中的单个条目。我使用 sc.textFile() 方法读取文件。

最佳答案

您可以使用如下函数:

def n_gram(str:String, n:Int) = (str + " ").sliding(n)

我假设在阅读该行时换行符已被剥离,因此我添加了一个空格来弥补这一点。另一方面,如果保留了换行符,则可以将其定义为:
def n_gram(str:String, n:Int) = str.replace('\n', ' ').sliding(n)

使用您的示例:
println(n_gram("Hello World, it", 3).map(_.replace(' ', '_')).mkString(" - "))

会返回:
Hel - ell - llo - lo_ - o_W - _Wo - Wor - orl - rld - ld, - d,_ - ,_i - _it - it_

关于scala - 如何基于大文本提取字符n-gram,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34998952/

47 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com