如何从 0 用 Python 开发一个类似 jieba 的分词工具?请问有没有建议阅读的书籍或者路线?

2021-11-30 13:07:46 +08:00
 flyhelan
如题。
2134 次点击
所在节点    Python
10 条回复
rpman
2021-11-30 13:15:25 +08:00
起码得有点机器学习基础吧
要超越 jieba 的话, https://github.com/hankcs/HanLP 了解一下, 甚至可以基于他做多任务蒸馏
menc
2021-11-30 13:15:42 +08:00
直接看 jieba 分词的源码就行。
jieba 分词用的是传统方式,在不开隐马尔科夫模型的时候,是一个很基本的前向最大匹配和后向最大匹配算法,不需要数学知识。

建议看 jieba 早期的一些源码,没有现在这么多东西
flyhelan
2021-11-30 13:16:16 +08:00
@rpman 有机器学习基础。更多的是需要 工程实现路径 而不是基础知识。我有机器学习基础和 NLP 概念。
flyhelan
2021-11-30 13:16:46 +08:00
@menc 嗯好。那就先从 0.1 、2 版本开始看起吧。
rpman
2021-11-30 13:29:19 +08:00
@flyhelan 不知道你的学习目标是什么. 单纯说 jieba 的话它基本已经停更了, 更多只是作为一个 baseline 而存在, 或者只是单纯的路径依赖. 在真实生产上对准确率有一点要求都不会考虑它.
顺便一提即使是 jieba, 在末期的版本也已经用上了深度学习, 虽然效果还是落后.
flyhelan
2021-11-30 14:05:46 +08:00
@rpman 那现在生产环境用啥?有什么生产环境使用的推荐的?
NCZkevin
2021-11-30 14:07:54 +08:00
@rpman 不用 jieba 的话,那现在 python 分词用啥库比较多。之前嫌麻烦一直都是用 jieba
rpman
2021-11-30 14:16:58 +08:00
@flyhelan
@NCZkevin
个人推荐 hanlp.
百度的 LAC 或者哈工大的 LTP4 也是开源的
不差钱可以用各种大小厂 API

根据我以前测评的结果看大概就是 jieba 准确率 95% HanLP 准确率 99%的样子.

话说回来不追求太准的话, jieba 也是够用了. 因为他就是跑一下 DAG/Viterbi, 开销很小. HanLP 毕竟有深度学习模型
我之前回复主要针对学习, 因为 jieba 真的过时了, 而且匹配什么的 HanLP / LTP 也有对应算法, 是更好的学习材料.
rpman
2021-11-30 14:25:23 +08:00
@rpman 顺便补充, 不知道 jieba 的 Bi-LSTM 深度模型是咋回事, 在我的数据上没显示出什么明显优势, 性能倒是比 HanLP 慢不少.
xingshu1990
2021-11-30 15:44:40 +08:00
有几楼偏了,不过……好像……偏的又合理。

第三方库的第一次出现,都是作者本身有一些需求,然后慢慢完善起来,慢慢的功能通用起来。
建议从 jieba 上传的第一份代码开始看起,看看每次更新了什么内容,为了完成什么需求,然后自己跟着一个字母一个字母敲了,调试。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/819002

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX