一个小工具引发的两个思考

背景

近期搞了一个小工具,主打的功能是辅助背单词,大致包含的功能如下图

功能就不再赘述了,有兴趣的可以查看此 repository。在此写一点在开发这个小工具期间,我的一些想法和感悟。有些地方说的也许不恰当,欢迎批评指正。

问题

1 一个“好的”项目目录结构是怎样的?
2 单词抽检的策略选择问题,如何挑选合适自己的抽检策略?

下面带着这两个问题,展开本文。

关于目录结构

目录结构的设计是一个老生常谈的问题,正如“一千个读着就有一千个哈姆雷特”,不同的人有不同的见解,但是大致来说都差不多。
目录结构

大致可以简化为如下图所示
简化目录样式
可以看到,基础要素分为:

  • 界面层
    • 大前端:Web、APP 等
    • API
  • 路由层:辅助进行路由控制
  • 控制层:也成为业务耦合层,负责协调各个模块实现上层业务逻辑。起到承上启下的功用。
  • 模块单元:理论上来说,模块要设计成高内聚、低耦合的形式。各个模块之间应该是比较独立的,模块之间允许存在继承关系,但是尽量不要出现模块之间相互调用的情况。如有此现状,需要进一步进行抽象,将公共部分单独抽取,下沉到更为底层的公共模块。
  • 基建:指基础建设相关内容,比如底层存储,各类SDK、API公共、通用的处理等。

基本上来说,上述模式均遵守 MVC 的设计原则,不外乎有适应各自项目的变种。没有最好的项目目录结构,只有适合自己的。做到逻辑清晰,易维护,也就差不多可以了。

单词抽检策略

在这个小工具中,我目前使用的策略很简单。对 master_vocabulary 表中 cutoff 字段为 0 的单词,进行随机抽取,附带当日recite_history 中 right 字段为 0 的错误单词进行混排。

这个策略很容易实现,但是使用起来效果并不是很好,主要见于单词之间的相关性很差,可以说毫无关联,不利于进行记忆。

相比较起来,百词斩的单词记忆功能做的还算可以。给定一个单词,下方进行四张图片的展示,将单词含义图片化,来进一步加深用户对单词的认识。但是用了几天后发现,这个策略太受限于特定的场景了。离开了图片的语义,我本人很难从一个晦涩的单词上联想起它本身的含义。

看到网上有基于 PCA 和 word2vec 的介绍,觉得这倒是个不错的应用方向。单词之间是存在一定的关联性的,倘若能“举一反三”,这样的记忆效果必然是效率倍增,且印象深刻。回忆起初中英语老师的教诲。“以一个荒诞的画面,将单词附着到某个场景中,组词成句,这样一旦能场景化,单词也就不在话下”。

举个例子:现在有 refrain(压抑、限制、压制)、bulb(灯泡、植物鳞茎),如何组词成句,达到天马行空的场景化表达呢?

这个时候可以随意的发挥自己的想象力,我组的一个句子是:

youngster should refrain their desire, or they will be like the bombed bulbs.

翻译示例
句子可能不符合语法,但是大致的意思能表述起来就算行了。这下再看这俩单词,不难被串起来了吧。

给定了多个单词,只要发挥想象力,总能描绘出一幅语义化的场景画面。后续如果可以借助深度学习,对此类型的内容进行建模,对自己平时的发言风格进行建模来定制自己的组词成句,相比是有很大的辅助记忆功效的。(ps:如果哪位老铁用这个想法申请了专利,可以加上我的名字~)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

泰 戈 尔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值