这是LanguageTool的官方语法规则说明,一定要仔细研究,学会这个语法,就可以自己编写语法检查规则了,这篇文档上说,编写这份语法检查文档,你甚至都不需要是一名程序员:

http://wiki.languagetool.org/development-overview#toc3

开源中国社区,为我们罗列了LanguageTool的版本发布列表:

LanguageTool首页、文档和下载 - 语法检查程序 - 开源中国社区
http://www.oschina.net/p/languagetool

下面是一个中文版的LanguageTool测试页面:

LanguageTool开源文体和语法校正软件
中文官方页面:https://www.languagetool.org/zh/

LanguageTool的JavaAPI调用示例代码:

Java API - LanguageTool Wiki
http://wiki.languagetool.org/java-api

在编写代码的过程中,我们还会需要查看doc文档,学会一些方法的使用,链接如下:

https://languagetool.org/development/api/

languagetool中文语法校对xml规则定制方法 - 豆丁网
http://www.docin.com/p-905900112.html

LanguageTool语法校正规则库的开发 - 下载频道 - CSDN.NET
http://download.csdn.net/detail/u011088871/5617583

下面笔者对http://wiki.languagetool.org/development-overview#toc0这篇在线文档的翻译,希望能对看到这篇文章的你有帮助,我仅仅只是做了一些翻译,如果你的英文较好,建议直接看英文版。

LanguageTool是一个开源的文体和语法校正的软件,包括对英语、中文、法语、德语、波兰语、荷兰语、罗马尼亚语等很多 其他语言的支持。

new error detection rules 错误检测规则
nutshell 概括
detect 检测
下载完,解压,然后打开LanguageTool-xx/org/languagetool/rules/en/grammar.xml这个文件。
Typos 错别字、打字稿、 评写错误
找到name="Possible Typo"这个节点(它就在开头),按照文档中说的,加上文档里的例子。

incorrect 错误的,不正确的;不适当的;不真实的
correct 改正;告诫;正确的

在合适的目录下使用命令行 java -jar languagetool.jar 运行 languagetool.jar 这个jar文件。
选择“英语(英国)”作为文本语言的类型(在窗口的左下角)。

LanguageTool will now check your text and suggest bicycle as a replacement for foo bar, because that's what the rule which we just added says.
LanguageTool 就会开始帮你检查,当LanguageTool发现“foo bar”一起出现的时候,它就会提示 应该使用“bicycle ”来替换“foo bar”,这正是由于我们刚刚添加了那一条自定义的规则。

当然如果你不想自己直接编辑 XML 文档,你可以使用 LanguageTool 的在线编辑工具自行编辑。

get a grasp on 把握
understanding 理解明白

internally 内部地;国内地;内在地
check out 检验

设置运行的内存。
You can then build the code with mvn clean package or just run the tests with mvn clean test. Maven's default memory settings are often too low, so you will probably need to set your environment variable MAVEN_OPTS to:
-Xmx512m -XX:MaxPermSize=256m

下面我们来看一下 Language 运行的流程:
Language checking process

This is what LanguageTool does when it analyzes a text for errors:
1、将文本分割成句子;
The text is split into sentences
2、将每个句子分割成单词;
Each sentence is split into words

3、每个word 都会被加上part-of-speech tag(s)词性标记,例如 cars 被标记为 复数名词( plural noun), talked 被标记为“简单动词过去式”。
Each word is assigned its part-of-speech tag(s) (e.g. cars = plural noun, talked = simple past verb)
4、然后分析文本开始匹配内置规则,另一部分规则从xml文件加载。
The analyzed text is then matched against the built-in rules and against the rules loaded from the grammar.xml file

【你需要记住的最重要的事情是 LanguageTool 的规则“描述的错误是什么样子”,而不是正确的句子应该长什么样。这和我们学习一门新的语言来说恰恰好相反。】
The most important thing you need to keep in mind is that LanguageTool's rules describe what errors look like, not what correct sentences look like (this is the opposite of how you learn a new language).

Adding new XML rules
Most rules are contained in rules/xx/grammar.xml, whereas xx is a language code like en or de.
pattern 模式

