用于与luminoso rest api通信的python客户端库
luminoso-api的Python项目详细描述
Luminoso客户端API的Python绑定
此包包含用于与luminoso文本交互的python代码 通过rest api处理服务器。
在这段代码中,不必分别验证每个请求, 创建一个“session”对象来跟踪登录信息, 并对其调用将被正确验证的方法。
重要提示:API版本和客户端版本
本页介绍连接到v5 api的客户机;此客户机是
名为luminoso_api.LuminosoClient
的对象,它是
luminoso_api.v5_client.LuminosoClient
。
v4 api仍然可以用于用户和帐户管理,正如
客户使用它。该客户机可以作为
luminoso_api.V4LuminosoClient
(或直接在
luminoso_api.v4_client.LuminosoClient
)。旧客户的文档可以
被发现
here。
在我们设置用户和帐户管理之前,将维护此客户端
v5 api中的端点,此时v4端点和此客户端将
输入日落时段。
安装
这个客户机api设计用于python 3。
您可以使用python包管理器下载并安装它:
pip install luminoso-api
或
easy_install luminoso-api
或者您可以下载此存储库并以通常的方式安装它:
python setup.py install
如果要安装到mac或unix上的主python环境中
系统,您可能需要在这些命令前面加上sudo
和
输入您的密码,如sudo python setup.py install
。
开始
使用luminosoclient对象与api交互,该对象发送http 以给定路径开始的对URL的请求,并跟踪 身份验证信息。
在连接到api之前,您需要转到web上的ui并 获取长寿命的api令牌。(要获取令牌,请转到“用户设置”选项 在右上角的下拉菜单中,单击“API标记”按钮。) 有一个,你可以用它连接到api。
fromluminoso_apiimportLuminosoClientproject=LuminosoClient.connect('/projects/my_project_id',token='my_token')# And then, for instance:docs=project.get('docs',limit=10)
在连接时,您也可以使用 luminosoclient将令牌保存到文件中,此时可以连接 无需指定令牌。
fromluminoso_apiimportLuminosoClientLuminosoClient.save_token('my_token')project=LuminosoClient.connect('/projects/my_project_id')docs=project.get('docs',limit=10)
还有一个方法,临时提供以简化从v4的转换 API,允许您使用用户名和密码进行连接:
fromluminoso_apiimportLuminosoClientproject=LuminosoClient.connect_with_username_and_password('/projects/my_project_id',username='my_username')
注意,路径中的所有前导斜杠和尾随斜杠都是可选的,因为
luminosoclient确保斜线放在正确的位置。例如,
以下所有调用都将转到终结点
https://daylight.luminoso.com/api/v5/projects/my_project_id/docs/
:
LuminosoClient.connect('/projects/my_project_id').get('docs')LuminosoClient.connect('projects/my_project_id/').get('/docs')LuminosoClient.connect('/projects/my_project_id/').get('docs/')LuminosoClient.connect('projects/my_project_id').get('/docs/')
http方法
您可以与之通信的url记录在https://daylight.luminoso.com/api/v5/。 该文档是您可以使用 api,这段python代码就是为了帮助您完成这项工作。
luminosoclient对象有.get
、.post
和.put
等方法,
对应于api使用的相应http方法。为了
例如,.get
用于在不更改任何内容的情况下检索信息,
.post
通常用于创建新事物或采取行动,并且.put
通常用于更新信息。
示例
大多数时候,你会希望你的luminosoclient引用 项目,但有一种情况是你不需要在第一个项目中得到一个项目列表 地点:
fromluminoso_apiimportLuminosoClientclient=LuminosoClient.connect()project_info_list=client.get('/projects/')print(project_info_list)
使用项目的示例,包括使用方便方法.wait_for_build
:
fromluminoso_apiimportLuminosoClientclient=LuminosoClient.connect()# Create a new project by POSTing its name and languageproject_id=client.post('/projects/',name='testproject',language='en')['project_id']# use that project from here onproject=client.client_for_path('/projects/'+project_id)docs=[{'title':'First example','text':'This is an example document.'},{'title':'Second example','text':'Examples are a great source of inspiration.'},{'title':'Third example','text':'Great things come in threes.'}]project.post('upload',docs=docs)project.post('build')project.wait_for_build()# When the previous call finishes:response=project.get('concepts')forconceptinresponse['result']:print('%s - %f'%(concept['texts'][0],concept['relevance']))
向量
术语的语义由“vector”对象表示,这个api 将返回不可理解的base64编码字符串,如下所示:
'WAB6AJG6kL_6D_6yAHE__R9kSAE8BlgKMo_80y8cCOCCSN-9oAQcABP_TMAFhAmMCUA'
如果你想看看这些向量的内部并相互比较,
下载我们的名为pack64
的库,该库以pip install pack64
的形式提供。它
将这些转换为numpy向量,因此需要numpy。
>>>frompack64importunpack64>>>unpack64('WAB6AJG6kL_6D_6y')array([0.00046539,0.00222015,-0.08491898,-0.0014534,-0.00127411],dtype=float32)
从命令行使用api
此库包括三个可从命令行使用的实验工具:
lumi-api
,lumi-upload
,和lumi-download
。用-h
运行它们将
提供有关可用参数的更详细文档。另外,
下面的示例可以提供一些关于使用lumi-api
访问
API:
# get a project list
lumi-api -b https://daylight.luminoso.com/api/v5/ -t my_token get /projects
# get a project list in CSV format
lumi-api -b https://daylight.luminoso.com/api/v5/ -t my_token get /projects -c
# get a project list and save the token so the next call wouldn't need "-t my_token" parameter
lumi-api -b https://daylight.luminoso.com/api/v5/ -t my_token -s get /projects -c
# create a project
lumi-api -b https://daylight.luminoso.com/api/v5/ -t my_token post /projects/ -p 'name=project name' -p 'language=en'
# upload documents
# my_data.json format: {"docs":[{"text": "..", "title": "..", "metadata": [..]}, {"text": "..", "title": "..", "metadata": [..]}]}
lumi-api -b https://daylight.luminoso.com/api/v5/ -t my_tokens post /projects/my_project_id/upload my_data.json
# build project
# this takes time, if you want to be notified via email when the build is done, add -j '{"notify": true}' parameter
lumi-api -b https://daylight.luminoso.com/api/v5/ -t my_tokens post /projects/my_project_id/build
# get concepts from project
lumi-api -b https://daylight.luminoso.com/api/v5/ -t my_tokens get /projects/my_project_id/concepts
# get project's match counts
lumi-api -b https://daylight.luminoso.com/api/v5/ -t my_token get /projects/my_project_id/concepts/match_counts
# create a saved concept
lumi-api -b https://daylight.luminoso.com/api/v5/ -t my_token post /projects/my_project_id/concepts/saved -j '{"concepts": [{"texts": ["My new concept text"]}]}'