DeepNLP结合CRF++的简明实践笔记和WordCloud词云使用

DeepNLP大概已经出现将近1年了,之前一直没有涉及这方面的研究。最近才开始进行了一些实验性的尝试。
DeepNLP = Deep Learning + NLP(Natural Language Proceing)是谷歌开源的一个自然语言处理包

当常规的机器学习Machine Learning升级发展到了一定的阶段后,慢慢的被后起的深度学习Deep Learning夺势而去,并迅速发展壮大起来,不仅因为Deep Learning有machinelearning的算法优势,而且随着谷歌等巨头的框架开源而来的是大大降低了算法开发、应用的门槛!自然的,Deep Learning进入NLP领域之后,也的确出现了很大的变化。

本文不描述DeepNLP的原理,仅就最近的环境部署和实例进行表述
首先是开发环境 【认为已经安装了tensorflow 1.4版本以上】

我在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
安装完成

windows安装CRF++就有些麻烦,网上找到的几个编译好的库都不能正常加载,可能是编译的都是32位的或者较旧的库,我又重新编译了一下。
安装的时候比较麻烦,我是后来自己编译了库文件【*.lib,*.dll】。
1、先将下载了用于Linux的包在windows下解压,cmd到解压文件夹中的python目录,将*.lib,*.dll和头文件拷贝过来,然后执行 python setup.py build, python setup.py install,应该就成功了。

下面是一个例子,进行了分词、词频、词云的内容. 其中的词云需要借助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

Tensorflow:          https://www.tensorflow.org/

WordCloude:      https://www.lfd.uci.edu/~gohlke/pythonlibs/#wordcloud 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值