Я пытаюсь сделать искровое задание, которое классифицирует, разрезая документ на предложения, а затем леммитируя каждое слово в предложении для логистической регрессии. Тем не менее, я нахожу, что класс аннотаций Стэнфорд вызывает серьезную проблему в моей искровой работе (это занимает 20 минут, чтобы обрабатывать только 500k документов)coreNLP значительно замедляет работу искры
Вот код, который я сейчас использую для предложения анализа и классификаций
Предложение синтаксического анализа:
def prepSentences(text: String): List[CoreMap] = {
val mod = text.replace("Sr.", "Sr") // deals with an edge case
val doc = new Annotation(mod)
pipeHolder.get.annotate(doc)
val sentences = doc.get(classOf[SentencesAnnotation]).toList
sentences
}
Я тогда принимать каждый coremap и обрабатывать леммы следующим
def coreMapToLemmas(map:CoreMap):Seq[String] = {
map.get(classOf[TokensAnnotation]).par.foldLeft(Seq[String]())(
(a, b) => {
val lemma = b.get(classOf[LemmaAnnotation])
if (!(stopWords.contains(b.lemma().toLowerCase) || puncWords.contains(b.originalText())))
a :+ lemma.toLowerCase
else a
}
)
}
Пожалуй т вот класс, который включает только часть обработки?
Какие аннотации вы используете? Похоже, все, что вам нужно, это лемы, а это значит, что вам нужно запустить «tokenize, ssplit, pos, lemma». –