R语言tm包词干提取异常原因及同义词映射方案咨询
问题1:词干提取不生效的原因
tm包内置的stemDocument函数默认调用Porter词干提取算法,这个算法是基于固定规则做后缀剥离,本身没有覆盖所有形容词比较级、最高级的变形规则:比如easier/easiest属于y改i加er/est的变形,closer/closest/nearer/nearest属于直接加er/est的变形,都不在Porter算法的默认剥离规则里,所以会出现提取失败的情况,不属于缺少配置的问题。
如果要解决这个问题,推荐用*词形还原(Lemmatization)*替代单纯的词干提取:词形还原会基于词的语义属性还原到原始词根,比规则化的词干提取准确率更高,R中可以配合hunspell或者spacyr包实现,处理后easier/easy/easiest都会还原为easy,close相关变形、near相关变形也能正确归一。
问题2:同义词映射的实现方法
完全可以实现,常用两种方案:
- 自定义同义词词典:适合问卷这类垂直场景,你可以提前整理好需要匹配的同义词组,例如:
然后写一个替换函数,通过synonym_map <- list( "close" = c("near", "nearest", "closer", "closest") )tm_map挂载到预处理流程里,遍历所有文本把同义词统一替换为目标词即可,这种方案准确率最高,不会出现通用词库的多义匹配问题。 - 调用通用语义库:可以用WordNet对应的R包
wordnet,调用接口查询词的同义词集合,自动匹配后做替换,适合同义词数量多、没法手动整理的场景,但要注意处理多义词的匹配误差。
内容的提问来源于stack exchange,提问作者Chris Oosthuizen
相关产品推荐
相关产品推荐

