将实体添加到斯坦福 NLP NER 分类器



我有一个非常简单的方法可以从字符串中提取名称,组织和位置。我正在使用用于斯坦福NLP的.NET Nuget库。它看起来像这样。

CRFClassifier Classifier = CRFClassifier.getClassifier(StanfordNLPConfig.NER.ClassifierModel);
List<IndexViewModel> ivms = new List<IndexViewModel>();
try
{
foreach (List sentence in Classifier.classify(content).toArray())
{
NLPTranslator translator = new NLPTranslator();
ivms.AddRange(translator.NERTranslate(sentence));
}
}
catch (Exception ex)
{
throw ex;
// Error silently
}
return ivms;

该模型是它附带的 3class jar 文件 - english.all.3class.distsim.crf.ser.gz。

这对我来说效果非常好,但我想做的是与模型接口,以便能够在需要时添加我自己的实体,这似乎非常以美国为中心,我希望能够放置我自己的英国公司、地点等。

有什么方法可以添加这些实体,因为我一直在阅读有关训练它的信息,但您可能无法扩展模型,如果是这种情况,我可以组合分类器并通过英国/美国分类器运行它等。如果可能的话,我如何实际创建自己的分类器,因为如果可能的话,我想在 .NET 中制作这些分类器。

如果要更改模型的工作方式,则需要提供训练数据并训练自己的模型。出于许可原因,斯坦福大学不会分发公共模型训练的数据,但您可以使用相同的功能。

您可以在此处阅读有关如何训练模型的信息,但不幸的是,说明的第一句话是这样的:

用于训练您自己的分类器的文档介于糟糕和不存在之间。

如果这是您第一次使用CRF,那么需要学习很多东西,但这是可管理的。查看其他软件包(如 CRFSuite 和 CRF++(的文档可能会有所帮助 - 它们通常都使用基本相同的训练数据格式,并且在许多方面相似。

另请注意,现有模型不能仅通过新输入来训练它们来扩展,系统只是不是这样设置的。

最新更新