Mallet CRF SimpleTagger 性能调优

对于使用过Java库Mallet的SimpleTagger类进行条件随机场(CRF)的人有一个问题。假设我已经使用了多线程选项以最大限度地利用我可用的CPU数量(这是我的情况):我应该从哪里开始,如果我需要它运行得更快,我应该尝试哪些方法?

一个相关的问题是,是否有类似于随机梯度下降的方法,可以加速训练过程?

我想进行的训练类型很简单:

输入:特征1 ... 特征N 序列标签...测试数据:特征1 ... 特征N...输出:特征1 ... 特征N 序列标签...

(其中特征是我在自己的代码中对数据进行处理后的输出。)

除了Mallet之外,我在使用其他CRF分类器时遇到了问题,但我可能需要重新考虑并重新审视其他实现,或者尝试一个新的。


回答:

是的,随机梯度下降通常比Mallet中使用的L-BFGS优化器快得多。我建议你尝试CRFSuite,你可以使用SGD或L-BFGS进行训练。你也可以尝试Léon Bottou的基于SGD的实现,但这设置起来更困难。

否则,我认为CRF++是使用最广泛的CRF软件。它基于L-BFGS,所以可能对你来说不够快。

CRFSuite和CRF++都应该很容易上手。

请注意,如果你有大量的标签,所有这些都会很慢。至少CRFSuite可以配置为仅考虑观察到的标签n元组 – 在(n-1)阶模型中 – 这通常会使训练和预测快得多。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注