从英语解析数字的 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 包的主要内容,如果未能解决你的问题,请参考以下文章

从R中的字符向量中提取数字和下一个字符串

MATLAB从入门到精通:MATLAB识别 自带手写数字集的CNN(LeNet5)

MATLAB从入门到精通:MATLAB识别 自带手写数字集的CNN(LeNet5)

Request模块—数据解析工具

从df.columns单词中的文本中删除非英语单词包含字母和数字

爬虫之三种解析方式