Nlp için yeni, Bir metinden (NP) tümceyi ayıklamak için stanford ayrıştırıcısını kullanmaya çalışıyorum, etiketlendiğinde (NP) metnin bölümlerini almak istiyorum (NP)çıkış ayrıştırmasını ağacından ayıklanıyor Ağacı
Eğer bir parça etiketlenmişse (NP) ve içindeki daha küçük bir parça da etiketlenmişse (NP) daha küçük parçayı almak istiyorum. Ben ne zaman aşağıdaki
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;
}
Bu yöntemin dönüş türü, ağaçların bir listesi::
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));}
şu ana kadar aşağıdaki yönteminde ne istediğini yapmak başardı geçerli:
tree #0: (NP (NN club) (NN barcelona))
Ben etiketleri olmadan, ben trie, hemen çıkış "club barcelona"
olmak istiyorum d .labels();
mülkiyet ve .label().value();
onlar etiketleri döndürmek yerine
tr.yield()
Sen Cümle içinde kolaylık yöntemleri ile sadece dize forma o dönüştürebilirsiniz bir alt ağacı tr altında kelimelerin bir listesini alabilirsiniz