首页 > 解决方案 > 如何使用斯坦福图书馆训练我自己的 NER 模型?

问题描述

我一直受到数百封有关旅行信息的电子邮件的困扰。我的工作之一是将电子邮件中的一些信息保存到系统数据库中。
我的计划是让这一切自动发生,这就是我开始研究 StanfordNER 和 IE 的原因。

我们开始吧,
这是我的电子邮件示例。它不是一个句子,甚至包含一些代码。

示例电子邮件

NO. PETER 17 HIGHSCHOOL/2TH/OPEN
LONDON,ENGLAND STY 12-13TH JUNE

NO. JAKE 12 HIGHSCHOOL/OPEN
LIVERPOOL,ENGLAND 12,13 JUNE

我只需要这些名称、位置和日期所以我制作了我的 tsv

虚拟 vess-corpus.tsv

NO  O
.   O
PETER   PERSON
JAKE    PERSON
17  O
12  O
HIGHSCHOOL  O
2TH O
OPEN    O
LONDON  CITY
LIVERPOOL   CITY
ENGLAND COUNTRY
12-13TH DATE
12  DATE
13  DATE
JUNE    MONTH

道具.txt

trainFile = train/dummy-vess-corpus.tsv
serializeTo = dummy-ner-model-vess.ser.gz
map = word=0,answer=1

useClassFeature=true
useWord=true
useNGrams=true
noMidNGrams=true
maxNGramLeng=6
usePrev=true
useNext=true
useSequences=true
usePrevSequences=true
maxLeft=1
useTypeSeqs=true
useTypeSeqs2=true
useTypeySequences=true
wordShape=chris2useLC
useDisjunctive=true

构建模型cmd

java -cp "stanford-ner.jar:lib/*" -mx4g edu.stanford.nlp.ie.crf.CRFClassifier -prop train/prop.txt

输出

[('NO', 'O'), ('.', 'O'), ('PETER', 'O'), ('17', 'O'), 
('HIGHSCHOOL2THOPEN', 'O'), ('LONDON', 'CITY'), (',', 'CITY'), 
('ENGLAND','COUNTRY'), ('STY', 'DATE'), ('12-13TH', 'DATE'), ('JUNE', 'MONTH'), 
('NO', 'O'), ('.', 'O'), ('JAKE', 'O'), ('12', 'O'), ('HIGHSCHOOLOPEN', 'O'), 
('LIVERPOOL', 'O'), (',', 'O'), ('ENGLAND', 'COUNTRY'), ('12,13', 'DATE'), ('JUNE', 'MONTH')]

它根本不起作用。我一直在寻找goole来找出训练的方式,但我只能找到简单的例子......

标签: nlpstanford-nlpnamed-entity-recognition

解决方案


对于 dummy-vess-corpus.tsv 文件中的每一行,您必须选择以下注释器之一。

location
time
organization
percent
money
person
date

例如 dummy-vess-corpus.tsv 文件应该是这样的;

NO  O
.   O
PETER   person
JAKE    person
LONDON  location

如果要添加新的注释器,可以查看此链接


推荐阅读