Я пытаюсь изучить scala и, в частности, анализ текста (лемматизация, матрица TF-IDF и LSA).
У меня есть несколько текстов, которые я хочу лемматизировать и сделать классификацию (LSA). Я использую искру на cloudera.
Поэтому я использовал функцию StanfordCore NLP:
def plainTextToLemmas(text: String, stopWords: Set[String]): Seq[String] = {
val props = new Properties()
props.put("annotators", "tokenize, ssplit, pos, lemma")
val pipeline = new StanfordCoreNLP(props)
val doc = new Annotation(text)
pipeline.annotate(doc)
val lemmas = new ArrayBuffer[String]()
val sentences = doc.get(classOf[SentencesAnnotation])
for (sentence <- sentences; token <-sentence.get(classOf[TokensAnnotation])) {
val lemma = token.get(classOf[LemmaAnnotation])
if (lemma.length > 2 && !stopWords.contains(lemma)) {
lemmas += lemma.toLowerCase
}
}
lemmas
}
После этого я пытаюсь создать матрицу TF-IDF, но вот моя проблема: Стэнфордская функция создает RDD в форме [Seq [string]]. Но у меня ошибка. Мне нужно использовать RDD в форме [String] (а не в форме [Seq[string]]).
val (termDocMatrix, termIds, docIds, idfs) = termDocumentMatrix(lemmatized-text, stopWords, numTerms, sc)
Кто-нибудь знает, как преобразовать [Seq[string]] в [String]?
Или мне нужно изменить один из моих запросов?
Спасибо за помощь. Извините, если это глупый вопрос и для английского языка.
до свидания