由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 请教一个DL/NLP问题
相关主题
请教关于OpenNLP 和 Stanford NLP 选择应不应该用pretrain的model
胡扯几句什么叫Deep Learning入门mxnet 这个东西有人用么?
Pytorch靠谱吗?xgboost 训练大数据问题
有没有谁做 text mining 的?各位看好pytorch么?
深度学习真正有实用价值的应用pytorch技术上先进一些?
有没有做sentiment analysis的,求思路tf keras 这么多坑?
LSTM对不同长度的sentence是不是用padding是最好办法tensorflow的design
为什么kaggle上面没有 目标检测(object detection)的比赛?deep learning做embeded system,业界动态或者公司
相关话题的讨论汇总
话题: bert话题: sentence话题: dl话题: tf话题: similarity
进入Programming版参与讨论
1 (共1页)
s******e
发帖数: 3
1
我不熟DL,而且开发语言只能是Java。现在有个问题:
我已经可以在Java里使用谷歌PreTrained BERT embedding,获取句子的向量。但是
BERT 好像不能直接用来做 Sentence Similarity。有没有简单的数学介绍,如何使用
BERT 返回的数据,获取两个句子的相似度。我目前用java做了DOT 和NORM的算法。
另外,运行环境的内存和性能都不是很友好。
谢谢
c**x
发帖数: 137
2
得看你是不是有label好得数据,有的话直接训练;没有的话没什么好办法,搜一下
sentence embedding吧
t******o
发帖数: 61
3
try:
cosine distance
KL distance
should be enough
s******e
发帖数: 3
4

感谢 timetodo 和 cotx 的回复。我一并回答你们提到的内容。
我这个不是 classification,是Similarity。Embedding 已经有了,但是 BERT 的
embedding 直接用来做 sentence similarity 效果很差。有文档提到需要一些转换,
甚至都有代码,但是我本身对 DL 和 TF 都不熟,居然没看懂,也没有时间去深入,
也就没有办法翻译成java。
我已经实现了 cosine 和 KL,效果不好。这里有介绍:
https://www.reddit.com/r/LanguageTechnology/comments/ax6o41/how_to_compute_
sentence_similarity_using_bert/
我使用的环境必须是java,而且资源有限,无法使用很多现成的库,必须自己实现某些
矩阵算法。
希望懂DL大法的高手帮忙看一下 BERT 的一些代码,这个对 similarity 的 额外处理
到底执行了哪些运算,如果是 cosine distance 之类简单矩阵运算组合,我打算自己
实现。

【在 t******o 的大作中提到】
: try:
: cosine distance
: KL distance
: should be enough

s******e
发帖数: 3
5
我在网上找到相关例子,需要对模型进行fine tuning,然后才能用来产生可用的
sentence embedding。

【在 s******e 的大作中提到】
:
: 感谢 timetodo 和 cotx 的回复。我一并回答你们提到的内容。
: 我这个不是 classification,是Similarity。Embedding 已经有了,但是 BERT 的
: embedding 直接用来做 sentence similarity 效果很差。有文档提到需要一些转换,
: 甚至都有代码,但是我本身对 DL 和 TF 都不熟,居然没看懂,也没有时间去深入,
: 也就没有办法翻译成java。
: 我已经实现了 cosine 和 KL,效果不好。这里有介绍:
: https://www.reddit.com/r/LanguageTechnology/comments/ax6o41/how_to_compute_
: sentence_similarity_using_bert/
: 我使用的环境必须是java,而且资源有限,无法使用很多现成的库,必须自己实现某些

c**x
发帖数: 137
6
不是,我得意思是你有没有一些数据用来训练similarity的?如果直接拿CLS token来
算similarity的话结果会很差,不管用什么距离都一样。原因是BERT的cls token只用
来算下一个句子是不是临街的,所以这个向量基本只有两个方向,你算一下的话会发现
相似度都很高。
具体你可以参考这里的结果
https://www.zhihu.com/question/354129879
总结一下就是没有数据训练,只做无监督的话,直接用glove就行了,bert没用。

【在 s******e 的大作中提到】
: 我在网上找到相关例子,需要对模型进行fine tuning,然后才能用来产生可用的
: sentence embedding。

s******e
发帖数: 3
7

再次感谢指点。我暂时没有训练数据。word2vec/glove模型太大,我这里不适合使用。
我在想是否有通用的fine tuning,不需要训练数据就可以对输出进行 cosine
similarity 计算。当然fine tuning 不能太复杂,否则我还要实现全部相关的运算。

