弱弱的请教一个算法类 API 实现的疑惑

2019-11-06 16:05:41 +08:00
 leiuu

这个问题貌似有点模糊,更具体如下:

以百度的这个API为例子。 既然是 web 服务,自然想到了 spring 全家桶,假设我想用 Java 实现这个 API。
其中涉及算法的地方,很多基础的算法 Java 本身没有,比如自然语言处理中的算法:TFIDF。

可能的解决这个算法库缺失的办法:

1. 重新造轮子,将需要的算法都用 Java 实现一遍,封装为算法库,web 后台直接调包。
2. 将 python 的 sklearn 封装一些基础的算法 API 出来,Java 直接调用这个 API。

或者:

直接使用 python 作为后台语言。

想了解一下,大家是怎么解决这类问题的?

2726 次点击
所在节点    程序员
22 条回复
ayase252
2019-11-06 16:08:08 +08:00
算法部分本身包装成一个服务,让后台通过 HTTP 等协议来取?
ml1344677
2019-11-06 16:11:14 +08:00
咋说呢,不是特别明白你的需求。java 的机器学习库是有的而且不少,tf-idf 也只是非常基础的一个算法,自己写也没啥问题。python 的优势就是库多呗。
dswyzx
2019-11-06 16:18:31 +08:00
python 算法包装起来,搭个 flask 架子 api 接口请求.(以前实现过,感觉配合起来比较简单
MinQ
2019-11-06 16:21:36 +08:00
自己写或者 python 做一个后台服务,Java 去调用
sadfQED2
2019-11-06 16:26:20 +08:00
大公司后台都是多种语言混合的,然后通过 rpc 或者 http 互相调用
LeeSeoung
2019-11-06 16:27:05 +08:00
很多算法是有 java 实现的 nlp 方面的可以参考 dl4j 或者其他机器学习的包 挺多的。至于一些算法实现难的 可以用 python 包装成 web 服务,python 做 web 服务 感觉挺多东西都要自己实现。。
mxT52CRuqR6o5
2019-11-06 16:29:58 +08:00
按照减少技术栈的思路选 2 比较好
leiuu
2019-11-06 16:30:19 +08:00
@ayase252 感谢,我也是这么想的。

@dswyzx 感谢,明白,就是再启一个子服务,用 python 实现。


@ml1344677 感谢回复,java 机器学习库有没有一些推荐?
「 python 的优势就是库多呗」,对的就是想利用这一点。
其实本质是想了解一下实现这样一个算法 API,后台的大致架构是怎么样的?
怎么解决算法库的问题,自己实现还是复用现有的库,如果算法库和后台实现跨语言的话怎么解决呢?


@MinQ 感谢,真的可以这样哈哈。


@sadfQED2 感谢,原来真的是这样,之前只是猜测!


@LeeSeoung 感谢,dl4j 好评。大致理解实现方式了!
Raymon111111
2019-11-06 16:30:55 +08:00
算法作为 jar 包提供 api 啊

简单点参考 java 自带的排序算法是怎么对外提供 api 的
lihongjie0209
2019-11-06 16:33:31 +08:00
rpc 啊
leiuu
2019-11-06 16:33:48 +08:00
@mxT52CRuqR6o5 会减少一些造轮子!不过又会加一套开发语言以及一堆框架过来。😄。


@Raymon111111 可能我没表述清晰,不是这个问题。
luozic
2019-11-06 17:35:51 +08:00
基于微服务构建系统,除了开发和维护成本,其他成本区别不大;如果是传统方式,运维 /沟通成本会增加不少。
secsilm
2019-11-06 18:00:43 +08:00
就像楼上各位说的,用 Python 起一个算法服务,Java 去调
littleylv
2019-11-06 18:09:27 +08:00
人不是有 SDK 了么。。。
liuxu
2019-11-06 18:12:00 +08:00
php 合理的方案可以是直接 PHP,考虑到性能可以用 C 写 php mod,然后加载调用开放出来的方法
leiuu
2019-11-06 18:25:05 +08:00
@lihongjie0209 rpc+1,不过可能这里涉及另外一个问题,rpc 还是 http+json
@secsilm +1
@luozic +1
@littleylv 可否详细说说?
@liuxu php 虽然最好还不懂,😄。用 c 做 php 扩展直接实现算法库?
liuxu
2019-11-06 18:28:41 +08:00
@leiuu 对的,像 pecl 扩展一样,用 C 实现
littleylv
2019-11-06 18:30:42 +08:00
@leiuu #16 不好意思,我理解错了
ipwx
2019-11-06 20:18:23 +08:00
@liuxu 你先仔细看看楼主的需求。提到的是已经有的算法,通过组合的方式变成一个算法的应用,同时 Python 基本都已有对应的库。这时候当然优先 Python 做 API。
quietnight
2019-11-07 00:36:20 +08:00
tf serving

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/616884

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX