2016-08-24 58 views
1

我有这个继承的代码,它在Python 2.7中成功返回XML中的结果,然后由ElementTree进行分析。是outputMode仍然受支持在alchemy_language.entities

result = alchemyObj.TextGetRankedNamedEntities(text) 

root = ET.fromstring(result) 

我更新程序到Python 3.5和我试图做到这一点,这样我就不需要修改结果的XML解析:

result = alchemy_language.entities(outputMode='xml', text='text', max_ 
items='10'), 

root = ET.fromstring(result) 

http://www.ibm.com/watson/developercloud/alchemy-language/api/v1/#entities输出outputmode允许JSON默认的选择和xml。但是,我收到此错误:

Traceback (most recent call last): 
    File "bin/nerv35.py", line 93, in <module> 
    main() 
    File "bin/nerv35.py", line 55, in main 
    result = alchemy_language.entities(outputMode='xml', text='text', max_items='10'), 
TypeError: entities() got an unexpected keyword argument 'outputMode' 

outputMode实际上是否仍然存在?如果是这样,实体参数有什么问题?

+0

是否使用watson_developer_cloud? –

回答

1

watson-developer-cloud似乎没有此实体的实体。允许的设置为:

html 
text 
url 
disambiguate 
linked_data 
coreference 
quotations 
sentiment 
show_source_text 
max_items 
language 
model 

你可以尝试使用requests直接访问API。例如:

import requests 

alchemyApiKey = 'YOUR_API_KEY' 
url = 'https://gateway-a.watsonplatform.net/calls/text/TextGetRankedNamedEntities' 

payload = { 'apikey': alchemyApiKey, 
      'outputMode': 'xml', 
      'text': 'This is an example text. IBM Corp' 
      } 

r = requests.post(url,payload) 

print r.text 

应该返回此:

<?xml version="1.0" encoding="UTF-8"?> 
<results> 
    <status>OK</status> 
    <usage>By accessing AlchemyAPI or using information generated by AlchemyAPI, you are agreeing to be bound by the AlchemyAPI Terms of Use: http://www.alchemyapi.com/company/terms.html</usage> 
    <url></url> 
    <language>english</language> 
    <entities> 
     <entity> 
      <type>Company</type> 
      <relevance>0.961433</relevance> 
      <count>1</count> 
      <text>IBM Corp</text> 
     </entity> 
    </entities> 
</results>