这是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. Java本周总结1

    这两周我上认真的课应该就是李老师的课了/ 第一周主要跟我们讲述了java的发展史何java开发环境的搭建,带领我们走进了java,李老师的精彩讲述让我们对Java有了深刻的认识/. jdk下载安装包我 ...

  2. 转 appium grid分布式环境搭建

    https://blog.csdn.net/ljl6158999/article/details/80803239 说起grid,了解selenium的人肯定知道,他就是分布式的核心.原理是简历中心h ...

  3. 【Linux-设备树】编译器DTC

    DTC编译器:设备树源码DTS文件编译为二进制文件DTB. DTC编译器的作用:就是对设备树的源码的文件进行语法检查,根据linux的内核要求检查各个节点以及属性,将设备树源码编译生成二进制文件,以保 ...

  4. zookeeper设置客户端连接超时被expired

    在网络环境非常差的情况下,使用zookeeper集群往往会遇到连接expired了: 客户端提示连接从ZOO_CONNECTION_STATE变为ZOO_EXPIRED_SEESION_STATE,然 ...

  5. 索引之----mysql联合索引

    重要概念: 1.对于mysql来说,一条sql中,一个表无论其蕴含的索引有多少,但是有且只用一条. 2.对于多列索引来说(a,b,c)其相当于3个索引(a),(a,b),(a,b,c)3个索引,又由于 ...

  6. poj-1236.network of schools(强连通分量 + 图的入度出度)

    Network of Schools Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 27121   Accepted: 10 ...

  7. Skiing POJ 3037 很奇怪的最短路问题

    Skiing POJ 3037 很奇怪的最短路问题 题意 题意:你在一个R*C网格的左上角,现在问你从左上角走到右下角需要的最少时间.其中网格中的任意两点的时间花费可以计算出来. 解题思路 这个需要发 ...

  8. Windows 运行时加载动态库

    下面是一个运行时加载nvcuda.dll,并检测当前驱动版本最大支持的CUDA版本的例子. #include "cuda.h" #include <stdio.h> # ...

  9. python 如何解决高并发下的库存问题??

    python 提供了2种方法解决该问题的问题:1,悲观锁:2,乐观锁 悲观锁:在查询商品储存的时候加锁 select_for_update()  在发生事务的commit或者是事务的rollback时 ...

  10. 6-1 如何读写csv数据

    >>> from urllib import urlretrieve >>> urlretrieve('http://table.finance.yahoo.com ...