提前声明
由于我的方向更偏自然语言处理,所以这篇文章只能分享下我认为从事语料库语言学方向,对 Python 的要求中和「术」相关的资料,主要以怎么写代码为主。
但是,这个方向的代码对统计思想和日语本质的理解的要求更高——也就是「道」,即「如何」想到该「怎么」写 Python 代码来验证自己的观点),这个方向我就不信口开河了,只推荐一篇很不错的知乎回答:文科生想自学一点统计学,看哪些入门书籍比较好? 。虽然没有专门谈到日语,但也还是强烈推荐读读,剩下就靠大家自己摸索啦,也很期待大家的分享!
接下来就是正文啦。
入门书籍
首先,推荐王垠老师的如何掌握所有的程序语言, 这篇文章非常适合才开始学编程的人读读,可以帮助建立如何「正确」地学「编程」的认知。
入门学习材料的话,可以先看我的系列博客合集面向日语专业的 Python 自学&考证指北,重点看看北理工 Python 语言程序设计就好,其他大家应该用不上。
至于 Python 方向的入门书籍,除了上面博客提到的那本教材,大名鼎鼎的绿皮书《Python 编程:从入门到实践》也可以读一读。
至于国内出版的其他(尤其是中国人写的) Python 入门书还是算了,都不怎么样。
特别是 DeepSeek 火了之后,又冒出来一大堆垃圾教材,可能是因为赶时间,这类垃圾教材基本不提供配套视频,更有甚者连完整源代码都不给,看到这类教材直接丢垃圾桶就好。
但强烈推荐读读朱雷老师的《Python 工匠》。
由于这本并不是严格意义上的入门教材,第一次读可以忽略具体的 Python 代码,花半天时间过一遍,建立对「什么是好的 Python 代码」和「什么是垃圾代码」的感觉就行,之后有空拿出来多翻翻就好。
P.S. 如果只是搞学术研究,面向对象相关部分完全可以跳过,因为学术研究的代码一般用不上那里谈的技巧,但最后的「单元测试」部分最好认真读一下,而且最好动手用 unittest 写点单元测试,马上会解释这么建议原因。
《Python 日语数字人文之语料库语言学技术及其应用》这本书和我的方向不太一致,所以只看了目录,但感觉对(日语)语料库语言学方向的同学会有很大帮助。
如果读完上面还觉得意犹未尽,也可以关注下我的读书记录:
https://booklog.jp/users/39094f3f2e68946a(我在日本旧书店和图书馆闲逛时,碰到有意思的书都会扫码记录下来,但主要以 Python 后端和自然语言处理为主,大家有空看眼就好233)
面向单元测试学编程
如果是第一次学编程,最开始的1个月可以多花点时间看书,之后就尽量多花时间「改」代码吧。
「改」代码是指:先拿中文清晰准确地写清楚自己的要求,并提供「单元测试用例」——很多时候单纯描述容易产生误解,但有测试用例,GPT 往往能准确理解到底想要啥。然后,验证 GPT 生成的代码是否真的通过了「单元测试」,没通过的话,把报错丢给 GPT,让它改。通过的话,就可以继续提要求了。一定要小心,GPT 往往会违反要求偷偷修改一些不该改的地方,如果没有单元测试,这个时候很容易变成「新需求还没实现,新问题倒是出现了」的尴尬局面。
另外,实际研究中,如果自己爬数据,经常要写复杂的 pipline,但写这种东西基本不可能一蹴而就,要反复修改代码。如果没有单元测试,这个时候也很容易出现「本来的问题还没解决,又出现新问题了」的尴尬局面。
而且,不少研究项目往往横跨数月乃至数年,没有单元测试的话,几个月之后再看自己当初写的代码,可能真的会觉得「这啥玩意儿啊,与其修修补补,不如推了重写」(别问我为什么知道,过几年大家就懂了233)。
好吧,估计有同学已经猜到了,上面的观点总结成一句话就是「测试驱动开发」。
虽然网上关于这个方法的评价两极分化,而且这个东西讲给纯小白确实稍微早了点,但作为一个(曾经)完全不写单元测试的过来人,真心建议早点了解这个东西,因为这真的能帮大家少走很多弯路(当初要有人告诉我这个就好了,唉…)。
不过入门阶段没有必要专门看关于测试驱动开发理论的书,记住「写代码的时候,也尽量抽空写下单元测试」就行了。
适合阅读的 Python 入门项目
本来是想标题党一把,写成「适合读源代码的项目」,但我怕「源代码」这三个字直接把大家吓跑了(笑)。
不要紧张,推荐的都是和日语息息相关的「小」项目。
石川慎一郎老师的词频生成工具 用 Python 调 Mecab 写了一个非常实用的小工具,大家应该能用上。
Pythonで 日本語処理 入門 〜フリガナプログラムを作ろう〜 这个用的不是(学术研究常用的)Mecab,而是(工业界常用的)Sudachi。作为入门教程,写的真的非常好——思路清晰,详略得当,涉及的内容难度也恰到好处。不过标注读音的那部分可能稍微有点难,可以先收藏起来,哪天用到了再看也行。我在看到这个之前,花了周末整整两天才搓出个一样的轮子。大致思路倒不难,但要跑通所有单元测试就很花时间了。
接下来就是「真・源代码」级别的项目了。
从单元测试开始看起,一个方法一个方法地调试、理解,其实「读源码」真的没有想象中那么难,而且完全吃透一个「好」项目的源代码,对提升编程能力真的有很大帮助。
jaconv:如果要写爬虫构建语料库,应该就会用这个库来清洗文本。这个库出自专业工程师之手,优秀的架构设计+简洁的代码实现+完善的注释和测试,日专生才开始挑战读源码的话,我最推荐这个。
nonjishokei:基于词法学理论,专为辞典检索设计的轻量形态素解析器——好吧,不装了,这其实是我写的项目,非辞書•三重樱版本的 Python 实现,看一眼单元测试,大家就知道这个项目在干啥了。
但要提醒下,这个项目的重点不在 Python 上,而在对日语语法和词法学(全面而深刻)的理解——在电脑上跑下所有单元测试,大家就知道我为什么这么说(大放厥词)了。对计算词法学有兴趣的话,可以认真读读这个项目,但对语料库语言学研究好像确实没什么帮助……好好好,我承认我就是在夹带私货,但如果哪天大家要处理青空文库了,test_preprocess 应该有点帮助。
如果读完上面的项目还意犹未尽,可以去我收藏夹里的 Python 和 NLP 分类逛逛:
https://github.com/NoHeartPen?tab=stars
最后、ようこそ Python の世界へ、Happy Coding🍻!
留言讨论
你可以通过这里留言讨论。
该专栏的文章内容设定为日语数字人文或Python学习的心得、心路、经验、经历、感想、困惑、收获、成果等。文章标题不限,字数不限,形式不限,风格不限。该专栏征文长期有效,期待感兴趣的粉丝们多多投来自己与日语数字人文及Python的精彩故事!文章投递邮箱为:zhongyongriyu@foxmail.com。