Python 在将文本传递到Stanford NER tagger之前,需要采取哪些预处理步骤?
最初,我遵循了预处理步骤,如停止单词删除、HTML剥离、删除标点符号。然而,当我不这样做时,NER似乎表现得更好。有人能告诉我要遵循哪些预处理步骤吗?斯坦福德纳唯一需要的是干净的文本,我的意思是,没有HTML或任何其他类型的文档元标记。此外,您不应该删除停止词,这些词可能有助于模型决定给某个词添加哪个标签 只需创建一个包含干净文本的文件:Python 在将文本传递到Stanford NER tagger之前,需要采取哪些预处理步骤?,python,nlp,stanford-nlp,Python,Nlp,Stanford Nlp,最初,我遵循了预处理步骤,如停止单词删除、HTML剥离、删除标点符号。然而,当我不这样做时,NER似乎表现得更好。有人能告诉我要遵循哪些预处理步骤吗?斯坦福德纳唯一需要的是干净的文本,我的意思是,没有HTML或任何其他类型的文档元标记。此外,您不应该删除停止词,这些词可能有助于模型决定给某个词添加哪个标签 只需创建一个包含干净文本的文件: echo "Switzerland, Davos 2018: Soros accuses Trump of wanting a 'mafia state' a
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\u 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
正如您所见,您甚至不需要处理标记化(例如,在句子中查找每个唯一的标记/单词),Stanforder会为您这样做
另一个有用的功能是将Stanforder设置为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.
telnet 127.0.0.1 9191
正在尝试127.0.0.1。。。
已连接到本地主机。
转义字符为“^]”。
瑞士,2018年达沃斯:索罗斯指责特朗普想要一个“黑手党国家”,并抨击社交媒体。
瑞士,2018年达沃斯:索罗斯指责特朗普想要一个“黑手党国家”,并抨击社交媒体。
连接被外部主机关闭。