【问题标题】:Is it possible to get better results for parsing imperative sentences with StanfordNLP?使用 StanfordNLP 解析命令式句子是否可以获得更好的结果?
【发布时间】:2019-07-08 07:28:38
【问题描述】:

我想在句子结构中找到模式。因此,我试图将解析树作为预处理。

到目前为止,我使用的是 Stanford CoreNLPParser。 我的很多句子都是祈使句。 在收到比预期更多的集群后,我查看了解析树,发现我的祈使句开头的动词经常被解析为名词短语 (NP)。

我找到了以下答案:https://stackoverflow.com/a/35887762/6068675

由于这个答案来自 2016 年,我希望可能有另一种选择来获得更好的结果。 句子中的每个第一个单词只小写看起来不是一个理想的解决方案。

我列举了几个解析错误的例子:

(ROOT (S (S (NP (NNP View)) (NP (NP (DT a) (NN list)) (PP (IN of) (NP (JJ ongoing) (NNS sales) (NNS quotes))) (PP (IN for) (NP (DT the) (NN customer))))) (. .)))

(ROOT (NP (NP (NN Request) (NN approval) (S (VP (TO to) (VP (VB change) (NP (DT the) (NN record)))))) (. .)))

更多示例

(ROOT (NP (NP (NNP View)) (CC or) (VP (VB change) (NP (NP (JJ detailed) (NN information)) (PP (IN about) (NP (DT the) (NN customer))))) (. .)))
(ROOT (FRAG (PP (IN Post) (NP (DT the) (VBN specified) (NN prepayment) (NN information))) (. .)))
(ROOT (S (S (NP (NNP View)) (NP (NP (DT a) (NN summary)) (PP (IN of) (NP (DT the) (NN debit) (CC and) (NN credit) (NNS balances))) (PP (IN for) (NP (JJ different) (NN time) (NNS periods))))) (. .)))
(ROOT (NP (NP (NP (NN Offer) (NNS items)) (CC or) (NP (NP (NNS services)) (PP (TO to) (NP (DT a) (NN customer))))) (. .)))
(ROOT (NP (NP (NP (NNP View)) (CC or) (VP (VB add) (NP (NP (NNS comments)) (PP (IN for) (NP (DT the) (NN record)))))) (. .)))

【问题讨论】:

  • 工具推荐问题在这里是题外话,但也许可以试试 Spacy?
  • 好的。我试着改写我的问题。我想让我的命令句被正确解析。如您所见,视图未解析为动词短语。
  • 您能否提供更多有关命令式解析问题的示例。
  • 我添加了一些解析问题的示例。主要是任何以 View 开头的句子。小写不会改善我的解析结果。
  • 你尝试过 BERT 吗?

标签: python stanford-nlp parse-tree


【解决方案1】:

我查看了您的示例,似乎解析器将命令中的第一个单词分类为名词 (NN) 或专有名词 (NNP)。我认为这是因为第一个单词的开头出现了大写字母(专有名词以大写字母开头)。本质上,解析器并没有“了解到”英语中的每个句子都以大写字母开头,并且开头的大写字母没有提供有关词性的信息。

当然,解决这个问题的长期解决方案是,解析器应该在其他文本上进行命令式训练,但是对于这个问题也有一个短期的 hack:因为问题在于大写字母,我们可以使用Python 中的.lower() String 函数(或其他编程语言中的任何其他相应函数)在解析之前将字符串预处理为小写。

我自己用你的例子试过这个,现在解析器正确地将你句子的开头分类为动词短语。

注意::上述技巧可能会导致专有名词分类错误,因为它们不再有大写字母。只要你不使用解析器来检测专有名词和命令式,你应该没问题

【讨论】:

    【解决方案2】:

    不幸的是,词性标注器多年前就在华尔街日报上接受过培训。因此,有些问题是命令式语句不在训练数据中。所以它有时会猜错。但在某些命令式语句中,它也做了正确的事情。我认为如果第一个词是一个明确的动词,如“呼叫”,你会得到更好的表现。

    我看到的另一个问题是动词“文本”(如发送短信)没有得到很好的处理。

    我认为我们会很高兴添加一些当代数据并添加一些必要的训练数据来提供帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-22
      • 1970-01-01
      • 2018-09-18
      • 2018-07-19
      • 2019-05-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多