FreeMdict_ 面向日语专业的 Python 自学&考证指北

摘要:面向想自学编程的日语专业的同学, 推荐了编程语言和相应的教材以及视频课,也谈了下自己备考计算机二级(Python 方向)的一些经验。


创建日期: 2022-09-16
修改日期:
标签: python,备份,日语


日语专业学编程的建议

注:本文是在做社会科学研究的一定要熟练掌握一门编程语言的讨论。

这个时代,会写点小程序没什么了不起,也就算点鸡鸣狗盗的本事吧。但是,不会写还真就麻烦了,这个麻烦其实对搞理科的比搞文科的还要大。这里说的文科不包括需要艺术天分的文学创作。现在是信息大爆炸的时代,早年那个凭着博闻强记就能安身立命的时代早已结束了,搞社会科学如果没有掌握并处理海量信息的基本技能,是一件令人悲伤的事情。想起早些年有些文科学者靠读那套著名的商务印书馆汉译世界学术名著丛书搞研究,我就想,看这二手的翻译材料还能叫研究?闲的蛋疼,说点感想给大家喷一喷

哈哈哈哈,感觉现在学语言学的也得熟练掌握一门编程语言才行了,“语料库”三个字真的是水论文的神器:)

另外,大家也可以分享一下心得和一些很有意思的项目,考虑到本论坛 CS 专业的人可能不多,偏文科方向会多一点,可以整点实在的东西,什么 LeetCode、龙书这样过于专业的东西就不要丢出来了。

我先来,算是抛砖引玉吧。

先简单交代下背景,高中理科,日语专业本科,学编程全靠自己一个人摸索,没报过班。

最常用的编程语言是 Python,跟着北理的嵩天老师《Python 语言程序设计》学习,三天打鱼两天晒网地学了 2 年,才考过了 Python 的计算机二级(主要还是背题库背过的)。摸过一点 JS,主要是为了写 Auto.js 脚本,折腾的过程中意识到 JS 在数据处理方面实在是太拉跨了

综上,如果给学日语的同学推荐编程语言,JS 和 Python 里面选的话,

  1. 出于学术研究的目的,我偏向于推荐 Python,我接触过的日语相关的语料库研究工具Wordless和大名鼎鼎的 mecab都与 Python 高度相关。现成的语料库或者只依赖第三方工具编辑下恐怕不太容易做出真正有意义的研究玩出新花样,而且做研究的数据往往都都是数以万计,总不能手动编辑吧。Python 在文本处理方向甩 JS 真的不是一星半点——抛开第三方库不谈,单就正则表达式,这个对于文本处理而言最重要的特性而言,JS 真的是相形见绌。

如果只是为了处理文本的话,推荐的学习路径是看嵩天老师《Python 语言程序设计》入门了解基本的语法,然后再看看配套的《Python 网络爬虫与信息提取》(边看边动手),最后翻翻余晟老师的《正则指引》的相关章节(不要光看,把现成的代码边改边看学得更快,过一遍,之后遇到问题再查就可以了),有了上面三板斧,基本就能做出来自己想要的语料,轻松水满字数,查重率也轻松降下来虽然据说国内的日语论文查重就是个摆设

  1. 出于就业的目的的话,我推荐 JS。虽然日本目前招聘程序员最受欢迎的还是 Java,但网页作为目前为止在日本运用最广的跨平台技术(Java 其实是伪跨平台啦),而且 JS 的上手难度和 Python 有得一拼,蛮适合非计算机专业的人自学。再加上近几年 TypeScript(相当于 JS 的升级版) 异军突起,node.js 、Electron、React Native 等等后起之秀,让 JS 早已不只是简单的 HTML 网页的脚本语言。在未来,可能真的可以在软件开发领域和 Java、C#、Swift 等传统语言分庭抗礼。学习路径的话,我是看的阮一峰的《JavaScript 教程》,视频课是 Build Responsive Real-World Websites with HTML and CSS(没看完)

另外,有用过 R、Perl 的可以简单评价下么?据我所知,这 2 门语言在文本处理和数据分析方面也蛮有优势的。

个人的一个教训是,多年来一路为求简单方便都找权宜之计,所以整过 VB,js,c,python,结果啥都知道一点但都是三脚猫,三脚猫的问题是效率低、解决方案的层次不高。所以,从头开始系统掌握好一门语言是最好的选择。python 挺好的,好用的网络相关的库比较多,js 也是必需的,因为大部分信息现在都要从网页上抓。对了,我比较老派,不要忘了把数据结构学一下,基础中的基础。

