Stanford Parser:如何包含标点符号?

时间:2015-12-08 00:11:49

标签: parsing nlp stanford-nlp

我使用Stanford Parser来解析我的一些已经标记化和POS标记(由Stanford POS标记器和Gate Twitter模型)。但由此产生的 conll 2007 格式化输出不包含任何标点符号。那是为什么?

我用过的命令:

java -mx16g -cp "*" edu.stanford.nlp.parser.lexparser.LexicalizedParser -sentences newline -tokenized -tagSeparator § -tokenizerFactory edu.stanford.nlp.process.WhitespaceTokenizer -tokenizerMethod newCoreLabelTokenizerFactory -escaper edu.stanford.nlp.process.PTBEscapingProcessor -outputFormat conll2007 edu/stanford/nlp/models/lexparser/englishPCFG.caseless.ser.gz ..test.tagged > ../test.conll

e.g。

原始推文:

bbc sp says they don't understand why the tories aren't 8% ahead in the polls given the current economics stats ; bbc bias ? surely not ?

POS标记的推文,用作斯坦福解析器的输入:

bbc§NN sp§NN says§VBZ they§PRP don't§VBP understand§VB why§WRB the§DT tories§NNS aren't§VBZ 8%§CD ahead§RB in§IN the§DT polls§NNS given§VBN the§DT current§JJ economics§NNS stats§NNS ;§: bbc§NN bias§NN ?§. surely§RB not§RB ?§.

结果conll 2007格式化解析:

1   bbc _   NN  NN  _   2   compound    _   _
2   sp  _   NN  NN  _   3   nsubj   _   _
3   says    _   VBZ VBZ _   0   root    _   _
4   they    _   PRP PRP _   5   nsubj   _   _
5   don't   _   VBP VBP _   3   ccomp   _   _
6   understand  _   VB  VB  _   5   xcomp   _   _
7   why _   WRB WRB _   10  advmod  _   _
8   the _   DT  DT  _   9   det _   _
9   tories  _   NNS NNS _   10  nsubj   _   _
10  aren't  _   VBZ VBZ _   6   ccomp   _   _
11  8%  _   CD  CD  _   12  nmod:npmod  _   _
12  ahead   _   RB  RB  _   15  advmod  _   _
13  in  _   IN  IN  _   15  case    _   _
14  the _   DT  DT  _   15  det _   _
15  polls   _   NNS NNS _   10  nmod    _   _
16  given   _   VBN VBN _   15  acl _   _
17  the _   DT  DT  _   19  det _   _
18  current _   JJ  JJ  _   19  amod    _   _
19  economics   _   NNS NNS _   16  dobj    _   _
20  stats   _   NNS NNS _   19  dep _   _
22  bbc _   NN  NN  _   23  compound    _   _
23  bias    _   NN  NN  _   20  dep _   _
25  surely  _   RB  RB  _   26  advmod  _   _
26  not _   RB  RB  _   16  neg _   _

正如您所看到的,大多数标点符号都不包含在解析中。但为什么呢?

2 个答案:

答案 0 :(得分:1)

我想添加" -parse.keepPunct"你的命令将解决这个问题。如果这不起作用,请告诉我。

答案 1 :(得分:1)

最后,找到答案,使用

$ids=['one','two','three','two','four'];
echo('<pre>'.print_r($ids,1).'</pre>');
$ids = array_unique($ids);
echo('<pre>'.print_r($ids,1).'</pre>');

很久以前已经联系了Stanford解析器和corenlp支持,根本没有回复