Я использую com.johnsnowlabs.nlp-2.2.2
с spark-2.4.4 для обработки некоторых статей. В этих статьях есть несколько очень длинных слов, которые меня не интересуют и которые замедляют POS-тэгирование lot . Я хотел бы исключить их после токенизации и перед POSTagging.
Я пытался написать меньший код для воспроизведения моих проблем
import sc.implicits._
val documenter = new DocumentAssembler().setInputCol("text").setOutputCol("document").setIdCol("id")
val tokenizer = new Tokenizer().setInputCols(Array("document")).setOutputCol("token")
val normalizer = new Normalizer().setInputCols("token").setOutputCol("normalized").setLowercase(true)
val df = Seq("This is a very useless/ugly sentence").toDF("text")
val document = documenter.transform(df.withColumn("id", monotonically_increasing_id()))
val token = tokenizer.fit(document).transform(document)
val token_filtered = token
.drop("token")
.join(token
.select(col("id"), col("token"))
.withColumn("tmp", explode(col("token")))
.groupBy("id")
.agg(collect_list(col("tmp")).as("token")),
Seq("id"))
token_filtered.select($"token").show(false)
val normal = normalizer.fit(token_filtered).transform(token_filtered)
У меня возникает эта ошибка при преобразовании token_filtered
+--------------------+---+--------------------+--------------------+--------------------+
| text| id| document| sentence| token|
+--------------------+---+--------------------+--------------------+--------------------+
|This is a very us...| 0|[[document, 0, 35...|[[document, 0, 35...|[[token, 0, 3, Th...|
+--------------------+---+--------------------+--------------------+--------------------+
Exception in thread "main" java.lang.IllegalArgumentException:
requirement failed: Wrong or missing inputCols annotators in NORMALIZER_4bde2f08742a.
Received inputCols: token.
Make sure such annotators exist in your pipeline, with the right output
names and that they have following annotator types: token
Это прекрасно работает, если я непосредственно подгоняю и преобразую token
в normalizer
Кажется, что во время explode
/ groupBy
/ collect_list
некоторая информация теряется, носхема и данные выглядят одинаково.
Есть идеи?