मैं प्राकृतिक भाषा पार्स पेड़ों के साथ खेल रहा हूं और उन्हें विभिन्न तरीकों से जोड़ रहा हूं। मैं स्टैनफोर्ड के ट्रेगेक्स और Tsurgeon उपकरण का उपयोग कर रहा हूं, लेकिन कोड एक गड़बड़ है और मेरे ज्यादातर पायथन पर्यावरण के साथ फिट नहीं है (वे उपकरण जावा हैं और tweaking के लिए आदर्श नहीं हैं)। मैं एक टूलसेट चाहता हूं जो मुझे अधिक कार्यक्षमता की आवश्यकता होने पर आसान हैकिंग की अनुमति देगा। क्या ऐसे कोई अन्य उपकरण हैं जो पेड़ों पर पैटर्न पैटर्न करने के लिए उपयुक्त हैं और फिर उन मिलान वाली शाखाओं में हेरफेर करते हैं?मैं पार्स पेड़ों में हेरफेर कैसे करूं?
उदाहरण के लिए, मैं इनपुट के रूप में निम्नलिखित पेड़ उठाना चाहते हैं:
(ROOT
(S
(NP
(NP (NNP Bank))
(PP (IN of)
(NP (NNP America))))
(VP (VBD used)
(S
(VP (TO to)
(VP (VB be)
(VP (VBN called)
(NP
(NP (NNP Bank))
(PP (IN of)
(NP (NNP Italy)))))))))))
और (यह एक सरल उदाहरण है):
- लेबल एनपी है के साथ किसी भी नोड का पता लगाएं लेबल एनपी और कुछ वंशज "बैंक" नामक पहला बच्चा, और लेबल पीपी वाला दूसरा बच्चा।
- यदि वह मेल खाता है, तो पीपी नोड के सभी बच्चों को ले जाएं और उन्हें मिलान किए गए एनपी के बच्चों के अंत में ले जाएं।
उदाहरण के लिए, पेड़ के इस भाग लेते हैं:
(NP
(NP (NNP Bank))
(PP (IN of)
(NP (NNP America))))
और यह इस में बदल जाते हैं:
(NP
(NP (NNP Bank) (IN of) (NP (NNP America))))
चूंकि मेरे इनपुट पेड़ एस भाव मैं लिस्प का उपयोग कर रहे हैं पर विचार किया है (मेरे पायथन कार्यक्रम में एम्बेडेड) लेकिन यह इतना लंबा रहा है कि मैंने लिस्प में कुछ भी महत्वपूर्ण लिखा है कि मुझे नहीं पता कि कहां से शुरू करना है।
पैटर्न का वर्णन करने का एक अच्छा तरीका क्या होगा? हेरफेर का वर्णन करने का एक अच्छा तरीका क्या होगा? इस समस्या के बारे में सोचने का एक अच्छा तरीका क्या है?
क्या एसपी पेड़ रेगेक्स का उपयोग करने के लिए कोई दस्तावेज है? या javadocs अब तक एकमात्र दस्तावेज हैं? – sholsapp
आह, हैलो प्रोफेसर मैनिंग, कंक्रीट कारण प्रदान किए बिना आपके काम की आलोचना करने के लिए खेद है। मैं कोड पर हैक करना चाहता हूं लेकिन मुझे अमूर्तता की एक छोटी परत जोड़ने के लिए 100,000 लाइनों को थोड़ा मुश्किल लग रहा है। मैं ट्रेगेक्स/टर्जन के अस्तित्व के लिए बहुत आभारी हूं। मैं सिर्फ उत्सुक हूं अगर एक डीएसएल कुछ ऐसा कर रहा है तो उसे और अधिक संक्षेप में लिखा जा सकता है। अभी भी जावा <-> पायथन इंटरैक्शन की समस्या है जिसे मैंने असंतुष्ट तरीके से हल किया है, लेकिन यह काम करता है (कुछ हद तक)। – guidoism
@gnucom: मैं स्वीकार करूंगा कि दस्तावेज़ीकरण बेहतर/अधिक व्यापक हो सकता है। लेकिन कुछ अन्य संसाधन हैं। पीपीटी स्लाइड्स http://nlp.stanford.edu/software/tregex/The_Wonderful_World_of_Tregex.ppt ट्रेगेक्स पैटर्न के लिए एक परिचय के लिए जाने के लिए सबसे अच्छी जगह है। जीयूआई आवेदन में उपयोगी सहायता स्क्रीन हैं। अधिक के लिए, देखें: http://nlp.stanford.edu/software/tregex-faq.shtml#b। –