如何用Standford库训练我自己的NER模型?

时间:2018-05-28 10:20:09

标签: nlp stanford-nlp ner

我一直在遭遇关于旅游信息的电子邮件。我的一项工作是将电子邮件中的一些信息保存到系统数据库中 我的计划是让这种情况自动发生,这就是我开始研究斯坦福纳和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

prop.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来找出训练方式,但我只能找到简单的例子......

任何人帮助我。

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

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

location
time
organization
percent
money
person
date

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

NO  O
.   O
PETER   person
JAKE    person
LONDON  location

如果您想添加新的注释器,可以查看此link