2011-03-27 12 views
7

मेरे काम में एक वाक्य खोजने में noun+verb हो सकता है, फिर ऑब्जेक्ट निकालें।स्टैनफोर्ड पार्सर: निर्भरताओं को निकालने के लिए कैसे?

उदाहरण: "coding is sometimes a tough work." मेरी क्वेरी होगी: "coding is"

टाइप किया निर्भरता मैं प्राप्त कर रहे हैं:

nsubj(work-6, coding-1) 
cop(work-6, is-2)  
advmod(work-6, sometimes-3) 
det(work-6, a-4) 
amod(work-6, tough-5) 

मेरे कार्यक्रम, nsubj निर्भरता को निकालने के प्रश्न के रूप में "coding" की पहचान करने और "work" बचाने चाहिए।

यह आसान लगता है, लेकिन अब तक, मुझे एक विशिष्ट टाइप की निर्भरता निकालने में सक्षम कोई विधि नहीं मिली है, और मुझे वास्तव में अपना काम पूरा करने के लिए इसकी आवश्यकता है।

किसी भी मदद का स्वागत है,

+0

कौन सा प्रोग्रामिंग भाषा का प्रयोग कर रहे? – Kaarel

+0

मैं जावा का उपयोग कर रहा हूं, लेकिन इस पुरानी टिप्पणी के लिए मुझे समाधान मिल गया, मैंने स्ट्रिंगटोकोनिज़र 2 बार "(" विभाजक के रूप में, फिर बुद्धि "के साथ प्रयोग किया।" अंततः मैंने एक्सएमएल फाइल में निकाले गए टोकन डाल दिए। –

उत्तर

1

मैं वहाँ एक रास्ता दिए गए शब्द के आसपास निर्भरता को निकालने के लिए पार्सर बताने के लिए है नहीं लगता। हालांकि, आप केवल nsubj संबंध में क्वेरी शब्द प्रकट होने वाले सभी उदाहरणों की खोज करते हुए, प्रत्येक वाक्य के लिए निर्भरताओं की सूची के माध्यम से चला सकते हैं।

इसके अलावा, आप वाक्यों के पारियों को कैसे संग्रहीत कर रहे हैं? यदि (जैसा कि मैं आपके प्रश्न से इकट्ठा करता हूं) यह एक टेक्स्ट फ़ाइल में है, तो आप संबंधित अन्य शब्दों की सूची प्राप्त करने के लिए केवल 2 लगातार ग्रिप्स, क्वेरी शब्द के लिए एक और एक रिश्ते के लिए उपयोग कर सकते हैं।

10

आप नीचे दिए गए कोड से निर्भरता पा सकते हैं:

Tree tree = sentence.get(TreeAnnotation.class); 
// Get dependency tree 
TreebankLanguagePack tlp = new PennTreebankLanguagePack(); 
GrammaticalStructureFactory gsf = tlp.grammaticalStructureFactory(); 
GrammaticalStructure gs = gsf.newGrammaticalStructure(tree); 
Collection<TypedDependency> td = gs.typedDependenciesCollapsed(); 
System.out.println(td); 

Object[] list = td.toArray(); 
System.out.println(list.length); 
TypedDependency typedDependency; 
for (Object object : list) { 
typedDependency = (TypedDependency) object; 
System.out.println("Depdency Name"typedDependency.dep().nodeString()+ " :: "+ "Node"+typedDependency.reln()); 
if (typedDependency.reln().getShortName().equals("something")) { 
    //your code 
} 
+0

कोड है जावा में, और इसकी अच्छी तरह से एनएलपी के डोमेन में समस्या को विशेष रूप से स्टैनफोर्ड कोर एनएलपी एपीआई में संबोधित किया गया। @Alain क्या यह समस्याओं का समाधान करने के लिए समझ में नहीं आता है? – Imran

+0

यह ठीक है, लेकिन आमतौर पर उत्तर स्वीकार किए जाते हैं और एसओ पर वोट देते हैं कोड के ब्लॉक से थोड़ा अधिक संदर्भ, भले ही कोड काफी सरल हो। शायद मूल नमूना हल करने के लिए अपने नमूना उपयोग मामले को अनुकूलित करके? किसी भी तरह से, मुझे डर है कि आपको लेखक से अधिक प्रतिक्रिया नहीं मिलेगी चूंकि प्रश्न में 2 साल में कोई गतिविधि नहीं हुई है। – Alain

संबंधित मुद्दे