Sono nuovo di nlp, sto cercando di usare stanford parser per estrarre la frase (NP) da un testo, voglio recuperare le parti del testo dove è taggato (NP)Estrazione del testo dall'analisi di output Albero
se una parte è codificata (NP) e una parte più piccola al suo interno viene anche etichettata (NP) Voglio prendere la parte più piccola.
fino ad ora sono riuscito a fare quello che volevo nel seguente metodo:
private static ArrayList<Tree> extract(Tree t)
{
ArrayList<Tree> wanted = new ArrayList<Tree>();
if (t.label().value().equals("NP"))
{
wanted.add(t);
for (Tree child : t.children())
{
ArrayList<Tree> temp = new ArrayList<Tree>();
temp=extract(child);
if(temp.size()>0)
{
int o=-1;
o=wanted.indexOf(t);
if(o!=-1)
wanted.remove(o);
}
wanted.addAll(temp);
}
}
else
for (Tree child : t.children())
wanted.addAll(extract(child));
return wanted;
}
Il tipo di ritorno di questo metodo è un elenco di alberi, Quando faccio la seguente:
LexicalizedParser parser = LexicalizedParser.loadModel();
x = parser.apply("Who owns club barcelona?");
outs=extract(x);
for(int i=0;i<outs.size();i++){System.out.println("tree #"+i+": "+outs.get(i));}
è:
tree #0: (NP (NN club) (NN barcelona))
voglio l'uscita di essere "club barcelona"
subito, senza i tag, ho trie d la proprietà .labels();
e .label().value();
tornano i tag invece