A rule is basically a pattern which shows an error message to the user if the pattern matches.
一个<rule>基于一个模式,当这个模式匹配的时候显示一个错误的 message 给用户。
一个 模式(pattern)给出了 这个单词 或者 词性的标记(part-of-speech tags)。
A pattern can address words or part-of-speech tags. Here are some examples of patterns that can be used in that file:

(1)<token>think</token>
匹配单词 think
(2)<token>think</token> <token>about</token>
匹配短语(phrase)think about,【you need to list each word separately as a token】。
像下面这种写法就不会起作用:<token>think about</token>
(3)<token regexp="yes">think|say</token>
i.e. 也就是说
the word think or the word say
匹配单词 think 或者 单词say。编写这些简单规则的时候,你甚至可以不需要了解什么是“正则表达式”,但是如果you want to learn more about them you can try this tutorial(指南)。这个链接介绍了什么是正则表达式。
笔者注:也就是说,LanguageTool也参考了或者就是用正则表达式作为匹配的语法。
(4)<token postag="VB" />
匹配一个基本形式的动词。
a base form verb 一个基本形式动词
【See resource/en/tagset.txt for a list of possible English part-of-speech tags.】
找到下面的这个文件,到里面去看 词性标记 的写法。【【【这里需要有一张截图。】】】
在D:\tools\OpenSource\LanguageTool-2.6\org\languagetool\resource\en (这个路径的前半部分是笔者电脑里面的路径,大家忽略哟)这个文件里面 tagset.txt 文件。
(5)<token postag="V.*" postag_regexp="yes" />
matches a word whose part-of-speech tag starts with V。
backslash 反斜杠
请注意到,对于 tags 而言,类似于 PRP$ ,你需要在 $ 之前使用 反斜杠,因为它在正则表达式里面有特殊的含义。
【【【这里需要一张截图。】】】
笔者注:加上反斜杠是为了实现转义。否则类似于 PRP$ 这种就会是另外的一个意思,而不是我们所期望的意思。
Note that for tags with a special character like PRP$ you need to escape the $ with a backslash, as it has a special meaning in regular expressions: PRP\$.
(6)<token>cause</token> <token regexp="yes" negate="yes">and|to</token>
matches the word “cause” followed by any word that is not “and” or “to”.
只要 cause 后面不是跟着 and 或者 to ,就匹配,匹配的意思就是让LanguageTool认为是错误的,提示用户修改。
(7)<token postag="SENT_START" /> <token>foobar</token>
matches the word foobar only at the beginning of a sentence. The corresponding postag for the end of a sentence is SENT_END.
只要是 以“foobar”开头的句子,就匹配。这里“匹配”的意思同上。

A pattern's tokens are matched case-insensitively by default. This can be changed for the whole pattern or for a single token by setting case_sensitive="yes".
case-insensitively 大小写
如果你设置 case_sensitive="yes" 就可以改变 整个 pattern。

Alternatively, case-sensitive matching can be turned on for single tokens by using (?-i) in regular expressions (ex: <token regexp="yes">(?-i)Bill</token> will match Bill but not bill).

alternatively(非此即彼;二者择一地;作为一种选择)
be turned on 被打开

case_sensitive="yes" 这个设置被打开也可以通过在表达式里面写(?-i),这样就执行了严格的大小写匹配。
笔者注:经过测试,默认情况下,即不设置 case_sensitive="yes" 的情况下,LanguageTool工具在执行匹配的时候忽略大小写。

The basic elements of a rule

