本文欢迎转载,但需要注明原作者和出处。
身为科研人(科研狗?),想必少不了向别人要求代码/论文/预训练模型/数据集/套磁的经历。有些人一般都能成功要到,而有些人就不行了。
在发表了论文之后,想必也会有别人向你要求代码/论文/预训练模型/数据集/套磁。我也经常收到这样的邮件。有些给了,有些就不想给。
那么,为什么呢?
先做一个假想的思维实验吧。
某天,你在实验室充满热忱的(痛苦不堪的)写着代码/论文/报告,忽然一个带着丝袜头套(银行劫匪经典款)的人指着你的鼻子:“把你的代码发给我!”,那么,你会乐意吗?哪怕你已经决定一个月以后就开源这个代码,在这种情况下,你打心底里乐意吗?
又或者,一个至少看上去正常的人,满脸真诚的对你说:“X先生/女士,我是从事和你一样研究领域的某某某,读了您的论文,觉得特别好,真的是现在最好的方法了。我想把我们这边研究的方法和您的比较一下,能把代码拷给我吗?我保证只用于研究目的,只在我们实验室内部用,绝不外传的”,那么,你会乐意吗?
如果你的答案分别是愿意、不愿意,那么抱歉,我们不在一个频道,下面的内容不如就别看了吧。
如果你的答案分别是不愿意、愿意,那么我们的看法差不多。不如继续往下看看我的两段真实经历。
Z老师是我们这边的大牛,当然了,找他的人也特别多。
“我知道啊,那你把Z老师的手机号给我吧!”
“请问您是哪位?找Z老师有什么事吗”
“这你就别问了,把他手机号码给我就行。我有急事找他。”
(Z老师和我这种闲散人员不同,那是知名学者,手机号码并没有公开。)
“这个是Z老师比较重要的个人信息,没有得到他同意的话,我这边没有办法替他公开的啊。”
“你们这帮搞研究的就是事情多...”
从我个人的生活经验来看,这位大概率不是骗子,只是这段对话槽点还是过多了一些。
为啥你那么自信,自己做为一个“丝袜头套派的人物”,别人就必须满足你、告诉你第三方的私密信息?
这里推荐去听一下经典相声《小偷公司》:
我们“这帮搞研究的”得罪谁了啊?啊?
再说了,如果不是骗子,正常人有事的话,也应该委托我和Z老师说一下“有这么个谁谁谁找你,留了一个联系方式是XYZ”。要是真重要的事情,Z老师也能及时和对方取得联系。
怎么就变成了我不把Z老师的隐私信息给她,就犯了错了呢?
我得罪了谁了啊?啊?
(我办公室的座机号码其实之前是我们这边办公室主任Z主任的座机号码。)
“喂,您好,我找Z主任。”
“这个号码以前是Z主任用的,现在他不用了。”
“那能麻烦给一下Z主任的联系方式吗?”
“请问找他有什么事情啊?”
“是这样的,我家小孩XX在南大读书,最近成绩下降的厉害,想找学校了解下情况。网上查到的其他号码都打不通,只有这个Z主任的通了,还...不好意思啊,能不能麻烦一下?”
(虽说这个事情其实和我没有关系,但是我觉得这个忙还是该帮的,所以请对方等了一下。)
(Z主任的私人手机号还是不能给,但是我们单位办公室是有座机的,而且是在使用中的。)
(可怜天下父母心...,都大学了还是要关心孩子的成绩...)
(可怜我们这些当老师的,平时成绩占总分50分,有些学生吧,你一次作业都不交,我怎么让你及格?)
所以,从我的个人观点来看,一般来说能成功要到代码/论文/模型/数据,需要具备以下的要素:
1.若要公道,打个颠倒2.让对方觉得诚实可靠第1个要素说的是态度。没有人欠你代码/论文/模型/数据,请务必不要因为没有要到代码/论文/模型/数据而对原作者生出怨怼。
这是一段甲方对上乙方的关系,代码/论文/模型/数据的原作者是甲方,而你是乙方。如果没有要到,不妨回头看看你的邮件,是不是这个邮件让你在对方看来属于是“丝袜头套派”的不合理要求?
所以,若要公道,打个颠倒。仔细看着那封要代码的邮件,不妨想象一下你自己是甲方,这种情况下你会乐意给出代码吗?如果你自己都觉得不妥,那怎么能指望别人会乐意呢?
第2个要素说的是方法。重点是让对方觉得你诚实可靠。
你自己是否诚实可靠小郎君,其实是没有办法证实的。
甲方收到一封要代码的邮件,如果代码还没有公开的话,那么愿意给出代码的底线至少是:对方不是一个骗子,也不会用我的代码来做一些坏事。
在最初,大圣可是自报家门的:
祖师道:“你是那方人氏?且说个乡贯姓名明白再拜。”猴王道:“弟子乃东胜神洲傲来国花果山水帘洞人氏。”祖师喝令:“赶出去!他本是个撒诈捣虚之徒,那里修甚么道果!”猴王慌忙磕头不住道:“弟子是老实之言,决无虚诈。”祖师道:“你既老实,怎么说东胜神洲?那去处到我这里,隔两重大海,一座南赡部洲,如何就得到此?”猴王叩头道:“弟子飘洋过海,登界游方,有十数个年头,方才访到此处。”祖师道:“既是逐渐行来的也罢。你姓甚么?”*菩提祖师第一个想知道的就是“whoareyou”,而孙大圣也绝不是丝袜头套派的。
至于求法,悟空反复追问
似这般可得长生么?,这就是对“我要代码来干吗”的回答了。
到最后,菩提老祖对孙悟空说:
你这去,定生不良。凭你怎么惹祸行凶,却不许说是我的徒弟。对吧?这就是甲方的底线了。
甲方给代码是为了学术交流,为了推广研究成果,但是根本底线却是:出了事不要连累我。
所以,两个要素结合起来,归根到底,还是要从态度和方法上,让甲方相信你诚实可靠。
至于你是否真的诚实可靠,或者你是否相信自己确实诚实可靠,这些都不相干的。
要我(甲方)觉得,不要你(乙方)觉得。
如果一个的的确确是诚实可靠的人写信向你要代码,但是吧,你唯一能看到的就是那封电子邮件,里面只写着“把xxx论文的代码发给我吧!”---你会把代码发过去吗?
你真的会把代码发过去吗?
如果你的答案是yes,那建议仔细看看这个文档的最后一部分。
那么,怎么让对方觉得你确实诚实可靠呢?这其实是有八股格式的。
可惜的是,根据我的个人经验来看,向我要代码/论文/模型/数据的邮件当中:
换句话说,由着性子来的话,绝大部分中文来信要代码/论文/模型/数据的,我应该会直接不回信。
到现在呢,整天忙得焦头烂额,就大部分不回信了。
简明扼要且礼貌的标题是必不可少的。
没有标题的邮件有较大几率会被直接分为垃圾邮件。
正如学术论文的标题一样,邮件的标题需要说明要点,让人点进去看详情、而不是直接删掉。
正确而礼貌的称呼重要性其实也很高。
因为国家留学基金委的缘故,我们国内教师经常会收到索要录用证明的邮件,通常标题是"Requestforacceptanceletter"而称呼是"RespectedSir/Madam"。
而很多中文来信则比这更加神奇---人家就根本没有称呼。
还遇到过奇怪的信,开头的称呼是“ZJ教授”,我是“W老师”好吗?
所以,正确的称呼收信人(最好表现适度的礼貌),其重要性不言而喻。
邮件正文的第一部分,必须是自我介绍(如果和收件人不认识的话)。
正如前面的例子所说,你不会很乐意给一个遮遮掩掩、丝袜套头的人帮助吧?一个完全不认识又不自我介绍的人,看上去就不会是诚实可靠的吧?
所以自我介绍(WhoamI)是绝对必要的。
我的姓名?来自哪里?我的研究方向是什么?等等
简短而诚恳。这是要点,可以体现在很多方面。
又比如,自己和所在实验室的主页,必要时这是可以提供更多的信息和可信度的。
哪怕你在邮件的末尾有个人签名,提供了一些信息,也不能替代在邮件最开头的个人简介。
简明扼要,比如:
IamwritingtorequestaccesstothepretrainedmodelofyourmethodXXX,publishedatCVPR2023.我个人偏好将这个部分放在下一部分之前单独列出。
提供合理、诚恳的理由。
一般来说,这里会表达一下对甲方工作的赞赏之情,而篇幅可以稍微长一点点,因为需要把话说清楚。例如:
比如可以说
“Wewillusethecodestrictlyfollowingthecopyrightnoticeaccompanyingyourcode.”或者,
“Wewillonlyusethecodeinsideourresearchgroupforacademicresearchpurposesonly”。这部分的目的是表明“诚实可靠”,就是不会使用要求的内容去做违反法律、约定、规则的事情。换句话说,就是“就算大闹天宫了,也不会把师父您牵扯出来”的意思。
类似于下面之类的:
“Lookingforwardtoyourkindreply.”8.落款正式的落款,类似于下面这种(总之要体现“诚实可靠”):
[A]真诚。真话比假话更有力量。
[B]简洁。简明扼要,不要流水账。
[C]有备。先做功课,了解甲方对发代码、招学生等等有什么要求,而不是盲目去要。
[E]礼貌。说实话,从我收到的要代码等等的中文邮件来看,这个本不应该需要说的事情,看样子很有必要强调。
可能有些人(特别是经历比较少的同学)会觉得上面的八股太啰嗦了,而上面的建议也太限制自由发挥了。
“明明我时诚实可靠小郎君,为什么要搞这么复杂,直接把代码发给我不好吗?”
不好!
因为这个世界上有形形色色的人,各种各样的事。
而且,曾经掉进坑里的人,以后会特别小心。
就如网上说的,“每一个离谱的规定背后一定有一个更离谱的真实故事”---某校的校规为什么从“禁止男女同学之间谈恋爱”,到“禁止同学谈恋爱”,到“禁止谈恋爱”呢?
所以这个文档的最后部分是一些吐槽,针对上面一些看上去可能没必要的八股内容和建议。
所以,请礼貌些,表示出尊重和感谢。
我个人赞同所有的研究都公开代码、论文、模型、数据这些。
但是这个世界很复杂,比如,一项研究可能是某公司赞助的,而项目合同规定知识产权(IP)归公司所有,所以研究人员是没有权限公开或共享这些IP的。
所以简洁很重要。现在审稿系统都有TL;DR了(toolong;didn'tread)啊!
你现在可能感觉把还没发布的论文发给他人是很正常的。没错,很正常。
可是,如果你像我这样,遇到过三次以上论文被“洗稿”的不幸事件,那之后你的选择会改变吗?
有听说过因为使用了别人开源的代码出现bug,竟然向开源方索赔的事情吗?
所以啊,菩提祖师在收孙悟空之前,难道吃过苦头?
SIFT(scaleinvariantfeaturetransform)就是一个例子。对于研究、学术等性质的使用,可以免费使用SIFT作者提供的可执行文件。
但是,如果需要商用的话,人家UBC申请了专利,是要交钱的。
所以,在邮件中清楚说明代码将会怎么使用,在有些情况下还是很重要的。
在写信给作者索要之前,需要先做做功课。
作者是否已经在(例如github)上开源了?是否已经在其主页提供下载了?是否已经明确说明了提供代码需要满足的前置条件?
如果什么功课都没做(其实这些功课做起来非常容易),那么作者看到信的时候,心情可能就不那么美好了。
这里有一个例子。以前在新加坡的时候,课上有一个学生写邮件要求讨论:
那就算了,不用讨论了。
又比如作者提供了一个下载链接,有效期是7天。你一个月以后才去下载,然后又跑去和作者抱怨下不了,那作者会怎么看?
Takehomemessage:
怎样从别人那里要求获得代码/论文/模型/数据?
礼貌、真诚、简洁的表达意愿从对方的角度出发思考,表达对其工作的赞赏,打消对方可能的疑虑。其实很简单,就这样。
(本来有挺多东西想说的,不知道为什么,突然没有任何动力写了,所以草草鸽了。)(累了,就这样吧。)