这个确实是相当重要的,我都忘记了。

不过不要拿什么《算法导论》和国内出版的数据结构相关的教材入门,不然真的会怀疑自己的智商好吧,我就是逊啦

个人更推荐:当折腾过几个项目之后,自己意识到不注意数据结构导致写的代码跑起来确实会有问题这一点之后再开始研究这方面比较好,不然可能真的是看天书。

我就是在自己做词典时,发现一个脚本跑了 3 天都还没完才洗心革面,回头去看这方面的书。推荐《我的第一本算法书》,里面没有代码,纯粹讲解思路,不过自己磕磕绊绊、半抄半写的推出最基本的几个最基本的经典算法之后,现在写东西,都会下意识地注意这方面的问题,不是真·面向过程就了事了:)

如何考二级证

注:这部分是在这个 python 教科书怎么样 - 闲聊吹水 - FreeMdict Forum的讨论

这个 2022 年新版的 计算机二级证书的教科书可以吗?
修编词典用的 python 技能是 python 的哪个分支?(我猜一门计算机语言应该有很多路径,比如数据抓取就可以写一本书,博大精深;计算机基础概念都不懂。)
这本书配套么
|500
一、可以阅读英语,但是计算机专有词汇看不懂,举例如下午喝咖啡休闲时候,看到一个词( read in parallel )的时候卡壳了。
二、计算机二级证书于我有用。
三、感觉正则、js、python(数据抓取、清洗、整理)等技能,对自制词典比较有帮助。对我来说痛点是搜 python dictionary 出来的不是 python 的计算机词汇。

首先,关于你的需求,我建议你用中文学完 Python 基础之后,看看官网文档,或者看看大名鼎鼎的CS61A课程,看看真实的语境下怎么表达有关 Python 的概念。

然后作为一个考了 2 次的学渣,谈一些个人的看法吧:
|500

关于教材

关于教材,我推荐这里提到过的做社会科学研究的一定要熟练掌握一门编程语言 - 闲聊吹水 - FreeMdict Forum北理的嵩天老师《Python 语言程序设计基础》(你问的教材以下统称《二级教程》),理由:

  1. 有专属的视频课:中国大学 MOOC在开课期间会有助教解决你的问题,B 站上也有人搬运完整的视频;
  2. 嵩天老师也是《二级教程》的编者,但二者编写风格不一样——尤其是框架结构上,语言风格也略有区别。所以《Python 语言程序设计基础》更适合学习,而《二级教程》(可能)和谭浩强的 C++是一个风格(没读过谭前辈的书,这里是强调不好理解和无趣谭前辈不要打我 233),估计除了备考,没有谁会看得津津有味,而且排版也没有《Python 语言程序设计基础》好
  3. 2 本书在基础知识部分的深度是一样的,但注意 2 本书还是有不一样的地方:《Python 语言程序设计基础》的后半部分介绍的 PIL、request 等库都不在 2018 年考纲范围,而《二级教程》,多了 2 个(在考纲范围内的)库:time、Wordcloud(标注的是可选……但我在备考刷题时一次都没有碰到过)
  4. 我觉得只求拿证的话,更值得买的东西是 NCRE 无忧考吧家的题库(某宝和某多多会比官网便宜 5 元)。我第一次考前买了《二级教程》简单翻了下,上考场了才发现怎么考的内容全是我没注意的小细节(反转列表、字典保存计算更新数据),而第二次考前刷完了他家的题库,考试抽到的就是一模一样的原题。至于没有拿到优秀,很可能是因为我选择题做得太差了吧……
  5. 个人感觉就算把教材背下来,也比不上自己动手敲一遍代码(哪怕抄)。我开始刷题的时候速度很慢,因为解题要用技巧是自己看书时没注意的地方。所以一开始基本就是:看一眼题目,想几分钟,把能写的代码都敲上然后提交看眼评分(这个很重要哇,没有老师告诉你写得对不对的话,怎么进步呢)。然后把标准答案的代码缝合到自己的代码上再提交(缝合的过程往往需要改很多地方,不是真的照抄,有时候也会用与答案不一样的写法),直到满分为止,找个地方把满分的代码保存好,睡前复习下。过几天把自己抄过的题再做一遍,这一遍尽量先不看答案,看看自己能做到哪一步,然后对照满分代码反思总结下,用注释#写在代码旁边。
  6. 实际上,我代码能力提高并不是在备考期间,而是自己折腾一些东西的时候:比如读写、操作文本文件是我在修改叶峻峣的一个的 Python 脚本时熟练掌握的;pyinstaller 是我在反复打包自己写的工具时形成的肌肉记忆;字典类型的强大是我在实习期间写代码才逐渐意识到的……等等,所以你最好找到一个让自己有持续的动力去啃代码的动机,不然恐怕无法说服自己跨过最难的入门阶段。最好的打开方式莫过于找一个简单、有趣、又实用的项目,边改边翻书了(比如论坛里那些制作词典的工具,再比如……日本語非辞書形辞典 233,这个项目的 v1、v2 版本代码真的比那些爬虫什么的要简单得多)