语法检查程序LanguageTool学习和使用笔记的更多相关文章

  1. Python学习的个人笔记(基础语法)

    Python学习的个人笔记 题外话: 我是一个大二的计算机系的学生,这份python学习个人笔记是趁寒假这一周在慕课网,w3cschool,还有借鉴了一些博客,资料整理出来的,用于自己方便的时候查阅, ...

  2. 菜鸟教程之学习Shell script笔记(上)

    菜鸟教程之学习Shell script笔记 以下内容是,学习菜鸟shell教程整理的笔记 菜鸟教程之shell教程:http://www.runoob.com/linux/linux-shell.ht ...

  3. Elasticsearch7.X 入门学习第九课笔记-----聚合分析Aggregation

    原文:Elasticsearch7.X 入门学习第九课笔记-----聚合分析Aggregation 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. ...

  4. hadoop2.5.2学习及实践笔记(二)—— 编译源代码及导入源码至eclipse

    生产环境中hadoop一般会选择64位版本,官方下载的hadoop安装包中的native库是32位的,因此运行64位版本时,需要自己编译64位的native库,并替换掉自带native库. 源码包下的 ...

  5. 开始记录学习java的笔记

    今天开始记录学习java的笔记,加油

  6. 语法分析器初步学习——LISP语法分析

    语法分析器初步学习——LISP语法分析 本文参考自vczh的<如何手写语法分析器>. LISP的表达式是按照前缀的形式写的,比如(1+2)*(3+4)在LISP中会写成(*(+ 1 2)( ...

  7. hadoop2.5.2学习及实践笔记(四)—— namenode启动过程源码概览

    对namenode启动时的相关操作及相关类有一个大体了解,后续深入研究时,再对本文进行补充 >实现类 HDFS启动脚本为$HADOOP_HOME/sbin/start-dfs.sh,查看star ...

  8. 深度学习Keras框架笔记之AutoEncoder类

    深度学习Keras框架笔记之AutoEncoder类使用笔记 keras.layers.core.AutoEncoder(encoder, decoder,output_reconstruction= ...

  9. 深度学习Keras框架笔记之TimeDistributedDense类

    深度学习Keras框架笔记之TimeDistributedDense类使用方法笔记 例: keras.layers.core.TimeDistributedDense(output_dim,init= ...

随机推荐

  1. HashMap源码分析-jdk1.7

    注:转载请注明出处!!!!!!!这里咱们看的是JDK1.7版本的HashMap 学习HashMap前先知道熟悉运算符合 *左移 << :就是该数对应二进制码整体左移,左边超出的部分舍弃,右 ...

  2. 创建React脚手架

    node版本10.14.2 下载地址 如果是其版本的话会出错 css-loader 会不兼容 主要是8.x的版本不兼容 npm install -g create-react-app 全局安装 cre ...

  3. Linux的磁盘配额详解(Quota)

    1. 检查内核情况 检查当前内核是否支持quota,当前内核配置文件在/boot下 如果当前内核不支持quota,需要重新编译内核将quota support编译进核心: File systems   ...

  4. 题解 AT1357 【n^p mod m】

    此题就是快速幂取模 先简单讲一讲快速幂 首先,快速幂的目的就是做到快速求幂,假设我们要求a^b,按照朴素算法就是把a连乘b次,这样一来时间复杂度是O(b)也即是O(n)级别,快速幂能做到O(logn) ...

  5. PHP实现支付宝小程序用户授权的工具类

    背景 最近项目需要上线支付宝小程序,同时需要走用户的授权流程完成用户信息的存储,以前做过微信小程序的开发,本以为实现授权的过程是很简单的事情,但是再实现的过程中还是遇到了不少的坑,因此记录一下实现的过 ...

  6. nginx运行出现 file not found 错误处理原因

    在阿里云装nginx+php+mysql nginx运行出现 file not found 错误处理原因 1,第一情况 location ~ \.php$ { # root html; fastcgi ...

  7. 剑指offer-栈的压入、弹出序列-栈和队列-python

    题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压 ...

  8. html5移动端Meta的设置

    强制让文档的宽度与设备的宽度保持1:1,并且文档最大的宽度比例是1.0,且不允许用户点击屏幕放大浏览 1 <meta name="viewport" content=&quo ...

  9. 使用pyenv对python版本管理

     1.使用pyenv进行python版本管理   1.1安装对应的依赖包,如果不安装后续操作可能会因为缺少某一个变量包而出现错误 sudo apt-get install -y make build- ...

  10. NSPredicate的使用,超级强大

    NSPredicate *ca = [NSPredicate predicateWithFormat:(NSString *), ...]; Format: (1)比较运算符>,<,==, ...