2015-06-27 21 views
0

我想用openNLP提取名詞短語。我有下面的Scala代碼。如何在Scala中使用OpenNLP提取名詞?

object ParserTest1 extends Serializable { 

    def apply(line: String): (String) = { 
    val is = new FileInputStream("/home/akshat/en-parser-chunking.bin") 
    val model = new ParserModel(is) 
    val parser = ParserFactory.create(model) 
    var nounPhrases = "" 
    val topParses = ParserTool.parseLine(line, parser, 1) 
    for (p <- topParses) { 
    getNounPhrases(p) 
    } 
    def getNounPhrases(p: Parse) { 
    if (p.getType == "NN" || p.getType == "NNS" || p.getType == "NNP" || 
     p.getType == "NNPS") { 
     nounPhrases += p.getCoveredText + " " 
    }  

    for (child <- p.getChildren) { 
     getNounPhrases(child) 
    } 
} 
(nounPhrases) 
} 
} 

我的代碼工作正常,但我只提取來自行前兩個名詞和停止尋找後,其他的名詞,基本上找到第一個兩個名詞後停止循環。 應該在代碼中做些什麼改變?

回答

0

創建一個計數器來跟蹤您找到名詞的次數,並在計數器達到2時停止循環。