首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有任何方法让pycorenlp的`nlp.annotate()‘始终返回相同类型的结果?

是否有任何方法让pycorenlp的`nlp.annotate()‘始终返回相同类型的结果?
EN

Stack Overflow用户
提问于 2016-09-21 00:42:06
回答 1查看 1.4K关注 0票数 2

我试图运行吡咯烷酮来标记包含非ASCII字符的文本。有时nlp.annotate()返回字典,有时返回字符串。

例如,

代码语言:javascript
复制
'''
From https://github.com/smilli/py-corenlp/blob/master/example.py
'''
from pycorenlp import StanfordCoreNLP
import pprint
import re

if __name__ == '__main__':
    nlp = StanfordCoreNLP('http://localhost:9000')
    text = u"tab with good effect, denies pain".encode('utf-8')
    print('type(text): {0}'.format(type(text)))

    output = nlp.annotate(text, properties={
        'annotators': 'tokenize,ssplit',
        'outputFormat': 'json'
    })
    #pp = pprint.PrettyPrinter(indent=4)
    #pp.pprint(output)
    print('type(output): {0}'.format(type(output)))

    text = u"tab with good effect\u0013\u0013, denies pain".encode('utf-8')
    print('\ntype(text): {0}'.format(type(text)))
    output = nlp.annotate(text, properties={
        'annotators': 'tokenize,ssplit',
        'outputFormat': 'json'
    })
    print('type(output): {0}'.format(type(output)))

产出:

代码语言:javascript
复制
type(text): <type 'str'>
type(output): <type 'dict'>

type(text): <type 'str'>
type(output): <type 'unicode'>

我注意到,当type(output)<type 'unicode'>时,在斯坦福CoreNLP服务器上会收到以下警告:

代码语言:javascript
复制
WARNING: Untokenizable: ‼ (U+13, decimal: 19)

是否有任何方法让nlp.annotate()总是返回相同类型的结果?

斯坦福CoreNLP服务器是通过以下方式启动的:

代码语言:javascript
复制
java -mx4g -cp "*" edu.stanford.nlp.pipeline.StanfordCoreNLPServer 9000

我使用斯坦福CoreNLP 3.6.0、pycorenlp0.3.0和python3.5 x64在Windows7 SP1 x64终极版上。

EN

回答 1

Stack Overflow用户

发布于 2017-01-25 23:21:52

快速解决办法:

代码语言:javascript
复制
import json
# to place right after `output = nlp.annotate(text, properties={…})`
if type(output) is str or type(output) is unicode:
    output = json.loads(output, strict=False)

我使用strict=False是因为ValueError: Invalid control character at: line 1 column 33 (char 33)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39605817

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档