【在 c**x 的大作中提到】
: 不是,我得意思是你有没有一些数据用来训练similarity的?如果直接拿CLS token来
: 算similarity的话结果会很差,不管用什么距离都一样。原因是BERT的cls token只用
: 来算下一个句子是不是临街的,所以这个向量基本只有两个方向,你算一下的话会发现
: 相似度都很高。
: 具体你可以参考这里的结果
: https://www.zhihu.com/question/354129879
: 总结一下就是没有数据训练,只做无监督的话,直接用glove就行了,bert没用。

w********m
发帖数: 1137
8
还是得用Python
把数据传回java即可
s******e
发帖数: 3
9
兜兜转转还是绕不开。不知为何特讨厌python。

【在 w********m 的大作中提到】
: 还是得用Python
: 把数据传回java即可

s******e
发帖数: 3
10
更正一下,不是python,是整个 dl 届的不良风气。
我是做工程的,强调质量、软件一致性,可维护性等。看看他们搞的东西,版本号差 0
.0.1,API就天差地别。github上的dl项目,尤其是基于tf的,超过2个月就要小心了,
按tutorial 做基本没戏。做个东西,全都留个尾巴,没法拿来直接用。训练个模型,
TM 就是中餐馆厨师,全凭经验。吹得比做得好听,就拿文本分类来说,我用下来,居
然还是svm效果最好。
这股风气来自学术届,蔓延到工业界,狗家为甚。看看狗家的 tf,这得对软件工程多
么无知才会出这么sb的东西,几乎集中了全部软件工程的 anti-pattern 。狗家的东西
得小心使用,说改就改,说停就停。
浪费了几天时间,决定转回svm,和bert说再见。又一次狗家很差的体验。

【在 s******e 的大作中提到】
: 兜兜转转还是绕不开。不知为何特讨厌python。
相关主题
LSTM对不同长度的sentence是不是用padding是最好办法mxnet 这个东西有人用么?
为什么kaggle上面没有 目标检测(object detection)的比赛?xgboost 训练大数据问题
应不应该用pretrain的model各位看好pytorch么?
进入Programming版参与讨论
b******g
发帖数: 77
11
用 universal sentence encoder
s********k
发帖数: 6180
12
先试一下能不能直接用: https://github.com/hanxiao/bert-as-service,看看效果
好不好再工程化
另外句子相似性可能需要前期处理很多,比如normalization,甚至tokenization,直
接上模型不一定好



【在 s******e 的大作中提到】
: 我不熟DL,而且开发语言只能是Java。现在有个问题:
: 我已经可以在Java里使用谷歌PreTrained BERT embedding,获取句子的向量。但是
: BERT 好像不能直接用来做 Sentence Similarity。有没有简单的数学介绍,如何使用
: BERT 返回的数据,获取两个句子的相似度。我目前用java做了DOT 和NORM的算法。
: 另外,运行环境的内存和性能都不是很友好。
: 谢谢

c*******v
发帖数: 2599
13
线性代数的很多基础操作的实现有复杂的学问在里面。免费的库,目前只有fortran,
cpp,python过硬。
假如自己实现的话,哪怕就是DOT,norm,你的效率和质量要赶上fortran,cpp,python那
也很废功夫的。这样写出来你自己不就成了你批评的那些库嘛!
我建议用python的numpy.。绕过基础线性代数操作自己写这个坑。可以在numpy的基础
上写别的算法。
Overall来讲,把数值计算的算法在web server host起来,远不是一般人想象的那么简
单。half
made的各种软件的出现很正常。这个倒不是dl届的问题。这是cs的人很少学numerical
computation 的问题,传统上这块归EE,ME,化学,生物什么的。跟java不是一套班子。
你弄个石油钻井的流体模拟,放java上变成web service,一样会碰到很多问题。


: 更正一下,不是python,是整个 dl 届的不良风气。

: 我是做工程的,强调质量、软件一致性,可维护性等。看看他们搞的东西
,版本
号差 0

: .0.1,API就天差地别。github上的dl项目,尤其是基于tf的,超过2个月
就要小
心了,

: 按tutorial 做基本没戏。做个东西,全都留个尾巴,没法拿来直接用。
训练个
模型,

: TM 就是中餐馆厨师,全凭经验。吹得比做得好听,就拿文本分类来说,
我用下
来,居

: 然还是svm效果最好。

: 这股风气来自学术届,蔓延到工业界,狗家为甚。看看狗家的 tf,这得
对软件
工程多

