用于文字处理的 Grammarly 开源替代方案

使用这些开源工具检查您的写作中是否存在拼写、语法、剽窃和风格错误。
168 位读者喜欢这篇文章。
A graduate degree could springboard you into an open source job

Opensource.com

Grammarly 在许多教师、学生、商务人士以及其他需要定期写作或处理大量文字的人中很受欢迎。它是一个有用的工具,但您需要注册并登录才能使用它,而我很少在缓存中保留网站登录数据。

我经常处理文字,用于撰写技术性和创意性文章,而离开我的文本编辑器去打开网页浏览器,更不用说访问需要我登录的网站,对我来说通常太麻烦了。幸运的是,借助一些开源实用程序,我可以避免这种干扰。

Grammarly 的主要优点是检查:

  • 拼写错误
  • 英语语法错误
  • 剽窃
  • 风格

以下是我针对这些功能使用的开源替代方案。

拼写检查

拼写检查在大多数文字处理器甚至文本编辑器中都很常见。我在 Emacs 中使用 Flyspell。 Flyspell-mode 是一种次要模式,可提供即时拼写检查。如果我拼错了一个单词,它会用红线标出,提示我检查它。它还具有自动更正单词的选项,如果我不是经常处理技术、幻想和科幻小说,我可能会使用它。

Flyspell in Emacs

您可以使用 Emacs 的 packages 界面安装 Flyspell。要使其在启动时成为活动模式,请将其添加到您的 .emacs 文件中