应试技巧

然后补充一些考试技巧:

  1. 提前熟悉 Python 默认的 IDLE 编辑器,没有补全功能写着真的很不习惯
  2. IDLE 可以调字体和背景颜色
  3. 考场的电脑也可以翻 Python 官方提供本地文档,想不起来某个函数了可以翻一下
  4. 反转列表元素:没有反转二叉树那么难,就是一句话ls[-1::-1]
  5. 字典类型在考试中会用到的最有意思的的操作是d[i]= d.get(i,0)+1,这个技巧在 2 本书讲解字典类型时都没有强调,都是在实际项目中直接抛出来的
  6. 有一道题会用到正则,大致要求是给《八十天环游地球》的 TXT 文档编写目录——这个用关键字提取然后手动剔除不符合要求也可以完成。但还有其他更复杂的需求,手动剔除的话时间真的不够。我第一次考试最后一道大题就是这个,只能说自己运气真的太差了,题库里面将近 20 道大题,只有这一道需要用正则,其他都是什么统计人物出场次数这种常规的文本处理
  7. 选择题要提前背,除了软件工程、数据库原理这样的公共知识,还会考 Python 的一些细碎的知识,不准备下的话,估计会错很多——因为这个部分不合格的话真的不划算

资源分享

最后还是分享一些可能有用的东西,不然也对不起你花时间听我哔哔这么久:

《Python 语言程序设计基础》PDF 版

  1. 用 ABBYY 处理过,想不起来某些东西可以用搜索快速找
  2. 手动编写了目录,方便跳转、阅读
  3. 有少量铅笔的批注,但只有几页

NCRE 题库练习代码

  1. 没有题目,分享出来只是觉得我的笔记可能会帮你从不一样的角度思考,顺便给一个进度参考
  2. 请忽略那些哈哈哈(囧),这个是我写给自己用的笔记,还没有系统的整理

补充实物的图片:
|500

|500
|500

标注了本书的意思是《Python 语言程序设计基础》没有提到而《二级教程》中有的内容,页码指的是实体书,不是 PDF
|500

配置环境

注:这部分是在这个 python 教科书怎么样 - 闲聊吹水 - FreeMdict Forum的讨论。

学 python 怎么搭环境可以少走弯路啊?

把教材读一遍吧,然后再注意我的补充:

  1. 准备好用的梯子——不只是为了装个安装包,还为了以后用第三方库不用来回折腾(anaconda 等工具没有收录的话,还是得靠自己下)
  2. 官网 找安装包,打开下载推荐的就可以了,记得不要下载类似这种命名风格Windows embeddable package (64-bit),这个是便携版,水有点深,我怕你把握不了:)
  3. 最好装 D 盘,这样的好处就是装的库多半会装到 D 盘,目前为止我没有碰到由于不是装 C 盘导致的问题
  4. 记得勾选add to path ,没勾也没关系,百度下添加到环境变量然后补一下就可以了
  5. 挑一个好用的编辑器,个人推荐 VSCode (插件推荐 ms-python.python ——自动补齐和快速格式化代码和 2gua.rainbow-brackets——用不同颜色高亮括号),电脑性能好的话可以装 Pycharm (不然每次启动都够你等半天)
  6. 学一段时间后,不满 Python 的性能的话,最简单的方法就是安装 pypy3(这相当于一个解释器)——啥都不用改,只需要一句 cmd 命令就可以获得 3 倍的加速!(注:调用部分第三方库可能会出问题,但是用于处理本地数据应该没有问题的),这个我随后补充一些注意事项,你先把这一条当做是我画的饼好了 233

read in parallel 的意思

如果你看的是这篇文章Splitting Large CSV files with Python - MungingData

Large CSV files are not good for data analyses because they can’t be read in parallel.  Multiple files can easily be read in parallel.

那么这里的read in parallel用稍微专业点的说法叫做“多线程处理文件”。

顺便找了一篇文章python 语法:多线程同时处理大量文件 - 知乎 (zhihu.com)