主要总结两部分内容:
- NLP基本流程 和 各环节code
- 两个NLP案例
一、NLP基本流程
step1:tokenize
把句子拆分成单词:
step2:tokenize后的words,可能一个word有很多变种,需要将他们统一为一种形式,具体如下:
step3:在词性归一化中有一个问题,即对于同一个词,如:Went,他可能是go,也可能是人名Went,为了更好地进行词性归一化,我们可以首先对每个词 标注其词性,然后在进行 词性归一化
step4:当我们将一段话 分割为 word 时,其中有很多为无意义的词,如:is,of,等,这些词称为stopwords,在文本分析中,我们应该将这些词去掉
上述列举的几个NLP应用方向,在PPT中有简要介绍一些简单code,详情查看PPT吧。
二、关于NLP的两个kaggle实战
实战1:news_stock:given news,classify which type they belong to
将everyday news用vector表示,组成train_data,然后基于train_data,训练ML algrithm,从而预测news_test belong to which type。
news的一般处理步骤:
- 对news进行tokenize,词性归一化,去stopwords,最后形成一个word list
- 将word用如下几种形式表示:Bag of words(词在文档中的数量),TF-IDF,Word2vec;
- 将news(即:word list),用word表示,本案例中表示为word vector的平均值(太简单),也可以直接表示为word vector matrix。也可以CNN(words)科学计算出news的feature(第6章会讲)。
- 将得到的feature vector投入到ML中进行训练
- 思维发散
实战2:文本匹配任务:Home Depot Product Search Relevance
在本案例中,一个突出技巧是,用特征工程的手段,去计算两个文本的匹配度,具体方法如下:
- 计算两文本TF-IDF,然后求二者的欧氏距离
- 计算两文本word2vec,然后求二者距离
- 计算一个文本1中word在另一个文本2中出现的次数,一次估计相似度。(计算出count以后,可以在除以文本1的长度,进行归一化))
- 使用Levenshtein()函数,计算由文本1转为文本2的步骤,以表示二者相似度。
实战案例code:
research_relevant
research_relevant advance
三、NLP中用到的几个库
库:
NLTK
gensim
jieba
core_nlp