2010-06-04 8 views
6

से नाम और क्रियाएं निकालने में मुझे आश्चर्य हुआ कि क्या आर पैकेज को ओपनएनएलपी में अलग-अलग संज्ञाएं, क्रियाएं निकालना संभव है? मैं टैगपॉस फ़ंक्शन का उपयोग करता हूं जो वाक्य को टैग करता है लेकिन अगर मैं क्रियाओं को अलग करना चाहता हूं, तो संज्ञाएं अलग-अलग करें।टेक्स्ट

उत्तर

9

एक उदाहरण का उपयोग करना: (के रूप में/VBX, किसी भी एक वर्ण जहां एक्स है टैग किए गए शब्दों को निकालने के लिए इस है)

library("openNLP") 

acq <- "Gulf Applied Technologies Inc said it sold its subsidiaries engaged in pipeline and terminal operations for 12.2 mln dlrs. The company said the sale is subject to certain post closing adjustments, which it did not explain. Reuter." 

acqTag <- tagPOS(acq) 

sapply(strsplit(acqTag,"[[:punct:]]*/VB.?"),function(x) sub("(^.*\\s)(\\w+$)", "\\2", x)) 

    [,1]       
[1,] "said"       
[2,] "sold"       
[3,] "engaged"      
[4,] "said"       
[5,] "is"       
[6,] "did"       
[7,] " not/RB explain./NN Reuter./." 

ठीक है, मेरे रेगुलर एक्सप्रेशन के क्रम में कुछ सुधार की जरूरत है अंतिम पंक्ति से छुटकारा पाने के नतीजतन

संपादित

एक वैकल्पिक पंक्तियों एक space चरित्र युक्त

sapply(strsplit(acqTag,"[[:punct:]]*/VB.?"),function(x) {res = sub("(^.*\\s)(\\w+$)", "\\2", x); res[!grepl("\\s",res)]}) 
+0

धन्यवाद अनदेखी करने के लिए हो सकता है! gd047 :) यह काम करता है ... मैं लगभग निकालने के लिए sapply का उपयोग करने के कगार पर था, लेकिन यह कैसे करने के लिए एक रास्ता नहीं मिल सका। धन्यवाद। –