一个有趣的点子,语法检查器

elisp

#1

学习英语是一个长期的过程,我一直希望能够在Emacs中学习英语,但是目前尚没有哪一种学习方式能够让你在本文编辑器中进行 学习-测验-复习 的循环, 原因是因为测验环节做不好,我指的是像真正的老师一样进行的测验,会进行语法检查,语法建议,单词建议,等等一系列的检查。

但是我觉得目前借助人工智能这些应该逐步能够做到,使用tensorflow训练一个大的语法库,然后智能给我们进行纠错提示,帮助我们学习。

这其中需要 tensorflow 模型 – 可以进行大规模的训练机器 – elisp写的前端界面,一系列工作。


#2

https://www.grammarly.com 了解一下。


#3

这个是收费的啊,而且缺少Emacs的流畅感


#4

Case:

训练数据量少了 -> 没用

“正常的”训练数据量 -> 电费带宽乃至硬盘都不用钱啊


#5

电费带宽这种东西只需要耗费一次,之后可以共享模型出来


#6

grammarly 只能纠错,不能为用户显示句子的语法结构。


#7

真以為只要一次?后续的 update 和 maintenance 就不管了?你对训练模型多大沒有数的嚒?


#8

https://www.grammarly.com/native/mac

Standalone version 有语法分析和统计的。


#9

后续的update其实个人对其影响也不大,而且模型的核数据是维护在中央机器的,我的想法是不用个人去单独训练了。


#10

你在要中央机器了,不就有水电带宽的成本了么


#11

等你弄好了 咱们也给爱好中文的外国人弄一个


#12

grammerly老是漏查。。不知道是不是免费版比较有限- - (ps language-tool也是一样。。)

http://corenlp.run/ 了解下


#13

windows版没有分析的功能,至少免费版没有找到。。。

fuxialexander说的那个应该就是我想要的。

不过我不懂NLP,分析出来的结构似乎很难读的样子。


#14

多谢,不过感觉分析出来的结构不怎么直观,似乎很难读的样子。

我不懂 NLP,请问corenlp产生的各种语法结构是不是只有懂 NLP的人才能看得懂?


#15

https://languagetool.org/ 应该是同类工具, LanguageTool 是开源的。


#16

我也不懂。。里面用了很多缩写,感觉应该能在什么地方搜到具体的含义

不过可以大致对照着自己的理解看 比如看自己分析的主语在他那里标记成了啥


#17

找到了


#18

做 NLP 的。

首先 parsing (句法分析) 是 NLP 里一个基础但是又很难的任务,CoNLL 每年都会有相关的评测。但是目前在学术研究的数据集上,最好的效果也不到 90%,见

上述效果基本反映了业界最前沿系统的效果。

而这个 parsing 系统呢,和所有的机器学习系统一样,不管你给什么输入,它总是会有输出的,哪怕是你给一个完全不符合语法的句子,它照样会尽量去分析出语法结构来,尽管这个语法结构在我们看来是错误的。

所以利用 parsing 系统,要满足楼主的要求,可能有两种方法

  1. 预先定义好什么语法结构是正确的,什么语法结构是错误的,然后用 parsing 系统得到句子的语法结构,和这些预定义的规则做比较
  2. 在现有的 parsing 系统的结果上,直接进行转换得到正确的语法结构

方法 1 的问题在于需要先定义大量的规则,需要很强的专业知识才能做这个事情,这个事情说实话上世纪已经做过太多了;方法 2 的问题在于,需要大量的标注数据,而且是在语法结构层级的标注,这个同样需要极强的专业能力,需要投入的人力和财力都会是一个不小的数字 —— 当然,对英语而言,可能已经有学术用的数据集,这个不太清楚。

当然,除了这两种方法,其实还有一种方法,那就是直接跳过语法分析,做句子的纠错,输入一个 语法有错误的句子,输出一个 含义一致但语法正确的句子,这里的两个条件

  1. 保持输入和输出的语义一致
  2. 保证输出句子的语法结构正确

都是很难的,而且同前面的方法 2 一样,需要大量的标注数据。

那假设我们有足够的大量的数据,就 OK 了吗?不是的,就算有足够的数据了,训练出来足够好的模型了,还有一个问题,那就是:自然语言其实是一直在动态变化的,某些我们原来认为错误的语法结构,在被普遍使用后可能慢慢地就被接纳被认为是合理的了。

所有的规则都有例外,所有的例外都是规则,至少在我看来,语法可以作为一个做语言分析时候的指导工具,但并不是一个语言必须无条件服从的约束,这也算是 NLP 的难点和乐趣所在了。

当然,单纯是英语语法检查、纠错这件事情,并不是不可行的,说这么多只是想说一下 使用tensorflow训练一个大的语法库,然后智能给我们进行纠错提示,帮助我们学习 这件事情的困难。这个事情势必是一个综合的系统,可能有人工制定的语法规则来做纠错,同时又有机器学习的模型来作为补充,搞不好还会有真·人工的辅助。