在我的应用程序中,我使用stanford NLP运行nlp作业。 stanford解析模型打包在jar中,并作为UDF进行修改,我使用sqlContext.sql来使用它。但我觉得它运行得这么慢。有人可以帮助我加快速度吗?
代码如下:
sqlContext.sql("CREATE TEMPORARY FUNCTION segmenter AS 'cn.com.datamesh.stanford.nlp.StanfordNlp'").collect()
sqlContext.sql("SELECT segmenter(text) FROM twitter_data")
答案 0 :(得分:0)
您可以试用Spark的Stanford CoreNLP包装器。它应该简化使用,并希望加快您的代码。这是git page,其中还包括可用的命令。如此short installation guide所示,您可以使用以下命令直接将语言模型附加到Spark上下文:
val version = "3.6.0"
val model = s"stanford-corenlp-$version-models" // append "-english" to use the full English model
val jars = sc.asInstanceOf[{def addedJars: scala.collection.mutable.Map[String, Long]}].addedJars.keys // use sc.listJars in Spark 2.0
if (!jars.exists(jar => jar.contains(model))) {
import scala.sys.process._
s"wget http://repo1.maven.org/maven2/edu/stanford/nlp/stanford-corenlp/$version/$model.jar -O /tmp/$model.jar".!!
sc.addJar(s"/tmp/$model.jar")
}
对于支持的型号,您可以看到CoreNLP网站。