Python 如何在NLTK中使用Stanford RegexNER?

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提供了一个

我知道如何在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提供了一个例子


然而,我找不到任何来源来解释我们如何在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 python
default.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不是基于正则表达式的。。。