Python 如何在NLTK中使用Stanford RegexNER?
我知道如何在NLTK中借助Stanford提取名称实体Python 如何在NLTK中使用Stanford RegexNER?,python,nltk,stanford-nlp,Python,Nltk,Stanford Nlp,我知道如何在NLTK中借助Stanford提取名称实体 from nltk.tag import StanfordNERTagger st = StanfordNERTagger('english.all.3class.distsim.crf.ser.gz') st.tag('Rami Eid is studying at Stony Brook University in NY'.split()) 但是,我也需要应用RegexNER。它在Java中的应用很简单,Stanford提供了一个
from nltk.tag import StanfordNERTagger
st = StanfordNERTagger('english.all.3class.distsim.crf.ser.gz')
st.tag('Rami Eid is studying at Stony Brook University in NY'.split())
但是,我也需要应用RegexNER。它在Java中的应用很简单,Stanford提供了一个例子
然而,我找不到任何来源来解释我们如何在NLTK中使用它。如果您能分享您的想法和意见,我将不胜感激。我认为您应该使用NERClassifierCombiner来实现完整的功能,您可以尝试使用下面的示例代码来指定regexner
class NERComboTagger(StanfordNERTagger):
def __init__(self, *args, **kwargs):
self.stanford_ner_models = kwargs['stanford_ner_models']
kwargs.pop("stanford_ner_models")
super(NERComboTagger,self).__init__(*args, **kwargs)
@property
def _cmd(self):
return ['edu.stanford.nlp.ie.NERClassifierCombiner',
'-ner.model',
self.stanford_ner_models,
'-textFile',
self._input_file_path,
# '-outputFormat',
# self._FORMAT,
'-ner.applyNumericClassifiers',
'true',
# '-ner.useSUTime',
# 'false',
'-regexner.mapping',
'edu/stanford/nlp/models/kbp/cn_regexner_mapping.tab',
'-regexner.validpospattern',
'^(NR|NN|JJ).*',
'-regexner.ignorecase',
'true']
据我所知,在Java(即Python)之外访问Stanford CoreNLP
RegexNER
Java类的唯一方法之一是通过以下GitHub repo:
见我的描述,这里:
基本上,编辑stanford corenlp pythondefault.properties
文件,启用regexner模块并指定自定义命名实体文件的路径:
annotators = tokenize, ssplit, pos, lemma, ner, parse, dcoref, regexner
# regexner.mapping = path_to_entities_file, e.g.
regexner.mapping = /home/victoria/projects/ie/entities.txt
您还需要编辑stanford corenlp python
corenlp.py
文件,更新本地下载的stanford corenlp*.jar文件的路径…stanford NER不是基于正则表达式的。。。