当常规的机器学习Machine Learning升级发展到了一定的阶段后,慢慢的被后起的深度学习Deep Learning夺势而去,并迅速发展壮大起来,不仅因为Deep Learning有machinelearning的算法优势,而且随着谷歌等巨头的框架开源而来的是大大降低了算法开发、应用的门槛!自然的,Deep Learning进入NLP领域之后,也的确出现了很大的变化。
我在windows和Linux(Ubuntu16.04)都进行了。
Linux下 DeepNLP直接下载即可安装最新的 $ pip install DeepNLP
Windows下我是直接在Anaconda中安装的 也是这个命令行 $ pip install DeepNLP
DeepNLP中没有集成所需要的CRF++,因此还需要安装上CRF++(当然也可以用其他的分词库)
Ubuntu16.04:需要安装gcc&g++
$ sudo install gcc
1.解压CRF++安装包 tar zxvfv CRF++-0.58.tar.gz
2.进入解压后的目录 $ ./configure
3.$ make
4.$ sudo make install
5.进入python目录 $ python setup.py build
6.$ sudo python setup.py install
7.$ sudo ln -s /usr/local/lib /usr/lib
安装完成
下面是一个例子,进行了分词、词频、词云的内容. 其中的词云需要借助WordCloud.
#coding=utf-8
#分词、词频统计
from __future__ import unicode_literals
from deepnlp import segmenter #分词
from deepnlp import pos_tagger #词性规则
from deepnlp import ner_tagger #角色命名规则
#
import sys
#PyQt5不是必须的,就是获取文件名的时候用了一下。这里用纯粹是因为我多年使用Qt而来的情结。
from PyQt5 import QtWidgets #如果没有PyQt5可以安装
from PyQt5.QtWidgets import QFileDialog
import matplotlib.pyplot as plt
from wordcloud import WordCloud,STOPWORDS,ImageColorGenerator
obj_file = open("blackList.txt")
text = "text"
blacklist = []
while text != "":
text = obj_file.readline().strip()
text2 = text.replace('\n', '')
blacklist.append(text2)
print(blacklist)
# 使用P有Qt5打开文件读取文本
app=QtWidgets.QApplication(sys.argv)
fileName, filetype = QFileDialog.getOpenFileName()
obj_file = open(fileName)
text = obj_file.read()
#分词
tokenizer = segmenter.load_model(name = 'zh')
words = tokenizer.seg(text)
#词频
hist = {}
for w in words:
if w in blacklist:
continue
if len(w) <= 1:
continue
hist[w] = hist.get(w, 0) + 1
print(hist)
#排序
#hist.sort() #sorted(hist)
tempItems = hist.items()
print(tempItems)
map = sorted(tempItems, key=lambda d: d[1],reverse=True)
print("排序:")
print(map)
#生成词云
showText = ""
for w in map:
showText += w[0]
showText +=","
backgroud_Image=plt.imread('china.jpg')
wc=WordCloud(
background_color='white',
font_path='C:\Windows\Fonts\STZHONGS.TTF',#没有此设置无法显示中文
max_words=200,
width=1024, height=768, margin=2,
mask=backgroud_Image
).generate(showText)
#wc.generate_from_text(showText)
plt.imshow(wc)
plt.axis('off')
plt.show()
#词云保存为文件
wc.to_file("test.png")
这是《星星之火,可以燎原》的运行结果,基本上能够看清主题。
下一步就开始细致的研究一下精致的实现。
DeepNLP: https://github.com/rockingdingo/deepnlp#textsum
CRF++ package:
https://taku910.github.io/crfpp/#download
Tensorflow:
https://www.tensorflow.org/
WordCloude:
https://www.lfd.uci.edu/~gohlke/pythonlibs/#wordcloud