前言:

NLP工具有人推荐使用spacy,有人推荐使用tensorflow。

tensorflow:中文译作:张量(超过3维的叫张量)详细资料参考:http://www.tensorfly.cn/

Jiagu:甲骨,语言处理工具,源码参考:https://github.com/ownthink/Jiagu

jiagu的中文分词是基于 深度学习的方法的。看来甲骨的分词还是比较先进的。分词一般有3种,字典的,统计学的,深度学习的。

另:需要一点python知识,自行复习。

1. 环境准备 

经过各种折腾,总结如下:TensorFlow运行环境需要使用Python3.5或以上,建议Python3.7.3,tensorflow 至少1.6,建议1.14版本。OS上的C运行库Glibc版本至少2.23以上。

如果你已经准备好这些环境了,跳过此步。

1) Windows:

Python开发工具:pycharm 社区版

anaconda 集成了python编译工具的管理工具

安装参考:https://blog.csdn.net/z2858539804/article/details/81407456

2)Linux:

安装参考:https://www.cnblogs.com/for-dream/p/9648115.html

2.1下载3.7安装包:

wget https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tar.xz

2.2 解压:

tar -xvJf  Python-3.7.3.tar.xz

2.3 安装依赖包:

yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make

yum install libffi-devel -y  (如不安装,会报ModuleNotFoundError: No module named '_ctypes错误)

2.4 编译安装:

./configure prefix=/usr/local/python3

make && make install

2.5 检查效果以及设置Python2,3共存::

[]# python2 -V

Python 2.7.5
[]# python -V
Python 2.7.5
[]# ln -s /usr/local/python3/bin/python3 /usr/bin/python
ln: 无法创建符号链接"/usr/bin/python": 文件已存在
[]# mv /usr/bin/python /usr/bin/python22
[]# ln -s /usr/local/python3/bin/python3 /usr/bin/python
[]# python -V
Python 3.7.3
[]# ll python*
lrwxrwxrwx. 1 root root   30 7月  29 09:46 python -> /usr/local/python3/bin/python3
lrwxrwxrwx. 1 root root    9 12月 13 2017 python2 -> python2.7

lrwxrwxrwx. 1 root root    7 12月 13 2017 python22 -> python2

-rwxr-xr-x. 1 root root 7136 8月   4 2017 python2.7
-rwxr-xr-x. 1 root root 1835 8月   4 2017 python2.7-config
lrwxrwxrwx. 1 root root   16 3月   8 2018 python2-config -> python2.7-config
lrwxrwxrwx. 1 root root   14 3月   8 2018 python-config -> python2-config

2. 安装tensorflow/Jiagu

pip install tensorflow

或:

pip install --target=e:\tensorflow tensorflow

conda create -n tf --target=e:\tensorflow tensorflow

pip install jiagu

注:

1.linux下如果报找不到pip命令,则需要先配置ln -s /usr/local/python3/bin/pip3 /usr/bin/pip

2.linux下直接安装Jiagu,会自动关联安装上tensorflow,因此可以直接执行Jiagu安

3. 默认国外源下载非常慢,使用国内的下载比较快

pip install tensorflow==1.14.0 -i "https://pypi.doubanio.com/simple/"

pip install jiagu -i "https://pypi.doubanio.com/simple/"

4. 卸载TensorFlow:pip uninstall tensorflow

 3. 中文分词demo代码

功能:用户输入一段话,一键进行分词,关键词提取,文本摘要等。

vi nlpdemo.py

# -*- coding: UTF-8 -*-
import jiagu
#获取用户输入
text=input("请输入你要分词的内容:")
words = jiagu.seg(text) # 分词,可以用model选择分词模式,不填则默认,mmseg则使用mmseg算法。
print("---------------------分词结果----------------------")
print(words)
print("---------------------词性标注----------------------")
pos = jiagu.pos(words) # 词性标注
print(pos)
print("----------------------实体识别----------------------")
ner = jiagu.ner(text) # 命名实体识别
print(ner)
print("----------------------关键词----------------------")
keywords = jiagu.keywords(text, 5) # 关键词
print(keywords)
print("----------------------知识抽取----------------------")
knowledge = jiagu.knowledge(text) # 知识抽取
print(knowledge)
print("----------------------摘要----------------------")
summarize = jiagu.summarize(text, 1) # 摘要
print(summarize)
print("----------------------知识图谱----------------------")
knowledge = jiagu.knowledge(text)
print(knowledge)

python nlpdemo.py 

运行效果图:

-----------------------------------------------------------------------------------

FAQ:

 1. 问题1:linux环境下启动报错`CXXABI_1.3.8' not found :

ImportError: /usr/lib64/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /usr/local/python3/lib/python3.7/site-packages/tensorflow/python/_pywrap_tensorflow_internal.so)

Failed to load the native TensorFlow runtime.

解决办法:

先检查一下: strings /usr/lib64/libstdc++.so.6|grep CXXABI
应该要有1.3.8,如果没有,则需要重新安装编译GLIBC_*新版本

注:从其它环境 copy一个libstdc++.so.6到指定环境下,可能这个报错不存在了,但会继续报错: version `GLIBC_2.23' not found

2. 问题2:ImportError: /lib64/libm.so.6: version `GLIBC_2.23' not found 

(required by /usr/local/python3/lib/python3.7/site-packages/tensorflow/python/_pywrap_tensorflow_internal.so)

解决办法:

先检查下:strings /usr/lib64/libstdc++.so.6 | grep GLIBC_

参考:https://blog.csdn.net/chenvast/article/details/79103288 重新安装新版本的glibc

安装步骤:

wget https://ftp.gnu.org/gnu/glibc/glibc-2.23.tar.gz
tar -zxvf glibc-2.23.tar.gz

mkdir build
cd build
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin  
make && make install

如果安装过程遇到乱七八糟的错,如下:

错误:编译过程如果报  /lib64/libc.so.6: version `GLIBC_2.14' not found,则需要下载GLIBC_2.17以上重新安装

参考:https://www.cnblogs.com/bonelee/p/8310389.html

如果这过程,编译的库失败导致出现系统连接不上等lib库无法使用问题,则需要回退

LD_PRELOAD=/lib64/libc-2.14.so rm /lib64/libc.so.6

LD_PRELOAD=/lib64/libc-2.14.so ln -s /lib64/libc-2.14.so /lib64/libc.so.6

如果还报错:ls: relocation error: /usr/lib64/libc.so.6: symbol _dl_starting_up, version GLIBC_PRIVATE not defined in file ld-linux-x86-64.so.2 with link time reference

[root@ lib64]# ls
ls: relocation error: /usr/lib64/libc.so.6: symbol _dl_starting_up, version GLIBC_PRIVATE not defined in file ld-linux-x86-64.so.2 with link time reference
[root@ lib64]#  sln /usr/lib64/ld-2.17.so /usr/lib64/ld-linux-x86-64.so.2
[root@ lib64]# ls

如果还报错:/lib64/libm.so.6: invalid ELF header

[root@localhost lib64]# find . -name "libm-2.17.so"
         find: error while loading shared libraries: /lib64/libm.so.6: invalid ELF header

则需要指向新编译的so文件
        lrwxrwxrwx. 1 root root 12 6月   5 2017 /usr/lib64/libm.so.6 -> libm-2.17.so
    ​    ​[root@localhost lib64]# ll /lib64/libm.so.6 
    ​    ​lrwxrwxrwx. 1 root root 12 6月   5 2017 /lib64/libm.so.6 -> libm-2.17.so

​    ​[root@localhost lib64]# ll libm-2.*
    ​    ​-rwxr-xr-x. 1 root root     141 7月  29 11:48 libm-2.17.so
    ​    ​-rwxr-xr-x. 1 root root     141 7月  31 12:41 libm-2.17.so.bak
    ​    ​-rwxr-xr-x. 1 root root 3571192 7月  31 12:26 libm-2.23.so

​    ​[root@localhost lib64]# rm libm.so.6 
    ​    ​rm:是否删除符号链接 "libm.so.6"?y
    ​    ​​[root@localhost lib64]#  sln /lib64/libm-2.23.so /lib64/libm.so.6

然后重新安装glibc-2.23版本即可。

检查glibc版本结果:

[root@ build]# ldd --version
ldd (GNU libc) 2.23

 问题3:执行py脚本时报错: 非法指令(吐核)

解决办法:

tensorflow版本太新而服务器太旧cpu识别不了导致。安装tensorflow版本是1.14。

需要减低到tensorflow 1.5版本。 但向Jiagu开源人确认,至少得安装tensorflow 1.6版本。

问题4: 运行tensorflow报错SQLite 3.8.3 or later is required 

如果报:django.core.exceptions.ImproperlyConfigured: SQLite 3.8.3 or later is required (found 3.7.17).

说明环境上默认的3.7.17版本太低,需要安装新版

参考这个升级处理:https://www.jianshu.com/p/cdacf4b74646

---------------------------------------------------------------------------

linux上已安装Python3.7,同时安装Python3.6版本的步骤:

1.获取安装包安装

2.ln -s /usr/local/python3.6/bin/python3.6 /usr/bin/python3.6

ln -s /usr/local/python3.6/bin/pip3 /usr/bin/pip3.6

3. 安装 tensorflow 1.5

pip3.6  install tensorflow==1.5.0 -i "https://pypi.doubanio.com/simple/"
 pip3.6 install jiagu
pip3.6 install django

4.安装目录在:/usr/local/python3.6/lib/python3.6/site-packages

cd /usr/local/python3.6/lib/python3.6/site-packages/django/bin

5.新建并启动项目

python3.6 django-admin.py startproject jiaguweb

python3.6 manage.py runserver 127.0.0.1:8000

python3.6 manage.py runserver 183.232.65.76:8000

自然语言处理NLP学习笔记二:NLP实战-开源工具tensorflow与jiagu使用的更多相关文章

  1. mybatis学习笔记(二)-- 使用mybatisUtil工具类体验基于xml和注解实现

    项目结构  基础入门可参考:mybatis学习笔记(一)-- 简单入门(附测试Demo详细过程) 开始体验 1.新建项目,新建类MybatisUtil.java,路径:src/util/Mybatis ...

  2. Typescript 学习笔记二:数据类型

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  3. WPF的Binding学习笔记(二)

    原文: http://www.cnblogs.com/pasoraku/archive/2012/10/25/2738428.htmlWPF的Binding学习笔记(二) 上次学了点点Binding的 ...

  4. AJax 学习笔记二(onreadystatechange的作用)

    AJax 学习笔记二(onreadystatechange的作用) 当发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态XMLHttpRequest对象提供了on ...

  5. [Firefly引擎][学习笔记二][已完结]卡牌游戏开发模型的设计

    源地址:http://bbs.9miao.com/thread-44603-1-1.html 在此补充一下Socket的验证机制:socket登陆验证.会采用session会话超时的机制做心跳接口验证 ...

  6. JMX学习笔记(二)-Notification

    Notification通知,也可理解为消息,有通知,必然有发送通知的广播,JMX这里采用了一种订阅的方式,类似于观察者模式,注册一个观察者到广播里,当有通知时,广播通过调用观察者,逐一通知. 这里写 ...

  7. java之jvm学习笔记二(类装载器的体系结构)

    java的class只在需要的时候才内转载入内存,并由java虚拟机的执行引擎来执行,而执行引擎从总的来说主要的执行方式分为四种, 第一种,一次性解释代码,也就是当字节码转载到内存后,每次需要都会重新 ...

  8. Java IO学习笔记二

    Java IO学习笔记二 流的概念 在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成. 程序中的输入输 ...

  9. 《SQL必知必会》学习笔记二)

    <SQL必知必会>学习笔记(二) 咱们接着上一篇的内容继续.这一篇主要回顾子查询,联合查询,复制表这三类内容. 上一部分基本上都是简单的Select查询,即从单个数据库表中检索数据的单条语 ...