: 么无知才会出这么sb的东西,几乎集中了全部软件工程的 anti-pattern
。狗家
的东西

: 得小心使用,说改就改,说停就停。

: 浪费了几天时间,决定转回svm,和bert说再见。又一次狗家很差的体验。



【在 s******e 的大作中提到】
: 更正一下,不是python,是整个 dl 届的不良风气。
: 我是做工程的,强调质量、软件一致性,可维护性等。看看他们搞的东西,版本号差 0
: .0.1,API就天差地别。github上的dl项目,尤其是基于tf的,超过2个月就要小心了,
: 按tutorial 做基本没戏。做个东西,全都留个尾巴,没法拿来直接用。训练个模型,
: TM 就是中餐馆厨师,全凭经验。吹得比做得好听,就拿文本分类来说,我用下来,居
: 然还是svm效果最好。
: 这股风气来自学术届,蔓延到工业界,狗家为甚。看看狗家的 tf,这得对软件工程多
: 么无知才会出这么sb的东西,几乎集中了全部软件工程的 anti-pattern 。狗家的东西
: 得小心使用,说改就改,说停就停。
: 浪费了几天时间,决定转回svm,和bert说再见。又一次狗家很差的体验。

s******e
发帖数: 3
14
去看了一下,有小模型,准备以后尝试一下。谢谢

【在 b******g 的大作中提到】
: 用 universal sentence encoder
s******e
发帖数: 3
15
已经有 web service 版本的应用,虽然比不上外边的专业产品,但够用了。最近公司
的设备遇到了弱网问题,我寻思着是否可以把一部分功能放到前端去。之前的软件都是
模块化的,出于部署考虑,所有模块实现了远程/本地调用切换。所以我在考虑,在弱
网时,使用一个弱化版的嵌入式对话机器人,一旦网络通畅,就自动切换回去。这个就
是使用场景。
我现在打算先用分类算法将就一下,等以后有时间再考虑一下其他。

【在 s********k 的大作中提到】
: 先试一下能不能直接用: https://github.com/hanxiao/bert-as-service,看看效果
: 好不好再工程化
: 另外句子相似性可能需要前期处理很多,比如normalization,甚至tokenization,直
: 接上模型不一定好
:
: 用

s******e
发帖数: 3
16
我用在嵌入设备里,如果太复杂,就准备引入一个包,否则就自己写。我的原则是尽量
少用第三方的包,尤其是只用一两个方法,却要几十个M的包。很多时候,引入的包还
有根据需要重新打包。

numerical
子。

【在 c*******v 的大作中提到】
: 线性代数的很多基础操作的实现有复杂的学问在里面。免费的库,目前只有fortran,
: cpp,python过硬。
: 假如自己实现的话,哪怕就是DOT,norm,你的效率和质量要赶上fortran,cpp,python那
: 也很废功夫的。这样写出来你自己不就成了你批评的那些库嘛!
: 我建议用python的numpy.。绕过基础线性代数操作自己写这个坑。可以在numpy的基础
: 上写别的算法。
: Overall来讲,把数值计算的算法在web server host起来,远不是一般人想象的那么简
: 单。half
: made的各种软件的出现很正常。这个倒不是dl届的问题。这是cs的人很少学numerical
: computation 的问题,传统上这块归EE,ME,化学,生物什么的。跟java不是一套班子。

c*******v
发帖数: 2599
17
嵌入设备(有条件的话)我觉得c/cpp有优势。


: 我用在嵌入设备里,如果太复杂,就准备引入一个包,否则就自己写。我
的原则
是尽量

: 少用第三方的包,尤其是只用一两个方法,却要几十个M的包。很多时候
,引入
的包还

: 有根据需要重新打包。

: numerical

: 子。



【在 s******e 的大作中提到】
: 我用在嵌入设备里,如果太复杂,就准备引入一个包,否则就自己写。我的原则是尽量
: 少用第三方的包,尤其是只用一两个方法,却要几十个M的包。很多时候,引入的包还
: 有根据需要重新打包。
:
: numerical
: 子。

s******e
发帖数: 3
18
上次用c是2005之前,也是嵌入系统。如今都安卓嵌入系统。老了,智商不够,拾起来
难了。

【在 c*******v 的大作中提到】
: 嵌入设备(有条件的话)我觉得c/cpp有优势。
:
:
: 我用在嵌入设备里,如果太复杂,就准备引入一个包,否则就自己写。我
: 的原则
: 是尽量
:
: 少用第三方的包,尤其是只用一两个方法,却要几十个M的包。很多时候
: ,引入
: 的包还
:
: 有根据需要重新打包。
:
: numerical

