一、为一个五金搜索网站构建文本相似度检测系统
1、项目介绍
trainset : 产品id 搜索item 产品item 相似度评分
prodcut_description:产品id 产品介绍
2、使用ML model
xgboost
3、系统构建思路
step1:文本预处理(stemmer很重要 in search)
stemmer
step2:特征工程(自制文本特征)
1)搜索str中的word在产品str中出现的次数
2)搜索str的长度 与 产品 str的长度 差值
3)搜索str中的word在description中出现的次数/description单词数
4)搜索str 和 产品str 表示为word2vec,计算二者的夹角值
5)搜索item和产品description 的 word2vec,计算二者的相似度
如果数据分不出现偏差,可以进行Log(1+x)的操作,将其扭转到正态分布,以便模型训练;
6)Levenshtein 文本距离:左边sentence到右边sentence需要修改的次数:
搜索item和产品Item的文本距离
搜索Item和产品description的文本距离
7)搜索item和产品item的tfidf相似度
搜索item和产品description的tfidf相似度
延伸:直接将 用 word2vec表示的 搜索Item 和 产品item /产品description 塞入 Neural network,label为rating,进行训练。直接端到端。
二、新闻文本分类
1、项目简介
从简讯新闻抓取半年左右新闻数据,构建分类器对新闻数据进行分类。数据量:200M+。
- 任务一:词频分析:构建词云
针对一类新闻,构建词云,从词云中可以看到频率最高的一些词。一定程度显示主题。 - 任务二:中文自然语言处理分析:
tf-idf
textrank
LDA - 任务三:新闻文本分类:
朴素贝叶斯 + 语言模型
SVM + 语言模型 - 任务四:新闻文本分类:
使用fasttext进行文本分类;(fasttext不一定要一次性把trainset读到内存里)
note that:可以使用fasttext进行word2vec训练。其效果可能要比gensim还要赢一点。 - 任务五:新闻文本分类:
用DeepLearning的方法进行文本分类的原因如下:
DeepLearning训练data时,不用一次性将data全部导入内存,可以一批一批进行训练;
相比将n-gram的feature平铺开来,用ML model进行训练,CNN能够捕捉到文本的一些局部的特征;而LSTM,GRU中,文本中的word一个一个塞入这些model中,不需要n-gram,即可捕捉到文本的时序信息。
CNN在短文本分类中,可以获得较好的效果,相比 线性模型 来讲。
LSTM,GRU在长文本分类中,可以获得较好的效果。