美文网首页机器学习之旅
Stanford Word Segmenter问题整理

Stanford Word Segmenter问题整理

作者: slade_sal | 来源:发表于2018-08-27 10:17 被阅读3次

    最近在做一些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是这么写的:

    from nltk.tokenize.stanford_segmenter import StanfordSegmenter
    seg = StanfordSegmenter()
    seg.default_config('zh')
    

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

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

    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上找了半天,发现有如下的解决方案:

    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,如果有任何算法、代码、转行疑问都欢迎通过公众号发消息给我。

    相关文章

      网友评论

        本文标题:Stanford Word Segmenter问题整理

        本文链接:https://www.haomeiwen.com/subject/jvrziftx.html