Как мы извлекаем именованные объекты в scala, используя любую библиотеку nlp - PullRequest
1 голос
/ 10 февраля 2020

У меня огромный текстовый файл, и я должен извлечь из него только именованные объекты. Для этого я использую язык Scala и кластер Databricks.

val input = sc.textFile('....Mypath...').flatMap(line => line.split("""\W+"""))

val namedEnt = something(input)

Может кто-нибудь сказать, что кодировать, чтобы получить именованные объекты?

1 Ответ

1 голос
/ 14 февраля 2020

Если вы конвертируете input в DataFrame (например: .toDF), вы можете получить именованные объекты:

Просто пример установки Spark NLP

spark-shell --packages JohnSnowLabs:spark-nlp:2.4.0

Фактический пример:

import com.johnsnowlabs.nlp.pretrained.PretrainedPipeline
import com.johnsnowlabs.nlp.SparkNLP

SparkNLP.version() 
// make sure you are using the latest release 2.4.x

// Download and load the pre-trained pipeline that has NER in English
// Full list: https://github.com/JohnSnowLabs/spark-nlp-models
val pipeline = PretrainedPipeline("recognize_entities_dl", lang="en")

//Transfrom your DataFrame to a new DataFrame that has NER column
val annotation = pipeline.transform(inputDF)

// This would look something like this:
/*
+---+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+
| id|                text|            document|            sentence|               token|          embeddings|                 ner|       entities|
+---+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+
|  1|Google has announ...|[[document, 0, 10...|[[document, 0, 10...|[[token, 0, 5, Go...|[[word_embeddings...|[[named_entity, 0...|[[chunk, 0, 5, Go...|
|  2|Donald John Trump...|[[document, 0, 92...|[[document, 0, 92...|[[token, 0, 5, Do...|[[word_embeddings...|[[named_entity, 0...|[[chunk, 0, 16, D...|
+---+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+
*/

// This is where the results for entities are:

annotation.select("entities.result").show

Дайте мне знать, если у вас есть какие-либо вопросы или проблемы с вашими входными данными, и я обновлю свой ответ.

Ссылки :

...