2017-04-17 3 views
0

J'ai un fichier texteextraction de texte dans une même phrase dans R

« Je vous écris aujourd'hui. Aujourd'hui, je pense à l'écriture. Aujourd'hui est grand jour »

Je suis en train de trouver nombre d'exemples dans une phrase où «écrire aujourd'hui» a été mentionné. Il peut arriver que «écrire aujourd'hui» ne soit pas ensemble mais fasse toujours partie de la même phrase (par exemple: 2ème phrase), il faut aussi saisir cela.

Ainsi, dans l'exemple ci-dessus, mon compteur sera 2.

Toute idée comment faire en R? TIA

+0

ne pouvez-vous utiliser une expression régulière? ((\ b écriture \ b. * \ Btoday \ b) | (\ btoday \ b. * \ Bwriting \ b)) – Dieter

+0

Je suis nouveau par regex. Va-t-il chercher seulement dans la phrase? – user35655

+0

Depuis que je suis peut texte comme "Aujourd'hui est un grand jour, l'écriture est mon hobby". Avec cet exemple, le nombre devrait être 0. – user35655

Répondre

2

Il y a beaucoup de façons de le faire, mais avec tidytext,

library(tidyverse) 
library(tidytext) 

data_frame(text = "I am writing today. Today I am thinking of writing. Today is great day") %>% 
    unnest_tokens(sentence, text, 'sentences', to_lower = FALSE) %>% 
    mutate(sentence_number = row_number()) %>% 
    unnest_tokens(word, sentence, 'words', drop = FALSE) %>% 
    group_by(sentence_number) %>% 
    filter('today' %in% word, 'writing' %in% word) %>% 
    select(-word) %>% distinct() %>% ungroup() %>% 
    mutate(count = n()) 

#> # A tibble: 2 × 3 
#>       sentence sentence_number count 
#>        <chr>   <int> <int> 
#> 1    I am writing today.    1  2 
#> 2 Today I am thinking of writing.    2  2 
+0

Génial ... Donc, j'ai juste besoin de prendre la dernière rangée pour obtenir le nombre d'occurrences ... Merci. – user35655

+0

Si vous avez juste besoin du nombre, vous pouvez tout remplacer après 'filter' avec' ungroup()%>% summarize (count = n_distinct (numéro_de_la_séquence)) ' – alistaire

-1
  1. Tout en minuscules.
  2. Division par le point.
  3. prétraiter la phrase (provenant/lemmings/mots vides)
  4. appliquer regex ((\ bwriting \ b \ btoday \ b) |.. (\ Btoday \ b \ bwriting \ b))
+0

Merci Dieter. D'une façon ou d'une autre coincé avec obtenir des comptes d'occurrences. – user35655