b******g
发帖数: 77
19
tf的productinization
server端的model用 model server host
mobile端转化成tflite 格式,tflite不支持所有operation 比如文本模型常用的
sparse。不是所有模式都能转化
m******r
发帖数: 1033
20
请问大神为啥svm好 ? 能比线性回归好很多吗 ?

0

【在 s******e 的大作中提到】
: 更正一下,不是python,是整个 dl 届的不良风气。
: 我是做工程的,强调质量、软件一致性,可维护性等。看看他们搞的东西,版本号差 0
: .0.1,API就天差地别。github上的dl项目,尤其是基于tf的,超过2个月就要小心了,
: 按tutorial 做基本没戏。做个东西,全都留个尾巴,没法拿来直接用。训练个模型,
: TM 就是中餐馆厨师,全凭经验。吹得比做得好听,就拿文本分类来说,我用下来,居
: 然还是svm效果最好。
: 这股风气来自学术届,蔓延到工业界,狗家为甚。看看狗家的 tf,这得对软件工程多
: 么无知才会出这么sb的东西,几乎集中了全部软件工程的 anti-pattern 。狗家的东西
: 得小心使用,说改就改,说停就停。
: 浪费了几天时间,决定转回svm,和bert说再见。又一次狗家很差的体验。

相关主题
pytorch技术上先进一些?deep learning做embeded system,业界动态或者公司
tf keras 这么多坑?帮忙看看怎么理解这个指针
tensorflow的designnode.js 0.12 is releasing
进入Programming版参与讨论
s******e
发帖数: 3
21
我是苦力,不是大神。使用下来感觉准确率略高。其实差别不大,不仔细测试,实际实
际使用时感觉不到。

【在 m******r 的大作中提到】
: 请问大神为啥svm好 ? 能比线性回归好很多吗 ?
:
: 0

m******r
发帖数: 1033
22
看来大神在线答疑。
svm这个东西, 我觉着很多做生物统计的特别喜欢,什么原因不知道。 我做的东西比
较简单,经常和普通线性回归比较下,大部分情况性能差不多,但svm很多R软件包调用
起来不方便, 比如kernel这个参数,理论上应该有好几种, 圆的,方的(是不是有三
角的我是记不清了),有的作者也许图省事,只提供⚪的, radius, 是不是很别
扭。 而且其他几个参数, 也完全没有章法可循,从0到无穷大,让人怎么选?
从零到一,或者从一到一万选个最优解,还能试一试。 无穷大, 哪里是个尽头。

【在 s******e 的大作中提到】
: 我是苦力,不是大神。使用下来感觉准确率略高。其实差别不大,不仔细测试,实际实
: 际使用时感觉不到。

S*******4
发帖数: 18
23
https://github.com/UKPLab/sentence-transformers
I have tried this, beats USE from google.
w***g
发帖数: 5958
24
我不信他们内部项目也这么倒腾。

0

【在 s******e 的大作中提到】
: 更正一下,不是python,是整个 dl 届的不良风气。
: 我是做工程的,强调质量、软件一致性,可维护性等。看看他们搞的东西,版本号差 0
: .0.1,API就天差地别。github上的dl项目,尤其是基于tf的,超过2个月就要小心了,
: 按tutorial 做基本没戏。做个东西,全都留个尾巴,没法拿来直接用。训练个模型,
: TM 就是中餐馆厨师,全凭经验。吹得比做得好听,就拿文本分类来说,我用下来,居
: 然还是svm效果最好。
: 这股风气来自学术届,蔓延到工业界,狗家为甚。看看狗家的 tf,这得对软件工程多
: 么无知才会出这么sb的东西,几乎集中了全部软件工程的 anti-pattern 。狗家的东西
: 得小心使用,说改就改,说停就停。
: 浪费了几天时间,决定转回svm,和bert说再见。又一次狗家很差的体验。

s******e
发帖数: 3
25
谢谢,尝试了一下,感觉不错,尤其后边的Semantic Search几乎开箱可用。
但还是太大。以后替换服务器端的服务会考虑。

【在 S*******4 的大作中提到】
: https://github.com/UKPLab/sentence-transformers
: I have tried this, beats USE from google.

s******e
发帖数: 3
26
pytorch 感觉比 tf 正规多了。

【在 s******e 的大作中提到】
: 谢谢,尝试了一下,感觉不错,尤其后边的Semantic Search几乎开箱可用。
: 但还是太大。以后替换服务器端的服务会考虑。

