当前位置: 首页 > 工具软件 > nlp-lang > 使用案例 >

nlp--常用分词方法

陆子航
2023-12-01

前言

本文以介绍 nlp 常见分词方法为目的,具体效果请大家自行辨别

中文分词

jieba

  • 代码

    jieba.enable_paddle()  # 启动paddle模式。 0.40版之后开始支持,早期版本不支持
        seg_list = jieba.cut(data, use_paddle=True)  # 使用paddle模式
        print("Paddle Mode: " + '/'.join(list(seg_list)))
    
        seg_list = jieba.cut(data, cut_all=True)
        print("Full Mode: " + "/ ".join(seg_list))  # 全模式
    
        seg_list = jieba.cut(data, cut_all=False)
        print("Default Mode: " + "/ ".join(seg_list))  # 精确模式
    
        seg_list = jieba.cut_for_search(data)  # 搜索引擎模式
        print("Search Mode: " + "/ ".join(seg_list))
    

自定义词典

央视
神丹牌
莲田牌
土鸡蛋
新京报
湖北神丹健康食品有限公司
龙头企业
315晚会
  • 新增代码

    jieba.load_userdict("../exp2/Userdict.txt")
    

详情见github

SnowNLP

  • 代码

    def snow_nlp(data):
        s = SnowNLP(data)
        print(s.words)
        print(s.pinyin)
    

详情见github

THULAC

  • 代码

    def thulac_nlp(data):
        thu1 = thulac.thulac()  # 默认模式
        text = thu1.cut(data, text=True)  # 进行一句话分词
        print(text)
    

详情见github

NLPIR

  • 代码

    def pynlpir_nlp(data):
        pynlpir.open()
        ans = pynlpir.segment(data)
        print(ans)
    

详情见githubCSDN

StanfordCoreNLP

  • 代码

    def stanford_nlp(data):
        # _*_coding:utf-8_*_
        with StanfordCoreNLP(r'D:\stanford-corenlp-full-2018-02-27', lang='zh') as nlp:
            print(nlp.word_tokenize(data))
    

详情见github

英文分词

NLTK

  • 代码

    def nltk_nlp(data):
        ans = nltk.word_tokenize(data)
        print(ans)
    

详情见nltk.orggithub简书

Spacy

  • 代码

    def spacy_nlp(data):
        nlp = spacy.load("en_core_web_sm")
        doc = nlp(data)
        ans = [token.text for token in doc]
        print(ans)
    

详情见csdnspacy.io

StanfordCoreNLP

  • 代码

    def stanford_nlp(data):
        # _*_coding:utf-8_*_
        with StanfordCoreNLP(r'D:\stanford-corenlp-full-2018-02-27') as nlp:
            print(nlp.word_tokenize(data))
    

详情见github

常见问题

问题一

  • 问题:在尝试使用StanfordCoreNLP进行中文分词时,发生了报错现象。报错信息为编码不正确,使用的为4.4.0版本。

  • 解决:怀疑是Python版本与StanfordCoreNLP版本不匹配引发的错误。github仓库中提供的版本对应表Python版本最低到3.7,而我使用的是3.6版本。之后尝试StanfordCoreNLP-3.7.0版本,但分词结果全为空。最后更改到StanfordCoreNLP-3.9.1版本(尝试了github仓库中提供样例使用的版本),得到正确的结果

    Py VersionCoreNLP Version
    v3.7.0.1 v3.7.0.2CoreNLP 3.7.0
    v3.8.0.1CoreNLP 3.8.0
    v3.9.1.1CoreNLP 3.9.1

问题二

  • 问题:在尝试使用Spacy进行英文分词时,加载模型使用spacy.load("en"),被告知,该方法已经被抛弃,建议使用spacy.load("en_core_web_sm")。之后,使用spacy.load("en_core_web_sm"),被告知找不到模型en_core_web_sm
  • 解决:python -m spacy download en_core_web_sm大概率是不会成功的,我也确实没有通过这种方式成功安装。直接从github上下载,然后使用命令pip install en_core_web_sm-2.3.0.tar.gz进行安装,即可成功安装
  • 详见Spacy问题的解决
 类似资料: