第一个微信小程序做了什么?搞定头痛的法语动词变位

为什么要做这个小程序?

来来来,先看一下 Wikipedia 上的头疼解释:

法语动词变位(法语:Conjugaison du verbe en français),是指法语动词为了表达不同的语式、时态、体、人称和数而产生的形式变化。法语动词可以分为三组:

  • 第一组:不定式以-er(aller 除外)
  • 第二组:不定式以-ir 结尾,现在分词以-issant 结尾
  • (以上两组为规则动词)
  • 第三组:不规则动词
  • 第一部分:不定式以-ir 结尾,现在分词以-ant 结尾
  • 第二部分:不定式以-oir 结尾
  • 第三部分:不定式以-re 结尾
  • aller

看着虽然头疼,但是解释的挺精确到位了。然而这仅仅是打开了它的冰山一角,更头疼的在后面:法语的动词变位变位中七种不同语气:直陈式(indicatif),虚拟式(subjonctif),条件式(conditionnel),命令式(impératif),分词(participe),不定式(infinitif),动名词(gérondif)。

配合上面的语气,还有各种时态:

直陈式:

  • 现在时 (présent)
  • 复合过去时 (passé composé)
  • 未完成过去时 (imparfait)
  • 愈过去时 (plus-que-parfait)
  • 简单过去时 (passé simple)
  • 先过去时 (passé antérieur)
  • 简单将来时 (futur simple)
  • 先将来时 (futur antérieur)

虚拟式

  • 现在时
  • 过去时 (passé)
  • 未完成过去时
  • 愈过去时

命令式

  • 现在时
  • 过去时

条件式

  • 现在时
  • 过去时

不定式

  • 现在时
  • 过去时

分词

  • 现在分词
  • 过去分词

动名词:将现在分词置于介词en之后构成。

好的,大概就这么多。刚才提到了所有的动词分为三组动词,分别是第一组、第二组、第三组(这不是废话么,但确实是这么叫的),其中第一组、第二组动词的所有变位形式还算是比较固定的,第三组就是不规则动词。

但是,事实是,不管是不是规则动词还是不规则动词:记起来都很令人头疼。

小程序的第一版 v1.0.0

于是,我想要做一个小程序,来帮助被法语动词变位弄头疼的朋友。一开始这个小程序是采用去网上扒现成的动词变位数据。我用了陈教授推荐的 webscraper 扒了一个动词变位网站上的动词变位数据,每次扒一个单词。

/uploads/2019/06/2019-05-10-15_34_56-.jpg

别看才一个单词,一个单词 6 个人称,16 种时态,再加上现在分词和过去分词,大概有 100 不到一丢丢种情况。爬完几个之后就变成了熟练工,第一版小程序上线时,一共有 30 个动词的查询和背诵,这时数据表中就有了接近 3000 种情况。

既然是记忆小助手,那它的主要功能必定是帮助你更好地进行记忆,这里采用了最简单粗暴地打字默写形式,答对了过,答不对继续填到对跳下一个。朋友们可以自己选择时态和单词范围,因为第一版才 30 个动词,所以都是基础常用词。

程序的第二版  v1.2.0

30 个动词肯定不够用啊,而且第一版的界面用了腾讯官方的 weui,觉得有点小丑,于是就换了一个 UI 组件 ColorUI,瞬间看上去感觉好了很多。除了界面有了全新的改变,动词突然从 30 个涨到了几乎涵盖所有法语动词的 7016 个动词。按照之前那种,每种情况单独存一条的话,会有 701600 左右种情况,对于微信小程序来说显然存不了那么多(小程序大小上限为 2 兆)。

/uploads/2019/06/2019-05-10-15_35_48-.jpg

后来的解决方案是这样的:在 github 上找 conjugaison francaise,没想到居然还找到了,顺藤摸瓜找到了个开源的数据库叫做 verbiste,里面列出了 7016 个动词的对应典型动词,每一个典型动词都详细列出了每个时态是对应哪种词根。当 7016 个动词的词根和这些典型动词的词尾相结合之后,便形成了相应的动词变位。当然拿到这个文件之后需要进行相应的改动变成 json 格式。

/uploads/2019/06/2019-05-10-15_41_24-.jpg

然后么,大概就分为这两种情况:

  • 简单时态:  动词的词根加上对应典型动词的词尾
  • 复合时态: 判断用 avoir 还是 être,然后加上动词的过去分词(过去分词也是根据上述进行拼接的)

除此之外,还有一些细节问题,比如第一人称 Je 和后面动词的缩合问题。举个简单点的例子,一个动词的变位再怎么变第一个字母是不太会变的,但是有一个动词很特殊 être,照道理 Je 碰到它都需要缩合成 J’。être 的第一人称单数居然是 Je suis,这就不用缩合,好的,这是一个坑货。

还有一些细节,比如法语有很多特殊字符:éèçàêîÏù 等等,所以我多增加了一列叫做”简单单词“:比方说 être 的简单动词就是 etre。这样的话就出现了用户可以不限特殊字符地查找动词了。

小程序的第三版  v1.3.0

这一版也是最新的,基本功能和上一版本差不多,另外加了一个”学习功能“,专供懒人的懒人模式,不用打字照样记忆(虽然这样我觉得会没有打字记忆效率高)。

卡片顺序和单词参考了“法语动词变位渐进”。卡片的单词内容大致如下,不同的时态下方的单词数量和内容均有所不同,具体如下图(点击看大图):

/uploads/2019/06/2019-05-08-17_52_34-法语动词变位学习数据201904by黄晓栋.xlsx-Excel.jpg

具体的内容可以参见如下:

/uploads/2019/06/2019-05-08-17_12_30-poster.pptx-PowerPoint.jpg

主要更新内容

v1.3.0  日期:2019/05/07

  • 增加中文翻译
  • 更换欢迎页面,欢迎页面可以直达想要用的功能
  • 增加学习模式,卡片式学习(实际上是懒人模式,不用打字即可背变位)
  • 修复了直陈式简单过去时默写时的判断问题(2019/05/06)
  • 7000 词查询部分按钮在 ios 端会出现 bug,已换成透明
  • 修复了一些小问题
  • 更新了一些信息

更新于 2019-05-10

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注