将元数据添加到Stanford coreNLP输入中



我有一个庞大的句子语料库(约1.1M(要通过Stanford Core NLP进行解析,但在输出中我得到的句子比输入中更多,系统可能会将给定分段之外的一些句子分段成行。

为了控制所发生的事情,我希望包括";标签";输入。这些标记在输出中应该是可识别的,并且不应该影响解析。

类似的东西

<0001>
I saw a man with a telescope .
</0001>

#0001#
I saw a man with a telescope .
#/0001#

我已经尝试了许多格式,在所有情况下;标签";已将其解析为文本的一部分。

是否有某种方法可以告诉解析器";不要解析它,只需在输出中保持原样即可;?

===几个小时后===

由于我没有得到答案,这里有一个例子:我想处理带有151_0_4标签的句子"Manon espérait secrètement y revoir un garçon qui l’avait marquée autrefois"。我想象着在一行上的两行等号之间写一个标签,后面跟着一个句点,以确保标签在最坏的情况下会被处理为一个单独的句子:

=====151_0_4======.
Manon espérait secrètement y revoir un garçon qui l'avait marquée autrefois.
=====151_0_4======.

这产生了什么:

(ROOT (SENT (NP (SYM =)) (NP (SYM =) (PP (SYM =) (NP (SYM =) (PP (SYM =) (NP (NUM 151_0_4) (SYM =) (SYM =) (NP (SYM =) (PP (SYM =) (NP (SYM =) (SYM =))))))))) (PUNCT .)))

正如你所看到的,标签肯定被认为是句子的一部分,没有办法将它们与句子分开

类似XML的标记<x151_0_4>或使用哈希字符的标记也发生了同样的情况。。。

如果您的当前数据严格地是每行一句话,那么到目前为止,最简单的方法就是保持原样,并提供选项-ssplit.eolonly=true

不幸的是,在不尝试解析或处理某些类型的元数据或分隔符的情况下,无法选择传递它们。但是,您可以通过ssplit.boundaryTokenRegexssplit.boundaryMultiTokenRegex属性指示它们不应成为其他句子的一部分。然而,你的选择是要么删除它们(见ssplit.tokenPatternsToDiscard(,要么将它们处理为奇怪的句子,然后你需要清理它们。

最新更新