在R中使用hunspell多词典时遭遇en_AU词典拼写检查异常
这确实挺让人摸不着头脑的!我帮你梳理下问题根源和几个可行的解决思路:
问题根源分析
核心问题出在不同地区的hunspell词典对英语缩写(收缩形式)的收录差异上。美式英语(en_US)词典里收录了Couldn't这类常见缩写,但澳大利亚英语(en_AU)的默认词典可能没有把这类收缩形式作为完整有效词纳入。
当hunspell用en_AU检查时,它会把Couldn't拆分成Couldn和t两个部分,而Couldn本身并不是一个合法的英文单词,所以就被标记成了拼写错误。
解决办法
这里有几个实用的方案可以解决这个问题:
手动补充缩写到忽略列表
把澳大利亚英语里常用的收缩缩写加到你的dic_ignore向量中,比如:dic_ignore <- c(dic_ignore, "Couldn't", "Didn't", "Wouldn't", "Isn't")这样hunspell就会自动跳过这些词的检查。
自定义扩展en_AU词典
你可以创建一个自定义词典文件,添加需要的缩写,然后和默认en_AU词典一起加载:# 先创建一个文本文件(比如au_custom_words.txt),每行写一个需要添加的词: # Couldn't # Didn't # Wouldn't # 加载自定义词典 au_custom_dict <- hunspell_dictionary("en_AU", add_words = readLines("au_custom_words.txt")) # 使用自定义词典检查 hunspell("Couldn't be more delighted.", dict = au_custom_dict, ignore = dic_ignore)先检查分词逻辑
你可以先用hunspell_split()看看en_AU词典是怎么拆分你的文本的,确认是不是拆分规则导致的问题:hunspell_split("Couldn't be more delighted.", dict = "en_AU")如果确实是拆分出了
Couldn这种奇怪的片段,也可以考虑先手动替换收缩形式(比如把Couldn't换成Could not)再检查,不过这种方法比较繁琐,只适合短文本场景。
内容的提问来源于stack exchange,提问作者Ankhnesmerira
相关产品推荐
相关产品推荐

