如何在Scala中使用OpenNLP提取名词?

时间:2015-06-27 21:30:39

标签: scala nlp text-mining opennlp

我想使用openNLP提取名词短语。我有以下Scala代码。

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)
}
}

我的代码工作正常但是我必须从行中提取前两个名词并在此之后停止寻找其他名词,基本上在找到前两个名词后停止循环。 应该在代码中做出哪些更改?

1 个答案:

答案 0 :(得分:0)

创建一个计数器来跟踪你找到名词的次数,并在计数器达到2时停止循环。