用于与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-apilumi-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"]}]}'

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java通过两个整数数组对正整数和负整数进行排序   java无参数和默认构造函数混淆   java加载文件MD5的最快方法是什么?   java如何在变量声明中使用带“e”的float   java将项目导入到STS iMac   java在使用图像时旋转图像   java Break语句不起作用   java提供了错误类型Spring的id   java如何为多个变量设置相同的函数属性?   JavaMaven:如何添加编译阶段后生成的资源   java HashMap已损坏/性能问题   java Hibernate SQL中间表b/w父表和子表(不同类型)   java PDFbox找不到字体:/Helv   Java:向自实现的双链接列表添加排序函数   为使用Java BouncyCastle生成的X509Certificate提供密钥使用的安全性   java Hibernate在读写方面的性能   C#相当于Java的DataOutputStream?