zoukankan      html  css  js  c++  java
  • Mac os Pycharm 中使用Stanza进行实体识别(自然语言处理nlp)

    stanza 是斯坦福开源Python版nlp库,对自然语言处理有好大的提升,具体好在哪里,官网里面都有介绍,这里就不翻译了。下面放上对应的官网和仓库地址。

    stanza 官网地址:点击我进入

    stanza github 仓库地址:点击我进入

    安装步骤

    1、Pycharm 中在设置中安装 stanza 是比较慢的,因此不建议这种方法,而且也考不到进度到那里了。

    2、直接在pycharm中安装也有尝试,但是很长时间都没看到成功,这里推荐使用将仓库代码克隆下来,在本地进行手动安装,最主要的是速度快。

    # 为了方面查找,这里建议直接将仓库克隆到桌面最省事。
    cd ~/Destop
    git clone https://github.com/stanfordnlp/stanza.git
    cd stanza
    pip install -e .

    pip 安装成功之后下面就是将安装好的内容移动到pycharm使用的Interpreter,也就是下图使用的python路径对应的site-packages中。

     找到上图对应的跟bin同一目录的lib文件,lib->python3.7->site-packages。打开这个文件夹,将之前安装好的 stanza 移过来。如果是克隆在桌面了,就到桌面去找对应的文件夹,会发现刚才克隆的stanza文件夹下多了两个文件:stanza、stanza.egg-info,将这两个文件移动到上面的 site-packages 中,这样就可以在 pycharm 中直接导入使用。以上stanza安装完成。

    使用

    Pycharm 中使用stanza也比较简单,直接导入使用。

    import stanza
    # 这一步是去下载对应的英文模型,执行一下看命令行链接出来就可以,命令行有可能不会成功,还是老方法把命令行中的地址,放到浏览器中直接下载。
    stanza.download('en') 

    执行之后,会出现下面的链接,链接放到浏览器后下载完成解压。

     第二个地址直接点击去下载也行,这里放上地址:英文模型下载

    英文模型下载完成后,解压会看到里面有对应的文件。将文件放到下面命令执行后报错的路径下。

    nlp = stanza.Pipeline('en')
    doc = nlp("Barack Obama was born in Hawaii.  He was elected president in 2008.")

    执行上面两句会看到报错,说在xxx路径找不到模型包,把刚才下载的模型放到这个文件夹中,这个文件一般是在用户目录下stanza_resources,比如:/Users/xxxx/stanza_resources,

    该目录下有en(代表英文模型),把下载的模型放到这个目录:/Users/xxxx/stanza_resources/en/。

    以上步骤完成后,就可以使用。

    说下stanza进行实体识别时候好处是,直接将识别的实体封装成了json格式,识别出的实体比如:PERSON、ORG、LOCATION等,词性为“O”的并不会出现在识别结果中,这样方便多了,不需要在进行过滤到不想要的实体。具体效果如下:

    import stanza
    nlp = stanza.Pipeline('en')
    doc = nlp("Barack Obama was born in Hawaii.  John studies at Stanford University in NewYork.")
    for sentence in doc.sentences:
        print(sentence.ents)

    输出如下:

    [{
      "text": "Barack Obama",
      "type": "PERSON",
      "start_char": 0,
      "end_char": 12
    }, {
      "text": "Hawaii",
      "type": "GPE",
      "start_char": 25,
      "end_char": 31
    }, {
      "text": "John",
      "type": "PERSON",
      "start_char": 34,
      "end_char": 38
    }, {
      "text": "Stanford University",
      "type": "ORG",
      "start_char": 50,
      "end_char": 69
    }, {
      "text": "NewYork",
      "type": "GPE",
      "start_char": 73,
      "end_char": 80
    }]

    这里比stanfordcorenlp实体识别区别是:实体会进行组块分析,比如 Barack Obama识别成一个实体(PERSON)。而stanfordcorenlp则会分开识别:Barack(PERSON)、Obama(PEROSN)。

  • 相关阅读:
    中国移动 使用Linux、OpenStack
    【 【henuacm2016级暑期训练】动态规划专题 K】 Really Big Numbers
    【【henuacm2016级暑期训练】动态规划专题 J】Red-Green Towers
    【【henuacm2016级暑期训练】动态规划专题 I】Gargari and Permutations
    【【henuacm2016级暑期训练】动态规划专题 H】Greenhouse Effect
    【 【henuacm2016级暑期训练】动态规划专题 G】 Palindrome pairs
    【【henuacm2016级暑期训练】动态规划专题 F】Physics Practical
    【【henuacm2016级暑期训练】动态规划专题 E】Destroying Roads
    【【henuacm2016级暑期训练】动态规划专题 D】Writing Code
    【henuacm2016级暑期训练-动态规划专题 C】Little Girl and Maximum XOR
  • 原文地址:https://www.cnblogs.com/hanwen1014/p/12750212.html
Copyright © 2011-2022 走看看