2012-04-16 14 views
9

OpenNLP'nin NameFinder API örneğini kullanıyorum. Tutulma içine 'belgeleri' Bu getirdiklerinde ('belge' değil) değişken bana değişken bildiren bir hata veriyor BununlaOpenNLP İsim Bulucu

for (String document[][] : documents) { 

    for (String[] sentence : document) { 
    Span nameSpans[] = nameFinder.find(sentence); 
    // do something with the names 
    } 

    nameFinder.clearAdaptiveData() 
} 

: Adı Finder başlatılırken sonra dokümantasyon giriş metin için aşağıdaki kodu kullanır dokümanlar çözülemez. 'Belgeler' dizi değişkenine atıfta bulunan dokümantasyon nedir? Bu hatayı gidermek için txt dosyalarını tutan 'belgeler' dizisini başlatmam gerekiyor mu?

Yardımlarınız için teşekkür ederiz.

cevap

16

OpenNLP documentation, giriş metninin belgelere, cümlelere ve simgelere bölünmesi gerektiğini belirtir. Sağladığınız kod parçası, birkaç belgeyle nasıl baş edeceğinizi gösterir.

Yalnızca bir belgeniz varsa, yalnızca bir dizi belirteç dizisinden oluşan bir cümle dizisine sahip ilk iç kısma ihtiyacınız yoktur.

Bir belgeden bir dizi cümle oluşturmak için OpenNLP SentenceDetector'ı kullanabilirsiniz ve her bir cümle için jeton dizisini almak için OpenNLP Tokenizer'ı kullanabilirsiniz.

Kodunuz aşağıdaki gibi görünecektir:

// somehow get the contents from the txt file 
//  and populate a string called documentStr 

String sentences[] = sentenceDetector.sentDetect(documentStr); 
for (String sentence : sentences) { 
    String tokens[] = tokenizer.tokenize(sentence); 
    Span nameSpans[] = nameFinder.find(tokens); 
    // do something with the names 
    System.out.println("Found entity: " + Arrays.toString(Span.spansToStrings(nameSpans, tokens))); 
} 

Sen OpenNLP documentation belgelerinden SentenceDetector ve dizgeciklerini nasıl kullanılacağını öğrenebilirsiniz.

+0

Cevabınız için teşekkür ederiz! Bunu hala taktım ama hatayı alıyorum: "Tür uyuşmazlığı: String türünden String []" türüne dönüştürülemez ve cümle değişkeni satır 5'de hata veriyor: (String [] cümlesi: cümleler) { – Chris

+0

Evet, orada bir hataydı. Sadece [] 'dan çıkarmak için (String cümlesi []: cümleleri). Teşekkür ederim. – wcolen

+0

wcolen, yardımlarınız için teşekkürler. Ben dizi sözdizimi [] sildiğim tek sorun şu anda cümle bana kaynaklanıyor çünkü bulma yöntemi argüman olarak bir dizi alır, bu yüzden cümle çalışmıyor: Span nameSpans [] = nameFinder.find (cümle); – Chris