前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Stanford Word Segmenter问题整理

Stanford Word Segmenter问题整理

作者头像
sladesal
发布2018-09-26 14:59:07
1K0
发布2018-09-26 14:59:07
举报
文章被收录于专栏:机器学习之旅

最近在做一些nlp相关的项目,在涉及到Stanford CoreNLP工具包处理中文分词的时候,发现耗时问题很严重:

Item

time(s)

jieba

0.4

snownlp

7.4

pynlpir

0.8

StanfordCoreNLP

21.5

pyltp

5.3

因为Stanford CoreNLP调用的是这个pipeline,而我们实际用的是切词功能,所以尝试只用它的切词部分功能,但是在做的过程中发现一些问题,整理如下:

官网给出的方法nltk.tokenize.stanford_segmenter module是这么写的:

代码语言:javascript
复制
from nltk.tokenize.stanford_segmenter import StanfordSegmenter
seg = StanfordSegmenter()
seg.default_config('zh')

但是这个缺少各种数据路径的,是完全不通的。

然后度娘的top1的答案给出的解决方案是:`

代码语言:javascript
复制
segmenter = StanfordSegmenter(path_to_jar="stanford-segmenter-3.4.1.jar", path_to_sihan_corpora_dict="./data", path_to_model="./data/pku.gz", path_to_dict="./data/dict-chris6.ser.gz")

如果你的nltk的版本比较新,恭喜你,你会遇到下面这个问题: TypeError: expected str, bytes or os.PathLike object, not NoneType

我在stackoverflow上找了半天,发现有如下的解决方案:

代码语言:javascript
复制
from nltk.parse.corenlp import CoreNLPParser 
corenlp_parser = CoreNLPParser('http://localhost:9001', encoding='utf8')
result = corenlp_parser.api_call(text, {'annotators': 'tokenize,ssplit'})
tokens = [token['originalText'] or token['word'] for sentence in result['sentences']

可以完美解决,原因之前作者也说了,据称升级版本后不兼容,各位看看就好"TypeError: expected str, bytes or os.PathLike object, not NoneType" about Stanford NLP

这个坑花了我两个多小时(主要在下载各种gz包),希望大家能够避免。

欢迎大家关注我的个人bolg知乎,更多代码内容欢迎follow我的个人Github,如果有任何算法、代码、转行疑问都欢迎通过公众号发消息给我。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.08.27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档