从英语解析数字的 R 包
Posted
技术标签:
【中文标题】从英语解析数字的 R 包【英文标题】:R packages that parse number from english 【发布时间】:2015-07-24 04:29:33 【问题描述】:R中是否有可以“理解”英文数字的包,例如:
"50 million" -> 50,000,000
"$17.9M" -> 17,900,000
它不必处理所有可能的情况,但我想看看人们如何解决这个问题,我可以从他们的代码中学习并编写自己的解决方案。
【问题讨论】:
你可以对this question的一些想法进行逆向工程 google(和 wolfram alpha)在这些方面做得很好,我会尝试寻找 API 类似的问题也有人讨论过here 【参考方案1】:这就是我的处理方式。
library(stringr)
m <- your_vector
m <- tolower(m) # normalize strings
m <- gsub(",","",m) # drop punctuation
m <- gsub("$","",m) # other punctuation as necessary
m <- gsub("\\s","",m) # drop spaces
dat <- data.frame(raw = m)
dat$words <- str_extract(m,"[a-z].*") # extract words
dat$numbers <- str_extract(m,"[0-9]*") # extract numbers
然后从 unique(dat$words) 创建一个新的 data.frame,合并和乘法。
dat_merge <- data.frame(
words = unique(dat$words),
multiplier = c(1e6,1e6) # from LOOKING at unique(dat$words)
) # new df
dat <- merge(dat, dat_merge)
dat$value <- dat$multiplier * dat$numbers
dat$value
我特别喜欢这种方法,因为您可以随着时间的推移轻松更新它。尤其是当您有新格式时。我个人在很多项目中使用它来逐字记录公司名称和其他一些小文本元素。
【讨论】:
以上是关于从英语解析数字的 R 包的主要内容,如果未能解决你的问题,请参考以下文章
MATLAB从入门到精通:MATLAB识别 自带手写数字集的CNN(LeNet5)
MATLAB从入门到精通:MATLAB识别 自带手写数字集的CNN(LeNet5)