2016-12-27 7 views
1

J'ai le texte ci-dessous et besoin d'extraire des mots spécifiques avant et après un motExtraction de texte dans R avec le paquet stringi

Exemple:

sometext <- "about us, close, products & services, focus, close, research & development, topics, carbon fiber reinforced thermoplastic, separators for lithium ion batteries, close, for investors, close, jobs & careers, close, \nselect language\n\n, home > corporate social responsibility > \nsocial report\n > quality assurance\n, \nensuring provision of safe products, \nthe teijin group resin & plastic processing business unit is globally expanding its engineering plastics centered on polycarbonate resin, where we hold a major share in growing asian markets. these products are widely used in applications such as automotive components, office automation equipment and optical discs (blu-ray, dvd). customers include automotive manufacturers, electronic equipment manufacturers and related mold companies. customer data is organized into a database as groundwork to actively promote efforts to enhance customer satisfaction., \nin accordance with iso 9001 (8-4, 8-2), the regular implementation of" 
library(stringi) 
stri_extract_all_fixed(sometext , c('engineering plastics', 'iso 9001','office automation'), case_insensitive=TRUE, overlap=TRUE) 

sortie actuelle en dessous

[[1]] 
[1] "engineering plastics" 

[[2]] 
[1] "iso 9001" 

[[3]] 
[1] "office automation" 

Sortie obligatoire:

[1] globally expanding its engineering plastics centered on polycarbonate resin 
[2] accordance with iso 9001 (8-4, 8-2), the regular implementation of 

fondamentalement besoin d'extraire du texte avant et après mes paroles spécifiques mentionnés

+0

Votre appel à 'stri_extract_all_fixed' fait référence à une variable' prav_1' qui n'est pas définie. S'il vous plaît, faites en sorte que votre exemple soit reproductible. – drammock

+0

Tout le texte est avant ou après vos mots spécifiques. Vous semblez vouloir 3 mots avant "plastiques techniques" et 4 mots après; 2 mots avant "iso 9001" et beaucoup après ... avez-vous une logique fiable que vous pouvez expliquer sur combien avant et après vous voulez extraire? – Gregor

+0

s'il vous plaît changer prav_1 comme sometext –

Répondre

0

Ceci est une idée de commencer par:

sometext <- "about us, close, products & services, focus, close, research & development, topics, carbon fiber reinforced thermoplastic, separators for lithium ion batteries, close, for investors, close, jobs & careers, close, \nselect language\n\n, home > corporate social responsibility > \nsocial report\n > quality assurance\n, \nensuring provision of safe products, \nthe teijin group resin & plastic processing business unit is globally expanding its engineering plastics centered on polycarbonate resin, where we hold a major share in growing asian markets. these products are widely used in applications such as automotive components, office automation equipment and optical discs (blu-ray, dvd). customers include automotive manufacturers, electronic equipment manufacturers and related mold companies. customer data is organized into a database as groundwork to actively promote efforts to enhance customer satisfaction., \nin accordance with iso 9001 (8-4, 8-2), the regular implementation of" 
library(stringi) 
words <- c('engineering plastics', 'iso 9001','office automation') 
pattern <- stri_paste("([^ ]+){0,10}", words, "([^ ]+){0,10}") 
stri_extract_all_regex(sometext , pattern, case_insensitive=TRUE, overlap=TRUE) 

Explication: J'ajoute regex simple, avant et après vos mots souhaités:

"([^ ]+){0,10}" 

qui signifie:

  1. quoi que ce soit, mais l'espace, autant de fois que vous le pouvez
  2. alors l'espace
  3. et tout cela jusqu'à dix fois

Ceci est très simple et naïf (par exemple, il traite tous les « & » ou '>' comme mots) mais fonctionne.