2017-08-23 4 views
2

NLTKのスタンフォードの助けを借りて名前エンティティを抽出する方法を知っています。スタンフォードRegexNERをNLTKで使用するには?

ただし、RegexNERも適用する必要があります。 Javaでのアプリケーションは簡単でスタンフォードはhereの例を提供しています。

しかし、NLTKでどのように使用できるかを説明する情報源は見つかりませんでした。あなたの考えや意見を分かち合うと感謝しています。

+0

スタンフォードNERは正規表現ではありません... – alvas

答えて

0

私は完全な機能のためにNERClassifierCombinerを使うべきだと思いますが、以下のサンプルコードで正規表現を指定することができます。

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'] 
+0

NLTK = Python、Java以外... –

0

私の知る限り、Javaの(つまり、Pythonで)外にスタンフォードCoreNLP RegexNER Javaクラスにアクセスする唯一の方法の一つは、このGitHubのレポを経由する:

https://github.com/dasmith/stanford-corenlp-python

参照してください。ここに私の記述、:基本的に

https://github.com/dasmith/stanford-corenlp-python/issues/33

は、スタンフォード・corenlp-pythonのを編集しますファイル、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 

あなたはまた、あなたのローカルにダウンロードしたスタンフォード大学にあなたのパスを更新し、スタンフォード・corenlp-pythonのcorenlp.pyファイルを編集する必要がありますCoreNLP * .jarファイル...

関連する問題