(require 'flyspell)
(flyspell-mode +1)

语法检查

对于语法问题,我使用 LanguageTool API。它是由欧盟资助的开源网站和库,由世界各地的程序员开发

LanguageTool

您可以将 LanguageTool 用作 LibreOffice 或 Firefox、Chromium、Brave、Chrome 和其他浏览器的插件;作为终端命令;或作为图形应用程序。它甚至有适用于 Google Docs 和 Microsoft Word 等专有编辑器的插件。如果您下载它以供本地使用,您必须安装 Java

LanguageTool UI

还有一个 Emacs 插件,它本质上是 Emacs 和 LanguageTool Java 库之间的 Elisp 连接器。通过在 Emacs 中安装 langtool 包,LanguageTool 会检查我的语法,而无需我自觉地启动它。

剽窃检查

研究、报告和再利用之间的界限通常有点模糊,而且随着互联网上如此多的内容可用,它每天都变得越来越不清晰。通常,我尽量将自己限制在 Creative Commons开源 资源,但即便如此,重要的是要注明这些资源的来源,无论是出于法律义务还是出于礼貌(取决于许可证)。控制影响的一种方法是将您的最终作品与互联网上已有的内容进行验证。

我使用 Python 脚本进行剽窃检查。 这绝不是一个脚本。 我把它拼凑在一起,作为一种快速简便的方法,以防止明显的复制粘贴错误或误判。 因此,虽然它不是一个优雅的脚本(选项解析过于复杂且效率低下,并且没有可调整的容差级别来排除极短的搜索),并且肯定会有很多误报,但它是一个快速 Python 脚本如何替代不适合您工作流程的服务的示例。

在使用它之前,您必须安装 Python google 模块以启用轻松的 Google 搜索

$ python3 -m pip install google --user

我专门使用 Google 而不是像 YaCy 这样的开源搜索引擎,因为我想要一个庞大的数据池来从中提取数据。

这是脚本

#!/usr/bin/env python3
# stollen plagiarism checker
# by Seth Kenlon <skenlon@redhat.com>
# GPLv3

# This program is free software: you can redistribute it 
# and/or modify it under the terms of the GNU General 
# Public License as published by the Free Software 
# Foundation, either version 3 of the License, or (at 
# your option) any later version.

# This program is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the 
# implied warranty of MERCHANTABILITY or FITNESS FOR A 
# PARTICULAR PURPOSE.  See the GNU General Public License 
# for more details.

# You should have received a copy of the GNU General 
# Public License along with this program. 
# If not, see <https://gnu.ac.cn/licenses/>.

import sys
import random
from pathlib import Path
from googlesearch import search 

def Scrub(ARG):
    """
    Read lines of file.
    """

    f = open(ARG, 'r') 
    LINES = f.readlines() 
    Search(LINES)

def Search(LINES):
    """
    Search Internet for exact match of LINE.
    """

    COUNT=0
    
    for LINE in LINES:
        COUNT += 1        
        PAUSE = random.randrange(1,4)

        if VERBOSE:
            print("Searching...")
            
        for ITEM in search(LINE, tld="com", num=1, stop=1, pause=PAUSE):
            if VERBOSE:
                print("WARNING:" + LINE + " → " + ITEM)
            else:
                print("WARNING: line " + str(COUNT) + " → " + ITEM)

if __name__ == "__main__":
    random.seed()
    n=1
    
    if sys.argv[1] == "--verbose" or sys.argv[1] == "-v":
        VERBOSE = True
        # shift 1
        n += 1
    else:
        VERBOSE = False
        
    f = Path(sys.argv[n])

    if not f.is_file():
        print("Provide a text file to check.")
        exit()
    else:
        Scrub(sys.argv[n])

这是一个简单的测试文件,其中包含来自公共领域作品爱丽丝梦游仙境的几行和来自受版权保护的歌曲的一行,这两行都被脚本捕获,以及一行无意义的文本,该文本正确地未被脚本标记

Alice was beginning to get very tired of sitting by her sister on the bank, and of having nothing to do: once or twice she had peeped into the book her sister was reading, but it had no pictures or conversations in it, “and what is the use of a book,” thought Alice “without pictures or conversations?”

So she was considering in her own mind (as well as she could, for the hot day made her feel very sleepy and stupid), whether the pleasure of making a daisy-chain would be worth the trouble of getting up and picking the daisies, when suddenly a White Rabbit with pink eyes ran close by her.

acrutchen macpie.

Just when you think you've got more than enough, that's when it all up and flies away

您可以通过将 Python 脚本保存到名为 stollen.py 的文件中(以美味的圣诞蛋糕命名,而不是任何人会使用被盗内容的想法),并将测试文件的内容保存到 test.txt 中来测试它。 预期结果是除第 5 行之外的所有行都命中。

$ chmod +x ./stollen.py 
$ ./stollen.py test.txt
WARNING: line 1 → https://www.ego4u.com/en/read-on/literature/alice-wonderland?part1
WARNING: line 3 → https://www.goodreads.com/quotes/733845-so-she-was-considering-in-her-own-mind-as-well
WARNING: line 7 → https://genius.com/Prince-and-the-new-power-generation-money-dont-matter-2-night-lyrics

为了防止被 Google 阻止,我使用随机秒数来暂停调用之间的时间,因此该脚本在设计上不是很快速。 话又说回来,如果您曾经使用过 Grammarly,您就会知道它的剽窃检查器也不是很快。

风格审查

在自动化编辑器提供的所有功能中,风格审查对我来说是最不重要的。 即使使用 Grammarly 的可调整容差设置来处理从正式到随意的写作风格,我几乎从不同意它的建议,而且它很少捕捉到我不喜欢的东西。

我认为,定义合适的风格对于作者和读者来说都是主观的,并且在自动化编辑的背景下,我认为它实际上是规则应用严格程度的简写。 因此,真正重要的是违反规则的行为,并且由作者或审阅者来决定规则是否应该应用或忽略。

所有语言中最严格的语言是为计算机设计的构造语言,例如 C、Java、Python 等。 因为这些语言是严格定义的,所以可以严格且毫无例外地根据定义它们的规则来检查它们。 这个过程在计算机科学中称为linting,而 proselint 项目的目标是将该过程引入自然语言。

您可以将 proselint 安装为 Python 模块

$ python3 -m pip install proselint --user

安装完成后,针对文本文件运行它

$ prolint myfile.txt

它提供语法建议并执行一些风格检查以捕捉陈词滥调和俚语。 这是一个对散文的有用且客观的审视,您可以自由地忽略或遵循它的建议。 如果您不确定写作的清晰度或活力,请尝试一下。

开源意味着选择

有很多网站没有发布他们的源代码,我们每天都在使用它们。 找到一个好的开源替代方案并不总是关于许可或源代码可用性。 有时,它是关于找到一个比您以前使用的工具更适合您的工具。

通过开源,您可以调查您的选择并进行测试,直到找到最符合您个人偏好的选择。 如果您想要风格检查,您有几个 linter 和风格检查器可供选择。 如果您想要拼写和语法检查器,您可以使用许多应用程序来集成不同的字典和界面。 非开源应用程序往往不允许这种灵活性。 如果您将自己限制在非开源软件上,即使只是为了少数任务,可能性的多样性也可能难以看到。

今天挑战自己,无论是为了拼写检查还是自动风格评论,还是完全其他的东西:找到一个开源替代方案,看看您是否可以将一些常规的事情变成引人注目、有趣且有效的事情。

接下来阅读什么
标签
Seth Kenlon
Seth Kenlon 是一位 UNIX 极客、自由文化倡导者、独立多媒体艺术家和 D&D 爱好者。 他曾在电影和计算机行业工作,而且经常同时进行。

4 条评论

不错的文章,这个话题与我的内心和专业知识很贴近,但你忘记了其中一个最好的选择…… Vale,它将上面许多工具组合成一个,并且做得更多…… 我们甚至正在为其创建预构建规则,以模拟许多 Grammarly 检查。

一篇非常好的文章。 我现在正在研究一些选项。 因为我写了很多东西,所以我特别喜欢 LanguageTool。 我现在正在 Firefox 中试用它,而不是在 Chrome 中使用 Grammarly。 非常感谢这篇文章。
Andrew

我很高兴它对您有帮助,Andrew。 这是我自己的有机工作流程。 我也很想听听其他人组装的开源解决方案。

回复 ,作者 iandrewmartin

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 许可。
© . All rights reserved.