这是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. 安装OpenStack计算服务(nova)

    1. 配置数据库 数据库安装在控制节(controller)点上 $ mysql -u root -p 2.创建 glance 数据库 CREATE DATABASE nova; GRANT ALL ...

  2. [HDU 3712] Fiolki (带边权并查集+启发式合并)

    [HDU 3712] Fiolki (带边权并查集+启发式合并) 题面 化学家吉丽想要配置一种神奇的药水来拯救世界. 吉丽有n种不同的液体物质,和n个药瓶(均从1到n编号).初始时,第i个瓶内装着g[ ...

  3. 服务性能指标:PV、UV、TPS、QPS

    名词解释 PV Page View,网页浏览量.网页被读者调用浏览的次数.网页每次打开或刷新一次页面,记录一次.用户对同一页面的多次访问,访问量累计. UV Unique Visitor,独立访问者. ...

  4. Python数据结构与算法?

    数据结构与算法(Python) 冒泡排序 冒泡排序(英语:Bubble Sort)是一种简单的排序算法.它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.遍历数列的工作是 ...

  5. xilinx基础入门

    2019.09.03 一.基础部分及语法 一.FPGA程序的固化 [USF-XSim-62] 'simulate' step failed with errors. Please check the ...

  6. MVCC/分布式事务简介

    之前我们学习了RocksDB,但这还只是一个最基础的存储引擎.如果想把它在生产环境中用起来,还需要解决很多问题: 如何从单机扩展到分布式? 如何实现事务,并对事务进行并发控制? 用户接口能不能高级一点 ...

  7. 03-Django-models

    # Models 模型 - ORM - ObjectRelationMap : 把面向对象思想转换成关系数据库思想.操作上把类等价于表格 - 类对应表格 - 类中的属性对应表中的字段 - 在应用中的m ...

  8. DEV控件的分页控件,实现勾选复选框

    /// <summary> /// 单元格的点击事件 /// </summary> /// <param name="sender"></ ...

  9. 基于maven的javaweb项目模块化开发

    转自:https://my.oschina.net/kingfire/blog/273381 基于maven的javaweb项目模块化开发 引言 考虑团队拥有多个类似项目的情况,比如一些功能差异不大的 ...

  10. new/delete、malloc/free 的区别

    相同点 1.都可以动态的申请或释放内存 2.存储方式相同,动态申请的内存都存放在堆中,无法自动释放,要调用对应的delete和free   区别 1.new能自行的计算需要分配的空间,malloc需要 ...