Извлечение определенных слов из вектора текста в r - PullRequest
0 голосов
/ 06 июля 2019

Я хочу извлечь набор конкретных слов из вектора текста, как показано в таблице ниже.Этот набор слов xyz, xyz10, xyz + и xyz 10 является названием продукта в текстовом столбце и, если доступно, извлекает его и присваивает его соответствующему столбцу с именем продукта

             text              product_name
 hi i want to purchase xyz          xyz
    is xyz10 not available        xyz10
               i have xyz+         xyz+
         what abour xyz 10       xyz 10

Ниже приведена таблица для справки

data <- data.frame(text=c("hi i want to purchase xyz","is xyz10 not 
                          available","i have xyz+","what abour xyz 10"),
product <- c("xyz 10","xyz","xyz+","xyz10")

РЕДАКТИРОВАТЬ: Создается имя кадра продукта product_list, содержащее все имя продукта, а затем сопоставляется и извлекается со столбцом Comment в основном фрейме данных с использованием str_extract.Но некоторые названия продуктов с пробелом, например xyz 10, не совпадают полностью.

library(stringr)
df_empty <- data.frame(Comment=c("hi i want to purchase xyz","is xyz10 not 
                             available","i have xyz+","what abour xyz 10"),stringsAsFactors=FALSE)
product_list <- data.frame(product_list=c("xyz 10","xyz","xyz+","xyz10"),stringsAsFactors=FALSE)

df_empty$Product=""
for (i in 1:nrow(df_empty)){
print(i)
for (j in 1:nrow(product_list)){
df_empty$Comment[i]<-gsub("-"," ",df_empty$Comment[i])   
product_match<-str_extract(df_empty$Comment[i],fixed(product_list$product_list[j],ignore_case = T))
if (!(is.na(product_match))){
df_empty$Product[i]<-product_match
df_empty$Product[i]<-toupper(df_empty$Product[i])
} 
} 
}
...