zoukankan      html  css  js  c++  java
  • 自然语言处理NLP学习笔记二:NLP实战-开源工具tensorflow与jiagu使用

    前言:

    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: ensorflow tensorflow

    conda create -n tf --target=e: ensorflow 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

  • 相关阅读:
    c++中的工具(一):std::pair<class T1, class T2>
    mybatisplus Lambda 表达式
    将查询结果映射成map的注解,其中第一个字段为key,第二个字段为value.
    mybatisplus 添加 /修改 数据 插入公共字段
    mybatisplus扩展BaseMapper的方法(InsertBatchSomeColumn及AlwaysUpdateSomeColumnById)
    根据俩日期(yyyy-MM-dd)格式获取它们之间的年月日组合结果(js实现)
    oralce json字段中根据key提取value的函数(转载)
    记录一下关于oracle还原数据库的问题
    记录一下数据库外连接 的不同
    JAVA项目从运维部署到项目开发(六. Jenkins之静态页面(2))
  • 原文地址:https://www.cnblogs.com/xiaoer/p/11059091.html
Copyright © 2011-2022 走看看