如何在python中使用StanfordNLP提取丹麦语中的名词短语?

时间:2019-05-14 20:42:57

标签: python nlp nltk stanford-nlp

到目前为止,我已经在python中使用了stanfordnlp库,并且已标记化并用POS标记了文本的数据框。我现在想尝试提取名词短语。我尝试了两种不同的方法,但是两种方法都存在问题:

  1. 据我所知,stanfordnlp python库似乎没有提供NP分块的功能,至少我没有找到一种方法来做到这一点。我试过用POS标签按顺序排列所有单词的新数据框,然后检查名词是否重复。但是,这对我来说非常粗糙且非常复杂。

  2. 我已经可以使用nltk来处理英文文本,因此我也尝试在NLTK中使用Stanford CoreNLP API。我在这方面的问题是,在使用Maven设置CoreNLP时我需要一个丹麦模型(我对此非常缺乏经验)。对于本文的问题1,我一直在使用丹麦模型found here。看来这不是我要寻找的那种模型-再一次,如果我误解了这里的内容,我现在还不完全是我正在做的事。

然后我的问题是(1)是否实际上可以在python中的stanfordnlp中对NP进行分块;(2)我是否可以某种方式将stanfordnlp的POS标记+标记化+残化词分解为NLTK并进行在那里进行分块,或者(3)是否可以在丹麦语中设置CoreNLP,然后再使用NLTK使用CoreNLP API。

谢谢您,对于我在此缺乏清晰性表示歉意。

2 个答案:

答案 0 :(得分:0)

从CoreNLP提取块的方法是使用constituency parser的输出。据我所知,CoreNLP中没有任何方法可以直接为您提供块列表,但是,您可以解析选区解析器的输出,实际的字符串,并根据需要列出块。例如,对于输入语句“ I bought the book because I read good reviews about it.”,方法的输出将类似于:

<class 'list'>: 
[['NP', 'I'], 
['NP', 'the book'], 
['NP', 'I'], 
['NP', 'good reviews'],
['NP', 'it'], 
['SBAR', 'because I read good reviews about it'], 
['VP', 'bought the book because I read good reviews about it'], 
['VP', 'read good reviews about it']]

上面的输出来自我自己编写的方法,我只在此处列出了NP,VP和SBAR,但由于需要进一步测试和调试,因此尚未发布该方法。

而且,如果您仅需要名词短语,则可能还需要查看Spacy和非常快速的解决方案here。我提到的所有内容主要涉及您的第一个问题,部分涉及您的第二个问题,我不知道这些解决方案是否也适用于丹麦语。

答案 1 :(得分:0)

一些有用的信息:

1。)据我所知,Stanford CoreNLP(Java)不支持丹麦语。我们没有丹麦语支持,并且我不知道具有丹麦语模型的第三方。因此,Java代码和服务器都不会有太大帮助。虽然某处某人肯定有一些丹麦模特。我将尝试在Google上进行更多研究。

2。)我们确实对StanfordNLP(Python)代码库的标记化,词性,词条,引理和依赖项解析提供丹麦语支持。目前,我们没有任何名词短语识别软件。我们不会产生选区解析,因此我们不能仅在解析树中找到NP,而是依赖解析。我可以想象,有一些不错的技术可以根据依赖项解析或基于词性分块来提取名词短语。我们可以努力添加一些功能来帮助实现这一目标。尽管这种技术一开始可能并不完美。但是UD 2.0的精神是处理所有语言,因此这似乎是在UD 2.0语法上编写通用名词短语提取规则的完美案例,该规则随后将适用于我们在Python软件包中支持的所有70多种语言。 / p>