我有一个数据集(一个文本语料库),我正在研究主题建模。在这个数据集中 计量单位 或 货币 是不同的拼写或缩写。例如,250m代表250米,12cm代表12厘米,10€代表10欧元。既然有人写的是英寸、厘米、米或英里,这与分析无关,我想把这些缩写全部用一个词来代替,例如 "距离单位 "这个词。
遗憾的是,由于我分析的是用户生成的内容数据,文本语料库中并没有使用统一的缩写。因此,我不知道如何写一段代码,让R用一个指定的词("distanceunit "代表米、英寸等,"currency "代表所有货币)来替换这些单位(计量单位或货币)。
我想过用gsub来转换它们。但是,需要考虑到不同的写法和间距,比如 "250米 "与 "250米 "与 "250米"。
有没有办法在我定义了所有我想要替换的测量单位后,写一个gsub函数来核算上述不同的写法?有没有什么R包可以帮助解决这个问题?
谢谢你!我有一个数据集(一个数据集)。
t <- c("250m foo", "250 m foo", "250 m. foo", "250m. foo", "300 Apples", "1963 May")
我试图找到一个限制性的regex来避免fals-positive。不知道你的结果会有多差......
建议的regex寻找以下模式: wordboundary (\\b
),一个或多个数字([0-9]+
),后面是一个可选的空格([ ]?
)、一个或多个字母m和M([mM]+
)和一个词限,后面是一个可选句号(\\b[.]?
).
然后将带有数字的群组重新插入替换参数中(该参数的 \\1
在 "\\1 distanceunit"
)
gsub("(\\b[0-9]+)[ ]?[mM]+\\b[.]?", "\\1 distanceunit", t)
返回:
> "250 distanceunit foo" "250 distanceunit foo" "250 distanceunit foo" "250 distanceunit foo" "300 Apples" "1963 May"