2010-06-04 17 views

Odpowiedz

9

Korzystanie przykład: (jest to, aby wyodrębnić słowa oznaczone jako/VBX, gdzie X oznacza dowolny pojedynczy znak)

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./." 

Ok, mój wyrażenie regularne wymaga poprawy, aby pozbyć się ostatniej linii w wyniku.

EDIT

Alternatywą może być ignorowanie wierszy zawierających space bohater

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

Dzięki! gd047 :) działa ... Byłem prawie na granicy użycia sapply do wydobywania, ale nie mogłem uzyskać sposobu, jak to zrobić. Dzięki. –

Powiązane problemy