Misalkan saya memiliki bingkai data yang memiliki 2 kolom: "question_no" dan "question_text" "question_no" hanya beralih dari 1 ke length(data$question_no) dan "question_text" memiliki pertanyaan. Saya ingin mengkategorikan pertanyaan yang memiliki kata "berurutan" dan "meringkas". Sejauh ini saya telah menemukan beberapa baris kode ini:

questions<-Corpus(VectorSouce(data$question_text))
questions<-tm_map(questions,tolower)
questions<-tm_map(questions,stripWhiteSpace)
spesificQuestion<- ifelse(Corpus=="in order"|Corpus=="summarize",pquestions, others=

Saya tahu ini adalah kumpulan kode yang sangat buruk, saya hanya ingin menunjukkan niat saya.

Apa yang harus saya lakukan untuk memilih kata-kata tertentu dari korpus?

0
HydraCc 2 September 2020, 20:15

1 menjawab

Jawaban Terbaik

Dengan bingkai data ini:

   df <- data.frame(
   question_no = c(1:6),
   question_text = c("put these words in order","summarize the  paper","nonsense",
   "summarize the story", "put something in order", "nonsense")
   )

    question_no            question_text
       1             put these words in order
       2             summarize the paper
       3             nonsense
       4             summarize the story
       5             put something in order
       6             nonsense

Kamu bisa mencoba...

     library(stringr)
     library(dplyr)
     mutate (df, condition_met = if_else(str_detect(df$question_text,"\\bsummarize\\b|\\bin order\\b"), "Yes", "No"))

Yang menghasilkan...

  question_no            question_text         condition_met
       1         put these words in order           Yes
       2         summarize the paper                Yes
       3         nonsense                           No
       4         summarize the story                Yes
       5         put something in order             Yes
       6         nonsense                           No

stringr::str_detect membuat vektor logis yang sama dengan panjang argumen pertama. Ini mencari setiap elemen dalam vektor asli untuk melihat apakah itu berisi string (atau string) yang Anda inginkan. Perhatikan bahwa saya memeriksa kata "meringkas" dan kata-kata "agar" untuk menghindari pencocokan hal-hal seperti "tidak meringkas". Jika itu tidak masalah bagi Anda, Anda dapat mengonversi string yang cocok menjadi ".*summarize.*|.*in order.*" Menggunakan if_else memungkinkan Anda untuk mengubah TRUE dan FALSE menjadi apa pun yang Anda inginkan. Dalam hal ini saya melakukan "ya" dan "tidak".

dplyr::mutate membuat kolom baru dengan nama yang Anda inginkan. Membiarkan nilai TRUE dan FALSE akan memungkinkan Anda untuk melihat berapa banyak atau berapa proporsi entri yang berisi string yang Anda minati. Jika itu yang Anda inginkan, keluarkan argumen if_else, yaitu....

     mutate (df, condition_met = str_detect(df$question_text,"\\bsummarize\\b|\\bin order\\b"))
0
RStudious 2 September 2020, 18:21