如何使用 Linux 获取文本中所有拼写错误的单词列表?

如何使用 Linux 获取文本中所有拼写错误的单词列表?

我有一段文本,其中包含许多拼写错误的单词。我想获取所有这些单词的列表,因此对于这样的文本:

This is just a normall line with some speling mistakes in it. 

它将返回:

normall speling

有没有办法做到这一点,最好使用 Linux 工具,如 aspell 或 vim?

答案1

您可以使用aspell -a来执行此操作,并从 stdout 获取文件。这将输出带有行号和其他拼写的单词:

cat example.txt | aspell -a

为了更好地清理你的列表,我会使用更类似的方法:

cat aspell.txt | aspell -a | cut --delimiter ' ' --fields 2 | grep --invert-match '*'

解释第二组命令:对于拼写正确的单词, 的输出aspell -a*,而对于拼写错误的单词, 的输出如下:

& dev 26 101: Devi, derv, DEC, Dec, deb, DE, def, div, Dave, dive, dove, DEA, Dee, dew, Del, Dem, Nev, Rev, deg, den, rev, Davy, deaf, defy, diva, TV

dev是此处拼写错误的单词,当用空格分隔时,它位于第二“列”。因此,我们将输出通过管道传输aspellcut以仅获取第二列。我们还通过管道传输到grep以删除所有带有 的行*

您还可以| sort | uniq仅将拼写错误的单词附加到列表中一次,即使它们在文本中出现多次。

答案2

我最近想这样做,但我对接受的答案不是特别满意,所以我研究了这个问题并提出了以下解决方案,使用四个常见的拼写库/实用程序。

注意:所有引述均来自该特定实用程序的手册页。


拼写检查

-lispell 的或选项list用于从标准输入中生成拼写错误的单词列表。

输入重定向可用于从文件中读取:

ispell -l <example.txt

阿斯佩尔

aspell 的一个命令是list,类似于上面的 ispell 选项,用于

从标准输入生成拼写错误的单词列表。

这也可以与输入重定向结合使用:

aspell list <example.txt

亨斯佩尔

Hunspell 还实现了以下-l选项:

“list”选项用于从标准输入中生成拼写错误的单词列表。

在实验过程中,我注意到它也可以与文件名一起用作参数(无需输入重定向):

hunspell -l example.txt

附魔

Abiword 的 Enchant 拼写检查器还支持以下-l选项:

仅列出拼写错误。

同样,Enchant 也接受文件名作为参数(如果没有提供,则默认为标准输入):

enchant -l example.txt

答案3

我的拼写检查插件有一个:SpellCheck命令可以填充 Vim 的快速解决包含所有拼写错误的列表。然后,您可以使用 Vim 的内置命令浏览该列表,或使用插件提供的映射直接从列表中修复这些错误。

相关内容