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

艾尔·詹森

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

输入示例(两行文字):第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()方法读取文件。

马里奥斯

主要思想是将每个分区内的所有行合并为一个长字符串。接下来,我们将“”替换为“ _”,并在此字符串上调用slide以并行为每个分区创建三元组。

注意:产生的三字母组可能不是100%准确的,因为我们将从每个分区的开始和结尾错过一些三字组。由于每个分区的长度可以达到几百万个字符,因此保证的损失应该可以忽略不计。这里的主要好处是每个分区可以并行执行。

这是一些玩具数据。以下所有内容均可在任何Spark REPL上执行:

scala> val data = sc.parallelize(Seq("Hello World, it","is a nice day"))
data: org.apache.spark.rdd.RDD[String] = ParallelCollectionRDD[12] 

val trigrams = data.mapPartitions(_.toList.mkString(" ").replace(" ","_").sliding(3))
trigrams: org.apache.spark.rdd.RDD[String] = MapPartitionsRDD[14]

在这里,我将收集trigram,以显示它们的外观(如果数据集很大,则可能不希望这样做)

scala> val asCollected = trigrams.collect
asCollected: Array[String] = Array(Hel, ell, llo, lo_, o_W, _Wo, Wor, orl, rld, ld,, d,_, ,_i, _it, is_, s_a, _a_, a_n, _ni, nic, ice, ce_, e_d, _da, day)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

R如何提取基于n-gram的行

来自分类Dev

什么是 N-gram?

来自分类Dev

加快n-gram处理

来自分类Dev

快速实现单词的字符n-gram

来自分类Dev

R中的“字符包” n-gram

来自分类Dev

zip(*)如何生成n-gram?

来自分类Dev

python为n-gram优化count()

来自分类Dev

在球拍中用折叠产生n-gram

来自分类Dev

构建用于标记级别文本分类的n-gram

来自分类Dev

CFG和Google n-gram如何结合以生成句子

来自分类Dev

如何使POS n-gram更有效?

来自分类Dev

如何在arff文件中表示n-gram特征?

来自分类Dev

Python将n-gram从字典匹配到文本字符串

来自分类Dev

在python中快速/优化N-gram实现

来自分类Dev

python的TfidfVectorizer中n-gram的令牌模式

来自分类Dev

从n-gram集合中得出所有可能的序列

来自分类Dev

比较n-gram以将重复项分组

来自分类Dev

在python中快速/优化N-gram实现

来自分类Dev

CoreNLP API,用于带有位置的N-gram

来自分类Dev

MySQL 单列 n-gram 拆分和计数

来自分类Dev

为 fastText 设置 char n-gram 的最大长度

来自分类Dev

spring-boot ElasticSearch 中的 n-gram 实现

来自分类Dev

如何将文本拆分为N-gram并获取它们的偏移量

来自分类Dev

如何创建具有字符 n-gram 特征的 tf-idf 矩阵?

来自分类Dev

如何基于gram-matrix在python中实现从距离矩阵中查找点的坐标?

来自分类Dev

Python - 如何将 n-gram CountVectorizer 转换为带有列提取转换器的管道

来自分类Dev

N-gram与文本分类中的其他分类器

来自分类Dev

一个shell命令来查找文本中的每个n-gram

来自分类Dev

将n-gram合并或反转为单个字符串