自然语言处理是计算机对语言信息进行处理的方法和技术。应用范围包括文本分类、情感分析(如政府舆情分析)、自动摘要等。
文本挖掘流程
- 预处理部分
- 特征工程
- 任务模型,如分类
预处理部分
中文 | 英文 | |
---|---|---|
是否处理编码问题 | document.decode(‘GBK’) | 不需要 |
待处理非文本内容 | 1.空格 2.中英文标点 3.HTML标签 | 1.标点 2.大小写 3.拼写错误 |
HTML标签→BeautifulSoup(text).get_text()
中英文标点→1.正则表达式【u’[^a-zA-Z0-9\u4e00-\u9fa5]’】
大小写→.lower()
分句:使用nltk中的punkt句子分割器进行断句
#加载punkt句子分割器
sen_tokenizer = nltk.data.load('tokenizers/punkt/english.pickle')
#对句子进行分割
sentences = sen_tokenizer.tokenize(paragraph)
分词:基于语料库的统计概率,最大化联合分布概率所对应的分词方法即为最优分词。
中文 | 英文 | |
---|---|---|
分词工具 | jieba.cut() | 1. split() 2.nltk.tokenizer() |
去除停用词words = [w for w in words if w not in set(stopwords.words(‘english’))]
特征工程
基于卡方检验CHI,文档频率DF, 信息增益IG,互信息MI的文本特征提取与实现
词袋模型:各个文本分词结果就是该语料集的词单元。
- 词向量:词-频对。对于某个文本,词单元的索引搭配上该词的词频,就能组成词向量表示该文本。
- TF-IDF:词频-逆文本频率。IDF表示在所有文本出现的频率,给单元词重要性加权重,进行词特征值修订。
Word2Vec:Word to Vector。学习上下文,可以理解词间关系,理解句子。
基于CBOW、skip-gram、词-文档矩阵、词-词矩阵四种方法的词向量生成
- 不去除停用词的各个文本分词结果训练word2vec模型
- 应用模型将各个word表示为vector
- 对于某个文本,去停用词后,计算各词的平均向量作为该文本的特征向量
- 以所有文本的特征向量,标签为分类模型输入输出,建立分类模型。
分类模型
- 朴素贝叶斯
- 神经网络
实例
情绪分类
情感分析
基于爬虫与nlp的中国古代诗词文本挖掘项目
针对中文词语的反义词查询接口
基于机器学习与深度学习方法的情感分析算法实现与对比,包括决策树,贝叶斯,KNN, SVM ,MLP, CNN, LSTM实现