2016-12-17 48 views
3

我目前使用spacy来遍历依赖关系树,并生成实体。Java中的Spacy Alternatives

nlp = get_spacy_model(detect_lang(unicode_text)) 
doc = nlp(unicode_text) 

entities = set() 
for sentence in doc.sents: 

    # traverse tree picking up entities 
    for token in sentence.subtree: 
    ## pick entitites using some pre-defined rules 

entities.discard('') 
return entities 

Spacy是否有很好的Java替代品?

我正在寻找像Spacy那样生成依赖树的库。

编辑:

我看着斯坦福分析器 然而,它生成以下分析树:

     ROOT 
         | 
         NP 
     _______________|_________ 
     |       NP 
     |    _________|___ 
     |    |    PP 
     |    |  ________|___ 
     NP    NP |   NP 
    ____|__________  | |  _______|____ 
DT JJ JJ NN NNS IN DT  JJ NN 
| |  | | | | |  | | 
the quick brown fox jumps over the  lazy dog 

不过,我期待一个树状结构Spacy作用:

       jumps_VBZ 
    __________________________|___________________ 
    |  |  |   |  |   over_IN 
    |  |  |   |  |   | 
    |  |  |   |  |   dog_NN 
    |  |  |   |  |  _______|_______ 
The_DT quick_JJ brown_JJ fox_NN ._. the_DT   lazy_JJ 

回答

1

您正在寻找Stanford Dependency Parser。与大多数斯坦福工具一样,这也与Stanford CoreNLP捆绑在depparse注释器下。其他解析器包括Malt parser(一种基于特征的移位缩减解析器)和Ryan McDonald的MST parser(准确但速度较慢的最大生成树解析器)。

+0

是的,并使用我得到了上述树^^。但是,我需要一些帮助来解释这些内容,并且找不到任何文档。 Spacy通过标记单词使其非常容易,因此遍历Spacy中的树实际上是遍历句子。而斯坦福分析器的依赖不是基于字的依赖关系。你能指点我一些文档,所以我可以将斯坦福解析器树转换成Spacy生成的东西? – vin

+0

斯坦福既有[选区分析器](http://nlp.stanford.edu/software/lex-parser.shtml)和[依赖分析器](http://nlp.stanford.edu/software/nndep.shtml )。令人困惑的是,选区解析器也可以转换为依赖关系解析。 Spacy的解析器输出依赖关系解析,而你目前正在尝试使用CoreNLP的选区解析器。请参阅:http://stanfordnlp.github.io/CoreNLP/depparse.html(尝试从一个句子的'BasicDependenciesAnnotation'注释中获得'SemanticGraph'对象) –

+1

您也可以尝试使用[Simple API](http:///stanfordnlp.github.io/CoreNLP/simple.html),它将在内部使用依赖解析器。 –