随机推荐

  1. IDEA 使用LiveEdit插件

    第一步: 第二步: 第三步: 第四步: 等待下载完成 第五步: 第六步: 第七步: 配置tomcat时注意选择chrome浏览器,并勾选右边的多选框 完成之后,就可以启动项目了,然后可以改变html代 ...

  2. SSM跨域配置

    1.后台跨域要引用两个jar包(cors-filter-1.7.jar.java-property-utils-1.9.jar) 提供下载地址: 链接: https://pan.baidu.com/s ...

  3. Catch That Cow (POJ - 3278)(简单BFS)

    转载请注明出处:https://blog.csdn.net/Mercury_Lc/article/details/82693928作者:Mercury_Lc 题目链接 题解:给你x.y,x可以加1.减 ...

  4. ubuntu安装扩展在phpinfo显示不出来的解决办法

    在Ubuntu中使用apt-get安装了php扩展(比如redis.memcache.memcached等),在终端输入php -m是显示已加载,但是在phpinfo中无法显示,这个时候需要重启一下p ...

  5. phpcms9 从注入点入手和 从前台getshell

    弄了3天了  这个点 总结一下这三天的坑吧 0X01 注入点入手 /index.php?m=wap&c=index&a=init&siteid=1 获取cookie 传给 us ...

  6. IDEA远程执行详解

    新建一个springboot项目 新建一个java class: @RestController public class TestController { @RequestMapping(" ...

  7. linux安装mysql以及修改密码和重启mysql等相关命令

    Linux/UNIX 上安装 MySQL Linux平台上推荐使用RPM包来安装Mysql,MySQL AB提供了以下RPM包的下载地址: MySQL - MySQL服务器.你需要该选项,除非你只想连 ...

  8. Leetcode题目33.搜索旋转排序数组(中等)

    题目描述: 假设按照升序排序的数组在预先未知的某个点上进行了旋转. ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] ). 搜索一个给定的目标值,如果数组中存在 ...

  9. 邻居子系统 之 邻居项查找neigh_lookup、___neigh_lookup_noref

    概述 邻居项查找是通过neigh_lookup相关函数来进行的: ___neigh_lookup_noref,该函数根据输出设备和主键值(IPv4为下一跳ip地址)在邻居项hash表中查找,找到则返回 ...

  10. hearthbuddy中的Class276

    构造函数 需要注意的是this.intptr_0 = this.method_18("mono.dll"); 所以,这个类里面的操作,最后是和mono.dll相关的 interna ...