Pisahkan vektor teks/faktor yang diberi tag POS menjadi kalimat dengan R - regex

Tolong bantu saya untuk proyek kecil saya.

Elemen teks (faktor) memiliki kalimat (sebenarnya daftar banyak elemen teks). Teksnya diberi tag POS. Saya perlu memisahkan satu kalimat menjadi elemen terpisah.

Saya kira, saya harus mencocokkan semua "./$. ", "!/$. ", "?/$. ", dll. dengan beberapa fungsi R dan menyimpan hasilnya sebagai daftar faktor. Setiap faktor menjadi sebuah kalimat.

Contoh teks & kode:

library(stingr)

# Input vector/factor with "/$. " separated sentences

r <- c("Ich/PPER habe/VAFIN meinen/PPOSAT Berkeley/NN jetzt/ADV seit/APPR 11/CARD Jahren/NN im/APPRART fast/ADV täglichen/ADJA Einsatz/NN ./$. In/APPR der/ART Schule/NN und/KON im/APPRART Studium/NN war/VAFIN der/ART Rucksack/NN meistens/ADV bis/APPR zum/APPRART bersten/ADJA mit/APPR Büchern/NN gefüllt/VVPP ,/$, jetzt/ADV benutze/VVFIN ich/PPER das/ART gute/ADJA Stück/NN auf/APPR dem/ART Weg/NN zur/APPRART Arbeit/NN !/$. Das/ART Volumen/NN -LRB-/TRUNC 30/CARD Liter/NN -RRB-/TRUNC ist/VAFIN enorm/ADJD und/KON lässt/VVFIN sich/PRF ,/$, dank/APPR der/ART Form/NN ,/$, besonders/ADV für/APPR Bücher/NN und/KON Schreibutensilien/NN ideal/ADJD nutzen/VVINF ./$.")

# output list of vectors/factors with splited sentences as list elements
(r.listOfSent <- as.list(strsplit(as.character(r), "//$.")))
> r.sentlist
[[1]]
 [1] "Ich/PPER habe/VAFIN meinen/PPOSAT Berkeley/NN jetzt/ADV seit/APPR 11/CARD Jahren/NN im/APPRART fast/ADV täglichen/ADJA Einsatz/NN ."                                                                                                                                                                                                                      
 [2] " In/APPR der/ART Schule/NN und/KON im/APPRART Studium/NN war/VAFIN der/ART Rucksack/NN meistens/ADV bis/APPR zum/APPRART bersten/ADJA mit/APPR Büchern/NN gefüllt/VVPP ,/$, jetzt/ADV benutze/VVFIN ich/PPER das/ART gute/ADJA Stück/NN auf/APPR dem/ART Weg/NN zur/APPRART Arbeit/NN ."                                                                
 [3] " Das/ART Volumen/NN -LRB-/TRUNC 30/CARD Liter/NN -RRB-/TRUNC ist/VAFIN enorm/ADJD und/KON lässt/VVFIN sich/PRF ,/$, dank/APPR der/ART Form/NN ,/$, besonders/ADV für/APPR Bücher/NN und/KON Schreibutensilien/NN ideal/ADJD nutzen/VVINF ."

person alex    schedule 08.08.2013    source sumber


Jawaban (1)


Inikah yang kamu kejar?

# input
r <- "Ich/PPER habe/VAFIN meinen/PPOSAT Berkeley/NN jetzt/ADV seit/APPR 11/CARD Jahren/NN im/APPRART fast/ADV täglichen/ADJA Einsatz/NN ./$. In/APPR der/ART Schule/NN und/KON im/APPRART Studium/NN war/VAFIN der/ART Rucksack/NN meistens/ADV bis/APPR zum/APPRART bersten/ADJA mit/APPR Büchern/NN gefüllt/VVPP ,/$, jetzt/ADV benutze/VVFIN ich/PPER das/ART gute/ADJA Stück/NN auf/APPR dem/ART Weg/NN zur/APPRART Arbeit/NN !/$. Das/ART Volumen/NN -LRB-/TRUNC 30/CARD Liter/NN -RRB-/TRUNC ist/VAFIN enorm/ADJD und/KON lässt/VVFIN sich/PRF ,/$, dank/APPR der/ART Form/NN ,/$, besonders/ADV für/APPR Bücher/NN und/KON Schreibutensilien/NN ideal/ADJD nutzen/VVINF ./$."

# function to split sentences at commas, periods and other punctuation marks
# really we're just splitting at /$ in the string
r.listOfSent <- unlist(strsplit(r, "\\$."))

