【问题标题】:Stanford NLP returns : instead of NNP斯坦福 NLP 返回:而不是 NNP
【发布时间】:2016-07-01 04:35:00
【问题描述】:

我正在使用 Stanford NLP Parser (http://sergey-tihon.github.io/Stanford.NLP.NET/StanfordParser.html) 来分析句子。

问题是库的结果和在线演示页面的结果存在差异(http://nlp.stanford.edu:8080/parser/index.jsp

问题在于下面这句话:

舞台。另外,他

当我在线运行时,这是我得到的输出:

(ROOT(NP(DT))(NN阶段)(..)))

(根 (NP (NP(NNP加)) (, ,) (NP (PRP he))))

请注意Plus 被标识为NNP

问题是同一个句子被lib处理时产生的输出略有不同:

{(ROOT(FRAG(FRAG(NP(DT))(NN阶段))(..))(:Plus)(FRAG(, ,) (NP (PRP he)))))}

如您所见,Plus现在被标识为:

如何强制库返回 NNP?

代码如下:

      var sent = "the stage. Plus, he";
      var lp = LexicalizedParser.loadModel(modelsDirectory + @"\lexparser\englishPCFG.ser.gz");
      var f = PTBTokenizer.factory(new CoreLabelTokenFactory(), "");
      var s = new java.io.StringReader(sent);
      var w = f.getTokenizer(s).tokenize();
      s.close();
      var t = lp.apply(w);

【问题讨论】:

    标签: stanford-nlp


    【解决方案1】:

    您是否在空格(tokenize.whitespace 属性)上进行标记?在你的第二个例子中,图书馆似乎没有将段落分成两个句子,这会产生不同的解析。

    此外,更广泛地说,您想在这里做什么?这些是非常不合语法的句子,解析几乎没有意义(并且解析器几乎肯定会搞砸),并且“Plus”上的 NNP 标记也是一个错误。

    【讨论】:

    • 'Plus' 上的 NNP 标签是错误的?
    • 嗯,我不清楚这句话的语义到底是什么。但 NNP 是专有名词,Plus 似乎更像是一个连接词 (CC) 而不是专有名词。
    • 我只是一个开发者,我不知道他们为什么要这个。我的工作是使这一点保持一致和正确。
    • 不确定我使用什么标记器,添加了代码。谢谢!
    • 也许可以试试simple API?用一些文本创建一个新的Document,在上面调用.sentences(),然后在每个句子上调用.parse()
    猜你喜欢
    • 2014-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-30
    • 2014-04-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多