s******e
发帖数: 3
27
我了解到部门,都不是这样。但是谷歌开源出来的东西,都不太尊重开发者。有很长一
串东西,比如GWT(现在谁还在用,TM我就上过贼船),比如guava,内部一些东西改动
太大,TF就更不用说了。

【在 w***g 的大作中提到】
: 我不信他们内部项目也这么倒腾。
:
: 0

w********m
发帖数: 1137
28
以后换人换项目
都是重写不是重构
Python重写快
这是优点
s******e
发帖数: 3
29
再次感谢各位的帮助。
感谢 Shane2014 提供的 sentence-transformers
感谢 beidapig 提供的 universal sentence encoder
最近趁热打铁,更新了部分服务器端的NLP组件,sentence similarity 部分最后选用
了 sentence-transformers,套个flask做微服务。
分享一下为啥这么做。这个结果不是分析他们的Paper,我不懂,也没打算弄懂,纯粹
是从应用和工程角度。
sentence-transformer:
Paper 非常新,作者列出的结果比USE好
有几个很直白的 Example,直接上手测试,非常顺利
基于 PyTorch 和 huggingface / transformers
universal sentence encoder:
Paper 比较老(2018vs2019)
Google的模型,很难离开TF
结果也非常好,但比 ST 略差
网上的Example都需要自己组装,让它跑起来也花了点时间,主要还是在和TF做斗争。
我对狗家的东西有点抗拒,所以最后选了Sentence-transformer。
有个非常有趣的结果,两个模型都没有针对中文的预训练模型,但有一个多语言的模型
。我尝试了一下,发现可以匹配不同语言之间的语义,跨语言匹配的效果比同语言略差
,但也够用。这个对我们的应用还是非常有用的。我开始尝试改造应用,使用同一个机
器人,加一个语言侦测器,就可以让我们的机器人同时讲16种语言。
x****u
发帖数: 44466
30
pytorch不错
keras被谷歌搞死前也不错

0

【在 s******e 的大作中提到】
: 更正一下,不是python,是整个 dl 届的不良风气。
: 我是做工程的,强调质量、软件一致性,可维护性等。看看他们搞的东西,版本号差 0
: .0.1,API就天差地别。github上的dl项目,尤其是基于tf的,超过2个月就要小心了,
: 按tutorial 做基本没戏。做个东西,全都留个尾巴,没法拿来直接用。训练个模型,
: TM 就是中餐馆厨师,全凭经验。吹得比做得好听,就拿文本分类来说,我用下来,居
: 然还是svm效果最好。
: 这股风气来自学术届,蔓延到工业界,狗家为甚。看看狗家的 tf,这得对软件工程多
: 么无知才会出这么sb的东西,几乎集中了全部软件工程的 anti-pattern 。狗家的东西
: 得小心使用,说改就改,说停就停。
: 浪费了几天时间,决定转回svm,和bert说再见。又一次狗家很差的体验。

相关主题
Third-party Node.js Foundation takes over jurisdiction of胡扯几句什么叫Deep Learning入门
help on GAMS! thx!!Pytorch靠谱吗?
请教关于OpenNLP 和 Stanford NLP 选择有没有谁做 text mining 的?
进入Programming版参与讨论
x****u
发帖数: 44466
31
一般来说内部项目只会更折腾,不然那么多人干什么啊

【在 w***g 的大作中提到】
: 我不信他们内部项目也这么倒腾。
:
: 0

n********t
发帖数: 21
32
可以试试java native interface 矩阵运算用c++完成

:线性代数的很多基础操作的实现有复杂的学问在里面。免费的库,目前只有fortran,
:cpp,python过硬。
1 (共1页)
进入Programming版参与讨论
相关主题
帮忙看看怎么理解这个指针深度学习真正有实用价值的应用
node.js 0.12 is releasing有没有做sentiment analysis的,求思路
Third-party Node.js Foundation takes over jurisdiction ofLSTM对不同长度的sentence是不是用padding是最好办法
help on GAMS! thx!!为什么kaggle上面没有 目标检测(object detection)的比赛?
请教关于OpenNLP 和 Stanford NLP 选择应不应该用pretrain的model
胡扯几句什么叫Deep Learning入门mxnet 这个东西有人用么?
Pytorch靠谱吗?xgboost 训练大数据问题
有没有谁做 text mining 的?各位看好pytorch么?
相关话题的讨论汇总
话题: bert话题: sentence话题: dl话题: tf话题: similarity