阿龙的自留地

兼济天下则达 独善其身则穷

标签归档: 细粒度

那些浮躁的年轻人


四个月前,遇到了Sphinx-for-Chinese的分词问题,也就是分词的粒度问题。在使用Sphinx-for-Chinese时,结果中有秦始皇兵马俑博物馆,搜索兵马俑时搜不到它,搜索兵马俑博物馆时才能搜到它。这只因为词典里有兵马俑博物馆这个词,而Sphinx-for-Chinese使用的是mmseg分词算法,所以使用最优分词策略时,将秦始皇兵马俑博物馆分成秦始皇+兵马俑博物馆。当时只是将词典中类似兵马俑博物馆这些词删除,也解决了这一类问题,但显然还是存在问题的。最近产品那边又提出一些问题,如搜索西海,海岸时搜不到西海岸,搜索肯尼亚时,搜索不到肯尼亚山。于是这个分词问题又提上了日程。

对于这些问题,再次使用去除词典中的词显得不太合适。于是只好采用别的办法,考虑使用近义词的办法,可是还是不合适,因为如果将西海和西海岸设置为同义词,那么搜索西海岸时,也能搜索关于西海的东西,这显然不是我想要的。看来只有改源码了,可是看到Sphinx-for-Chinese那些代码,没有信心做到。于是只好求助网络,可是这么专业的问题,在网页上是找不到的。于是求助Sphinx-for-Chinese,也就在这时,我才发现许多时候还是只能靠自己,许多时候程序员是很浮躁的。

在群里问了一些人,有个人说全切分,可是问他如何做,他就不理你了;有人说思路有很多,近义词就是其中一种,可是和他说了近义词的弊端后,他也不说话了;有人说在配置文件里加个选项即可,想来使用Sphinx-for-Chinese也有些时间,怎么就不知道有一个支持细粒度分词的选项呢?了解了之后,才知道CoreSeek才有这个选项,再细问后,他就说自己很忙,问其他人去。想想自己有问题都是看文档,除非遇到解决不了的问题,才会求助于他人。也知道如果有一些例子,会起到很大的帮助,所以才会写了几篇关于Sphinx-for-Chinese的文章。可是却被这帮人当成不看文档的人,真是有些无辜。最后只好求助于Sphinx-for-Chinese的开发人员,从他口中得知,要想解决这个问题,唯一的办法就是修改源码,这和自己预计的是一样的。

或许自己也变得浮躁了,明知道只有改源码,还是去麻烦其他人,企图有更简便的办法。记得当初遇到SCWS时就不是这样,那时遇到分词问题,愣是使用printf输出找到修改的办法。可是现在,遇到问题时想的却是有没哟更简便的办法。幸好组长没有变浮躁,在他的参与下,很快找到了问题的症结,并给出了一个最初的原型。正是这个原型,点燃了星星之火,带领组长和我走向解决问题的道路,虽然目前看来,还不是最优的解决方案,但至少解决了这个问题。

自己也应该沉下心来,不要再那么浮躁了。