请选择 进入手机版 | 继续访问电脑版
搜索
房产
装修
汽车
婚嫁
健康
理财
旅游
美食
跳蚤
二手房
租房
招聘
二手车
教育
茶座
我要买房
买东西
装修家居
交友
职场
生活
网购
亲子
情感
龙城车友
找美食
谈婚论嫁
美女
兴趣
八卦
宠物
手机

Mac os Pycharm 中使用Stanza进行实体识别(自然语言处理nlp)

[复制链接]
查看: 38|回复: 0

2万

主题

2万

帖子

7万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
74897
发表于 2020-9-15 14:52 | 显示全部楼层 |阅读模式
stanza 是斯坦福开源Python版nlp库,对自然语言处理有好大的提升,具体好在哪里,官网里面都有介绍,这里就不翻译了。下面放上对应的官网和仓库地址。
stanza 官网地址:点击我进入
stanza github 仓库地址:点击我进入
安装步骤
1、Pycharm 中在设置中安装 stanza 是比较慢的,因此不建议这种方法,而且也考不到进度到那里了。
我的关键词 Mac os Pycharm 中使用Stanza进行实体识别(自然语言处理nlp)  新闻咨询 806341-20200422093547467-751222112










2、直接在pycharm中安装也有尝试,但是很长时间都没看到成功,这里推荐使用将仓库代码克隆下来,在本地进行手动安装,最主要的是速度快。
  1. # 为了方面查找,这里建议直接将仓库克隆到桌面最省事。cd ~/Destopgit clone https://github.com/stanfordnlp/stanza.gitcd stanzapip install -e .
复制代码
pip 安装成功之后下面就是将安装好的内容移动到pycharm使用的Interpreter,也就是下图使用的python路径对应的site-packages中。
我的关键词 Mac os Pycharm 中使用Stanza进行实体识别(自然语言处理nlp)  新闻咨询 806341-20200422094621114-1227616216


找到上图对应的跟bin同一目录的lib文件,lib->python3.7->site-packages。打开这个文件夹,将之前安装好的 stanza 移过来。如果是克隆在桌面了,就到桌面去找对应的文件夹,会发现刚才克隆的stanza文件夹下多了两个文件:stanza、stanza.egg-info,将这两个文件移动到上面的 site-packages 中,这样就可以在 pycharm 中直接导入使用。以上stanza安装完成。
使用
Pycharm 中使用stanza也比较简单,直接导入使用。
  1. import stanza# 这一步是去下载对应的英文模型,执行一下看命令行链接出来就可以,命令行有可能不会成功,还是老方法把命令行中的地址,放到浏览器中直接下载。stanza.download('en')
复制代码
执行之后,会出现下面的链接,链接放到浏览器后下载完成解压。
我的关键词 Mac os Pycharm 中使用Stanza进行实体识别(自然语言处理nlp)  新闻咨询 806341-20200422100046644-72470501


第二个地址直接点击去下载也行,这里放上地址:英文模型下载
英文模型下载完成后,解压会看到里面有对应的文件。将文件放到下面命令执行后报错的路径下。
  1. 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”的并不会出现在识别结果中,这样方便多了,不需要在进行过滤到不想要的实体。具体效果如下:
  1. import stanzanlp = 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)
复制代码
输出如下:
  1. [{  "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)。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

技术支持:迪恩网络科技公司  Powered by Discuz! X3.2
快速回复 返回顶部 返回列表