让我们来看一下以下句子: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中我们只找到了"可变温度"和"条件"作为单独的匹配项。我需要与网络服务器相同的输出。
7条答案
按热度按时间baubqpgj1#
在检查web服务器的请求头时,我注意到它在最后一个
+
之前添加了一个a\
,因此模式应该是[{tag:/JJ/}]*[{tag:/NN.*/}]\+
。daolsyd02#
我不确定这个是否应该被关闭。你没有期望API为你进行转义吗?也许我们应该在stanza客户端中修复这个问题。
uxhixvfz3#
是的,我确实期望能够从corenlp.run中复制一个正则表达式并获得相同的结果(因此也获得相同的解析)。
ki1q1bka4#
我注意到,在web服务器上输入转义的正则表达式时,例如
[{tag:/JJ/}]*[{tag:/NN.*/}]\+
,会抛出java.lang.RuntimeException: Error when parsing [{tag:/JJ/}]*[{tag:/NN.*/}]\+
。这使得测试正则表达式变得更加困难,因为在web服务器上测试转义的正则表达式似乎是不正确的,但在代码中是正确的;而在web服务器上非转义的正则表达式似乎是正确的,但在代码中却不正确。idv4meu85#
起初我认为这是在诗节方面的问题,但后来我发现这是一个与Java代码相关的问题。结果是,尽管我已经修复了这个问题,但修复并没有被纳入目前正在构建的4.1.0版本中。不过,它将在下一个版本或GitHub上提供。
e5nqia276#
啊,太棒了!
2guxujil7#
5e54ae4