Discrepancy tokensregex webserver and CoreNLP in Python?

xfb7svmp  于 2个月前  发布在  Python
关注(0)|答案(7)|浏览(51)

让我们来看一下以下句子:organic wastes under variable temperature conditions,以及模式:[{tag:/JJ/}]*[{tag:/NN.*/}]+。当我们将这个传递给http://corenlp.run/时:

然后在Python中执行这个操作:

with CoreNLPClient(memory='16G', threads=1, annotators=['tokenize','ssplit','pos','lemma','ner','depparse']) as client:
    text = 'organic wastes under variable temperature conditions'
    print(client.tokensregex(text, '[{tag:/JJ/}]*[{tag:/NN.*/}]+'))

它将输出:{'sentences': [{'0': {'text': 'organic wastes', 'begin': 0, 'end': 2}, '1': {'text': 'variable temperature', 'begin': 3, 'end': 5}, '2': {'text': 'conditions', 'begin': 5, 'end': 6}, 'length': 3}]}。请注意,网络服务器找到了"可变温度条件",而在Python中我们只找到了"可变温度"和"条件"作为单独的匹配项。我需要与网络服务器相同的输出。

baubqpgj

baubqpgj1#

在检查web服务器的请求头时,我注意到它在最后一个+之前添加了一个a \,因此模式应该是[{tag:/JJ/}]*[{tag:/NN.*/}]\+

daolsyd0

daolsyd02#

我不确定这个是否应该被关闭。你没有期望API为你进行转义吗?也许我们应该在stanza客户端中修复这个问题。

uxhixvfz

uxhixvfz3#

是的,我确实期望能够从corenlp.run中复制一个正则表达式并获得相同的结果(因此也获得相同的解析)。

ki1q1bka

ki1q1bka4#

我注意到,在web服务器上输入转义的正则表达式时,例如 [{tag:/JJ/}]*[{tag:/NN.*/}]\+ ,会抛出 java.lang.RuntimeException: Error when parsing [{tag:/JJ/}]*[{tag:/NN.*/}]\+ 。这使得测试正则表达式变得更加困难,因为在web服务器上测试转义的正则表达式似乎是不正确的,但在代码中是正确的;而在web服务器上非转义的正则表达式似乎是正确的,但在代码中却不正确。

idv4meu8

idv4meu85#

起初我认为这是在诗节方面的问题,但后来我发现这是一个与Java代码相关的问题。结果是,尽管我已经修复了这个问题,但修复并没有被纳入目前正在构建的4.1.0版本中。不过,它将在下一个版本或GitHub上提供。

相关问题