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 可以检查我的语法,而无需我有意识地启动它。

抄袭检查

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

我使用 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 等。由于这些语言是严格定义的,因此可以严格且无例外地根据定义它们的规则来检查它们。此过程在计算机科学中称为lintingproselint 项目的目标是将该过程引入自然语言。

您可以将 proselint 作为 Python 模块安装

$ python3 -m pip install proselint --user

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

$ prolint myfile.txt

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

开源意味着选择

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

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

今天挑战自己,无论是拼写检查还是自动风格评论,还是完全不同的其他内容:找到一个开源替代方案,看看您是否可以将例行公事变成引人入胜、有趣且有效的事情。

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

4 条评论

不错的帖子,也是一个与我的内心和专业知识息息相关的话题,但您忘记了所有最佳选择之一……Vale,它将上述许多工具组合成一个,并且做得更多……我们甚至正在为其创建预构建规则,以模拟许多 Grammarly 检查。

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

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

回复 ,作者:iandrewmartin

知识共享许可协议本作品根据知识共享署名-相同方式共享 4.0 国际许可协议获得许可。
© . All rights reserved.