替换 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"
我有一个用于主题建模的数据集(文本语料库)。 在数据集中,计量单位或货币的拼写或缩写不同。比如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"