我经常使用Hadley的软件包stringr
来清理杂乱的生态数据(规范物种名称,标签格式不佳等).最近我开始学习sed
,awk
并且被这些工具的强大程度所震撼,特别是在处理大量数据文件时.
我的问题:
是否有其他强大的文本处理包(base
功能之外,以及那些stringr
)对数据清理有用?
是否可以sed
从R内运行命令/脚本?如果是这样,怎么样?能给我举个例子?
有没有人试图sed
为R包写一个包装器.如果没有,这将是一件值得追求的事情(对我自己或更有能力的程序员来说是一个辅助项目)?
Iterator.. 5
首先,关于sed
和awk
,我一般不需要他们,因为他们特别老派.我经常在Perl中编写正则表达式,并实现相同的功能,可读性更强一些.我的意思不是辩论实现的优点,但是当我没有在Perl编写这样的功能,我发现gsub
,grep
和相关的正则表达式工具工作得非常好于R.请注意,这些可以perl = TRUE
作为参数; 我更喜欢Perl正则表达式处理.
对于更严重的包装,tm
包装 特别值得注意.有关自然语言处理和文本挖掘资源的更多信息,请查看NLP的CRAN任务视图.
另外,我认为你的问题标题已经混淆了两个概念.像sed和awk,正则表达式,标记化等工具是文本处理和预处理中的重要部分.文本挖掘更具统计性,并且取决于文本数据的有效预处理和量化.虽然没有提及,但分析的两个后续阶段,即信息检索和自然语言处理,是其目标更具体的研究和工程领域.如果您主要对文本操作感兴趣,那么应用正则表达式和预处理/规范化的各种工具就足够了.如果要进行文本挖掘,则需要查看更多的统计函数.对于NLP,需要进行更深入分析的工具.所有这些都可以从R内部访问,但问题是你想在这个兔子洞里走多远?想要吞下红色药丸吗?
首先,关于sed
和awk
,我一般不需要他们,因为他们特别老派.我经常在Perl中编写正则表达式,并实现相同的功能,可读性更强一些.我的意思不是辩论实现的优点,但是当我没有在Perl编写这样的功能,我发现gsub
,grep
和相关的正则表达式工具工作得非常好于R.请注意,这些可以perl = TRUE
作为参数; 我更喜欢Perl正则表达式处理.
对于更严重的包装,tm
包装 特别值得注意.有关自然语言处理和文本挖掘资源的更多信息,请查看NLP的CRAN任务视图.
另外,我认为你的问题标题已经混淆了两个概念.像sed和awk,正则表达式,标记化等工具是文本处理和预处理中的重要部分.文本挖掘更具统计性,并且取决于文本数据的有效预处理和量化.虽然没有提及,但分析的两个后续阶段,即信息检索和自然语言处理,是其目标更具体的研究和工程领域.如果您主要对文本操作感兴趣,那么应用正则表达式和预处理/规范化的各种工具就足够了.如果要进行文本挖掘,则需要查看更多的统计函数.对于NLP,需要进行更深入分析的工具.所有这些都可以从R内部访问,但问题是你想在这个兔子洞里走多远?想要吞下红色药丸吗?