yhcc

Results 174 comments of yhcc

现在好了,之前下载服务器出了点问题~

非常抱歉,这个问题目前解决起来比较麻烦。目前可能最好的办法就是不要使用no_create_entry_dataset, 对于上线的模型来说,这个参数实际上没有什么意义。

可能有点困难,flair embedding感觉在效率上有一些吃亏。感谢你的提醒,我们最近研究下最新的flair是否有可能融合进来。

我们在18年启动fastNLP的时候,参考了很多优秀的NLP开源框架,当然也包括了allennlp。在数据集的设计上,由于使用的方便性,大部分NLP框架都采用了这种tubular的设计方式,但总体来说,fastNLP的设计更偏向于将DataSet作为一个用户可以自由发挥的容器,而allennlp则更偏向于将DataSet做为一种开箱即用的工具。近一两年,由于数据集规模的扩大,也有一些更加开源框架会采用更加高效的方式管理数据集,例如PyArrow等,fastNLP目前也有支持这类方式的计划。 allennlp对比fastNLP是有以下非常明显的优势的 (1)allennlp实现的模型非常多(现移动到了allennlp-models下面),并且有比较好的开箱即用的API可以调用。(不过这一些model基本都需要按照allennlp的方式调用,并且基本都是英文为主的,中文的话应该也不能完全开箱即用) (2)充分考虑了predict需求,allennlp实现了不少用模型的开箱即用的predict方法。(不过这些模型与处理方式多是用在英文上的,可能也并不能直接使用到中文上来) (3)allennlp实现了通过配置文件启动,这种方式在工业界场景下,应该还是有一定优势的。(不过配置文件使用带来的弊端就是可能用户并不了解其中的细节,当这个可能也可以算成优点,即用户可以不关心具体技术细节) (4)allennlp的社区明显还是要大于fastNLP的,因此代码的健壮性、相关周边配套包会比fastNLP好很多。(fastNLP由于一直缺少来自于大量用户,特别是工业界用户的真实需求,所以整个迭代速度还是比allennlp慢了很多) 但我自己做为开发者,我还是更倾向于使用fastNLP一些,理由如下 (1)allennlp的包有着非常优秀的软件设计,但这种设计也使得充分阅读并改动allennlp变得比较困难,这种感觉在您阅读allennlp的代码之后应该会有一定的感受。相较而言,fastNLP则希望让一切都简单一些,尽量避免太多层的抽象,阅读和修改起来会比较容易。 (2)fastNLP的各个部分相对耦合较轻,数据处理可以单独用来实现index、padding等(可以不使用fastNLP的训练组件等)、训练Trainer可以使用非fastNLP的数据处理或模型(不过可能需要实现特定的Metric),allennnlp相对来说这些部件的耦合更紧一些,基本是全套都需要使用allennlp。 (3)最重要的优点大概是fastNLP是中文文档,中文注释,开发者也可以完全使用中文交流。allennlp尽管非常强大,但是如果没有充分阅读其代码以及文档(全部都是英文的,对从业者英语要求还是不低的),实际上很多功能也无法比较清楚地理解。 最后,邱锡鹏老师做为fastNLP的发起人,应该还会在NLP行业从业很多年,所以fastNLP在未来很长一段时间都会得到邱老师的继续支持。非常欢迎你们加入我们,和我们一起把中文社区的NLP框架做得更好。

抱歉,这是一个错误的文档说明。 目前只能通过自己写一下读取embedding的方式,我们最近会开发一下直接读取整个embedding的代码。

从报错来看是由于网络中存在ReLu,并且在设置了其inplace=True,你可以检查下网络中有这个问题么?另外,在device='cpu'的情况下可以运行嘛?或者报错是什么,有可能cuda场景下,真正出错的地方不是raise的地方。

CheckPointCallback不是实现将自己存储的model进行继续训练的,CheckPointCallback是需要在第一次运行的时候就加入到callback中,假设训练过程意外退出,可以直接重新run整个代码,CheckPointCallback会去加载保存的Checkpointer。在你的场景下,你可以直接load这个best_BiLSTMCRF_f_2021-07-06-12-14-12-018221模型,然后放入到trainer中继续train就好了。

我们目前没有直接分词的参考例子,我们之后补充一下。分词的话,推荐我们开发的fastHan www.github.com/fastnlp/fastHan .

推荐使用读取一条处理一条的方式吧。不过这种方式目前我们的pipe还不支持,需要您参考相应代码自己实现一下。

evaluate一直为0这个,建议你先只用10个sample(请保证这10个中一定至少包含一个entity哈,否则F1用于都是0),然后在这个10个上train,也在这10个上evaluate,看看能不能overfit这10个数据。同一个字符每次不一样,应该是由于dropout的原因,通过module.eval()设置成evaluate模式关掉dropout应该就是一致的了。