Scala 如何使用sparknlp注释文本文件?
我正在使用Sparknlp在databrick中注释一个长文本文件。我的代码如下:Scala 如何使用sparknlp注释文本文件?,scala,nlp,johnsnowlabs-spark-nlp,Scala,Nlp,Johnsnowlabs Spark Nlp,我正在使用Sparknlp在databrick中注释一个长文本文件。我的代码如下: import com.johnsnowlabs.nlp.base._ import com.johnsnowlabs.nlp.annotator._ val lines = sc.textFile("/FileStore/tables/48320_0-3f0d3.txt") import com.johnsnowlabs.nlp.pretrained.PretrainedPipel
import com.johnsnowlabs.nlp.base._
import com.johnsnowlabs.nlp.annotator._
val lines = sc.textFile("/FileStore/tables/48320_0-3f0d3.txt")
import com.johnsnowlabs.nlp.pretrained.PretrainedPipeline
val result = PretrainedPipeline("explain_document_ml").annotate(lines)
command-2722311848879511:1: error: overloaded method value annotate with alternatives:
(target: Array[String])Array[Map[String,Seq[String]]] <and>
(target: String)Map[String,Seq[String]]
cannot be applied to (org.apache.spark.rdd.RDD[String])
val result = PretrainedPipeline("explain_document_ml").annotate(lines)
但是我得到了这样的错误:
import com.johnsnowlabs.nlp.base._
import com.johnsnowlabs.nlp.annotator._
val lines = sc.textFile("/FileStore/tables/48320_0-3f0d3.txt")
import com.johnsnowlabs.nlp.pretrained.PretrainedPipeline
val result = PretrainedPipeline("explain_document_ml").annotate(lines)
command-2722311848879511:1: error: overloaded method value annotate with alternatives:
(target: Array[String])Array[Map[String,Seq[String]]] <and>
(target: String)Map[String,Seq[String]]
cannot be applied to (org.apache.spark.rdd.RDD[String])
val result = PretrainedPipeline("explain_document_ml").annotate(lines)
command-2722311848879511:1:错误:重载方法值用替代项注释:
(目标:数组[String])数组[Map[String,Seq[String]]
(目标:字符串)映射[String,Seq[String]]
无法应用于(org.apache.spark.rdd.rdd[String])
val结果=预训练管道(“解释文件”)。注释(行)
既然annotate可以使用字符串或数组作为参数,为什么我可以使用文本文件作为参数?我应该如何修改我的代码?谢谢 您需要将文本文件转换为数据帧(每行转换为每行,或每句转换为每行),然后使用
.transform
以并行和分布式方式进行转换。注释用于短文本/字符串,而不是整个文件。如果用文本文件的外观更新问题,我可以提供正确的代码将文本文件转换为带注释的数据框。@Maziyar我使用了“不好”的技巧来运行代码val data=lines.flatMap(line=>line.split(“”\W+“”)).collect().mkString(“”.toLowerCase();val结果=预训练管道(“解释文档”)。注释(数据)
。但是,我认为这不是spark中的正确方法。@Maziyar文本文件只是一本电子书(.txt)。这是一个小代码。我认为转换为Dataframe应该是正确的方法。您需要将文本文件转换为Dataframe(每行转换为每行,或每句转换为每行),然后使用.transform
以并行和分布式方式进行转换。注释用于短文本/字符串,而不是整个文件。如果用文本文件的外观更新问题,我可以提供正确的代码将文本文件转换为带注释的数据框。@Maziyar我使用了“不好”的技巧来运行代码val data=lines.flatMap(line=>line.split(“”\W+“”)).collect().mkString(“”.toLowerCase();val结果=预训练管道(“解释文档”)。注释(数据)
。但是,我认为这不是spark中的正确方法。@Maziyar文本文件只是一本电子书(.txt)。这是一个小代码。我认为转换为Dataframe应该是正确的方法。