我尝试学习 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 矩阵,但这是我的问题:斯坦福函数以 [Seq[string] 形式制作 RDD。但是,我有一个错误。我需要使用 [String] 形式的 RDD(而不是 [Seq[string]] 形式)。
val (termDocMatrix, termIds, docIds, idfs) = termDocumentMatrix(lemmatized-text, stopWords, numTerms, sc)
有人知道如何将 [Seq[string]] 转换为 [String]?
或者我需要更改我的一项要求?
谢谢您的帮助。对不起,如果这是一个愚蠢的问题和英语。
再见