# output
[1] "Ich/PPER habe/VAFIN meinen/PPOSAT Berkeley/NN jetzt/ADV seit/APPR 11/CARD Jahren/NN im/APPRART fast/ADV täglichen/ADJA Einsatz/NN ./"                                      
[2] " In/APPR der/ART Schule/NN und/KON im/APPRART Studium/NN war/VAFIN der/ART Rucksack/NN meistens/ADV bis/APPR zum/APPRART bersten/ADJA mit/APPR Büchern/NN gefüllt/VVPP ,/"
[3] " jetzt/ADV benutze/VVFIN ich/PPER das/ART gute/ADJA Stück/NN auf/APPR dem/ART Weg/NN zur/APPRART Arbeit/NN !/"                                                             
[4] " Das/ART Volumen/NN -LRB-/TRUNC 30/CARD Liter/NN -RRB-/TRUNC ist/VAFIN enorm/ADJD und/KON lässt/VVFIN sich/PRF ,/"                                                         
[5] " dank/APPR der/ART Form/NN ,/"                                                                                                                                              
[6] " besonders/ADV für/APPR Bücher/NN und/KON Schreibutensilien/NN ideal/ADJD nutzen/VVINF ./"

Jika tidak benar, harap edit pertanyaan Anda untuk menampilkan contoh keluaran yang Anda inginkan.

UPDATE berkat beberapa komentar klarifikasi dari alex dan Blue Magister, berikut cara menghasilkan output yang diinginkan:

# function to split the string on the literal $.
r.listOfSent  <- strsplit(r, "/$.", fixed=TRUE)

# which gives
[[1]]
[1] "Ich/PPER habe/VAFIN meinen/PPOSAT Berkeley/NN jetzt/ADV seit/APPR 11/CARD Jahren/NN im/APPRART fast/ADV täglichen/ADJA Einsatz/NN ."                                                                                                                                                      
[2] " In/APPR der/ART Schule/NN und/KON im/APPRART Studium/NN war/VAFIN der/ART Rucksack/NN meistens/ADV bis/APPR zum/APPRART bersten/ADJA mit/APPR Büchern/NN gefüllt/VVPP ,/$, jetzt/ADV benutze/VVFIN ich/PPER das/ART gute/ADJA Stück/NN auf/APPR dem/ART Weg/NN zur/APPRART Arbeit/NN !"
[3] " Das/ART Volumen/NN -LRB-/TRUNC 30/CARD Liter/NN -RRB-/TRUNC ist/VAFIN enorm/ADJD und/KON lässt/VVFIN sich/PRF ,/$, dank/APPR der/ART Form/NN ,/$, besonders/ADV für/APPR Bücher/NN und/KON Schreibutensilien/NN ideal/ADJD nutzen/VVINF ." 
person Ben    schedule 08.08.2013
comment
. dalam pola Anda diperlakukan sebagai karakter apa pun padahal Anda menginginkan . literal, saya sarankan strsplit(r, "/\\$\\.") atau strsplit(r, "/$.", fixed=TRUE). - person Blue Magister; 08.08.2013
comment
Saya tidak yakin tentang itu, karena pemisahan pada . literal akan gagal untuk membagi pada , dan ! dan ? yang sepertinya merupakan pertanyaan yang diajukan... - person Ben; 08.08.2013
comment
@BlueMagister strsplit(r, "/$.", fixed=TRUE) berhasil :) Terima kasih! - person alex; 08.08.2013
comment
@Ben hanya ingin membagi kalimat, tanpa ,. Terima kasih. - person alex; 08.08.2013
comment
@alex pertanyaan Anda ambigu, Anda mengatakan 'Saya perlu memisahkan satu kalimat menjadi elemen terpisah' (mis. membagi setiap kalimat menjadi beberapa bagian) dan menyertakan , dalam daftar karakter yang akan dicocokkan. Harap lebih berhati-hati saat mengajukan pertanyaan untuk memastikan Anda mendapatkan jawaban yang benar-benar Anda butuhkan. - person Ben; 08.08.2013
comment
@ Ben Terima kasih. Saya agak baru dan harus mengakomodasi. Maaf atas pertanyaan ambigunya. Saya secara eksplisit ingin/ingin (harus menguji sedikit) hanya kalimat yang terdapat di antara huruf kapital dan titik. tidak ada , atau ; awalnya. Salam :) - person alex; 09.08.2013