Tuesday, July 10, 2018
Rcode trích diện tích từ đoạn text
load_pkg <- function(pkg){
library(pkg, character.only = T)
return('NNB')
}
pkgs <- c('tidyverse','magrittr', 'stringr', 'stringi', 'readxl', 'writexl', 'tidytext')
sapply(pkgs, load_pkg)
my_path <- 'D:/dt_crawled/'
d3 <- read_excel(paste0(my_path, 'Muaban_All_20June2018.xlsx'), sheet = 3)
head(d3$mb_long)
# Lấy dữ liệu
d3 <- d3 %>% mutate(text_vector = mb_long %>%
as_vector() %>%
str_to_lower() %>% # Chuyển về chữ in thường
str_squish() %>% # Xóa khoảng trống thừa giữa các ký tự
stri_trans_general(id = 'Latin-ASCII') # Xóa dấu của chữ
)
# -------------------------------
## Khoanh vùng liên quan đến m2
# -------------------------------
f1_dt <- function(text_vector){
## Tạo mẫu regrex
match_m2 <- c("[:digit:]+\\s*m2", # vd:30m2, 30 m2
"[:digit:]+(\\.|,|x)[:digit:]+\\s*m2", # vd: 30.06m2, 30x06m2, 30,06m2
"[:digit:]+\\s*x\\s*[:digit:]+\\s*m2"# # vd: 30 x 9 m2
) %>% paste0(collapse = '|')
## Xuất dữ liệu
out <- text_vector %>% as_vector() %>%
str_extract_all(pattern = match_m2, simplify = T)
}
# -------------------------------
# Khoanh vùng liên quan đến dt hoặc diện tích
# -------------------------------
f2_dt <- function(x){
## Tạo mẫu regrex
match_dt <- c("dt\\s*:\\s*\\d+\\s*x\\s*\\d+", # vd: dt: 3 x 5
"dt\\s*:\\s*\\d+(\\.|,)\\d+\\s*x\\s*\\d+(\\.|,)\\d+" , # vd: dt: 3.4 x 5.6,
"dt\\s*:\\s*\\d+\\s*x\\s*\\d+(\\.|,)?\\d*", #, # vd: dt: 3 x 5.6,
"dt\\s*:\\s*\\d+(\\.|,)?\\d*\\s*x\\s*\\d+", #, # vd: dt: 3.4 x 5,
"dien\\s*tich\\s*:\\s*\\d+\\s*x\\s*\\d+", # vd: dt: 3 x 5
"dien\\s*tich\\s*:\\s*\\d+(\\.|,)\\d+\\s*x\\s*\\d+(\\.|,)\\d+" , # vd: dt: 3.4 x 5.6,
"dien\\s*tich\\s*:\\s*\\d+\\s*x\\s*\\d+(\\.|,)?\\d*", #, # vd: dt: 3 x 5.6,
"dien\\s*tich\\s*:\\s*\\d+(\\.|,)?\\d*\\s*x\\s*\\d+" #, # vd: dt: 3.4 x 5,
) %>% paste0(collapse = '|')
## Xuất dữ liệu
out <- text_vector %>% as_vector() %>%
str_extract_all(pattern = match_dt, simplify = T)
}
m2 <- d3 %>%
filter(str_detect(text_vector, 'm2') == T) %>%
select(text_vector)
non_m2 <- d3 %>%
filter(str_detect(text_vector, 'm2') == F) %>%
select(text_vector)
m2 <- f1_dt(m2)
non_m2 <- f2_dt(non_m2)
Nhãn:
R,
Text mining
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment