最初,我遵循了一些预处理步骤,例如,停止单词删除,HTML剥离,删除标点符号。但是,如果我不这样做,NER的表现似乎会更好。谁能告诉我要遵循哪些预处理步骤?
答案 0 :(得分:0)
StanfordNER唯一需要的就是干净的文本,我的意思是干净的文本,没有HTML或任何其他类型的文档元标记。另外,您不应该删除停用词,这些停用词可能对模型决定给哪个词赋予标签很有用。
只有一个包含纯文本的文件:
echo "Switzerland, Davos 2018: Soros accuses Trump of wanting a 'mafia state' and blasts social media." > test_file.txt
然后,您将调用stanford-ner.jar并将其传递给经过训练的模型,例如:classifiers/english.all.3class.distsim.crf.ser.gz
和输入文件,例如:test_file.txt
赞:
java -cp stanford-ner-2017-06-09/stanford-ner.jar edu.stanford.nlp.ie.crf.CRFClassifier -loadClassifier classifiers/english.all.3class.distsim.crf.ser.gz -textFile test_file.txt -outputFormat inlineXML
这应该输出如下内容:
Switzerland LOCATION
, O
Davos PERSON
2018 O
: O
Soros PERSON
accuses O
Trump PERSON
of O
wanting O
a O
` O
mafia O
state O
' O
and O
blasts O
social O
media O
. O
如您所见,您甚至不需要处理令牌化(例如,在句子中找到每个唯一的令牌/单词),StanfordNER会为您完成。
另一个有用的功能是将StanfordNER设置为Web服务:
java -mx2g -cp stanford-ner-2017-06-09/stanford-ner.jar edu.stanford.nlp.ie.NERServer -loadClassifier my_model.ser.gz -textFile -port 9191 -outputFormat inlineXML
然后,您可以简单地通过telnet或发布句子,然后将其取回来:
telnet 127.0.0.1 9191
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Switzerland, Davos 2018: Soros accuses Trump of wanting a 'mafia state' and blasts social media.
<LOCATION>Switzerland</LOCATION>, <PERSON>Davos</PERSON> 2018: <PERSON>Soros</PERSON> accuses <PERSON>Trump</PERSON> of wanting a 'mafia state' and blasts social media.
Connection closed by foreign host.