前面提到,小爱同学初步学习了分词和词云绘制,但在过程中还是遇到了一些问题。两个主要问题是:正则表达式和同义词处理。正则表达式用于去除文本中的一些非标准字符。普通的字符串处理函数处理起来很麻烦,但是正则表达式就很方便了,但是小爱同学一点都不懂这个。同义词处理。当分词结果中出现“citizen”和“resident”这两个词时,要知道这其实表达的是同一个意思,需要将两者合为一个词。虽然不懂正则表达式,但是网上随便学习一下,暂时还是可以满足需求的。真正让小爱同学头疼的是同义词的处理。任务(Task)人工判断同义词很简单,但是用程序判断就没那么简单了。小爱想到了两个办法:创建词库;计算所有词的相似度,将相似度高于阈值的词作为同义词。词库。在网上百度了一下,只找到了哈尔滨工业大学的词库。满心欢喜的进去,发现页面已经不存在了。想想工作量,算了,算了,这个方法行不通。相似度计算。小爱同学发现Python中的同义词库提供了计算两个词相似度的方法,而且结果比较靠谱,所以准备使用这个方法。动作(Action)在找了一篇几百字的文章进行测试后,小爱同学发现这个方法很管用。于是正式开始应用于公司的文本数据。这时,新的问题又出现了。公司客户反馈数据有几千万条,分词后的词集去掉停用词后有几万条。小爱同学的代码在计算相似度的时候卡住了。这时候,小爱醒悟过来了:样本数据切分的词量少,计算量自然少,但是随着词数的增加,计算量也呈指数增长。算了,小爱也放弃了这个方法。小爱同学继续百度搜索,发现Word2vec库可以通过大量的训练文本来计算词的相似度。但是,小爱同学把所有的文本数据都训练好后,发现相似度的结果很不靠谱。想必库需要的训练样本非常大。所以,小爱也放弃了这个方法。Result(结果)小爱同学在搜索文本分析的相关资料时发现(虽然只是最简单的词频统计),NLP方向远不是一蹴而就的。虽然之前看过《数学之美》,略有了解,但是对于立志于机器学习的小爱同学来说,这个ROI太不值了。就这样,小爱同学也没有继续研究课文的打算,妥妥的验证了从入门到放弃的路!
