替换 R 中测量单位的特定缩写

Replace specific abbreviations of measurement units in R

我有一个用于主题建模的数据集(文本语料库)。 在数据集中,计量单位货币的拼写或缩写不同。比如250m代表250米,12cm代表12厘米,10€代表10欧元。由于某人写的是英寸、厘米、米还是英里与分析无关,所以我想使用这些缩写并将它们全部替换为一个单词,例如单词 "distanceunit".

很遗憾,文本语料库中没有使用统一的缩写,因为我正在分析用户生成的内容数据。因此,我不确定如何编写允许 R 用一个指定的词("distanceunit" 表示米、英寸等,"currency" 表示所有单位)的代码货币)。

我考虑过使用 gsub 来转换它们。但是,需要考虑不同的书写和间距,例如“250m”与“250m”与“250m”。与“250m。”

一旦我定义了我想要替换的所有测量单位,是否有一种方法可以编写一个 gsub 函数来解释上述不同的编写方法?是否有任何 R 包可以帮助解决这个问题?

谢谢!

t <- c("250m foo", "250 m foo", "250 m. foo", "250m. foo", "300 Apples", "1963 May")

我试图找到一个限制性正则表达式来避免误报。不确定你的结果会有多糟糕...

建议的正则表达式查找以下模式:wordboundary (\b),一个或多个数字 ([0-9]+),后跟一个可选的 space ([ ]? ), 一个或多个字母 m and/or M ([mM]+)和一个单词边界后跟一个可选句点 (\b[.]?).

然后将带有数字的组重新插入到替换参数中("\1 distanceunit" 中的 \1

gsub("(\b[0-9]+)[ ]?[mM]+\b[.]?", "\1 distanceunit", t)

Returns:

> "250 distanceunit foo" "250 distanceunit foo" "250 distanceunit foo" "250 distanceunit foo" "300 Apples"           "1963 May"