zoukankan      html  css  js  c++  java
  • 使用pyhanlp进行分词

    from pyhanlp import *
    
    def my_segment(sentence):
        seg = HanLP.segment(sentence)
        seg2 = list(seg)
        seg3 = list(map(lambda x: str(x), seg2))
        seg4 = list(map(lambda x: x.split('/')[0], seg3))
        return seg4
    
    seg = my_segment('自然语言处理是计算机科学领域与人工智能领域中的一个重要方向。')
    print(seg)
    

    运行结果如下

    ['自然语言处理', '是', '计算机', '科学', '领域', '与', '人工智能', '领域', '中的', '一个', '重要', '方向', '。']
    

    观察分词结果,我们发现“计算机科学”这个词被分成了两个部分,为了解决这个问题,接下来我们将“计算机科学”这个词加入自定义词典中,有两种方式可以实现。

    方法一:动态添加

    CustomDictionary.add("计算机科学")
    seg = my_segment('自然语言处理是计算机科学领域与人工智能领域中的一个重要方向。')
    

    运行结果如下

    ['自然语言处理', '是', '计算机科学', '领域', '与', '人工智能', '领域', '中的', '一个', '重要', '方向', '。']
    

    方法二:追加词典

    pyhanlp是hanlp的python接口,我们进入对应的hanlp目录(这个目录的路径在pyhanlp的__init__.py文件中由用户添加),接着进入该目录下的 /data/dictionary/custom 子目录,打开CustomDictionary.txt文件,然后将要添加的词写入该文件即可,不写词性和词频也可以运行,运行结果与上一种方式的结果相同。

    在pyhanlp的安装目录 C:python36Libsite-packagespyhanlp 下的 statichanlp.properties.in 文件中可以找到这种添加方式的依据,如下所示

    #自定义词典路径,用;隔开多个自定义词典,空格开头表示在同一个目录,使用“文件名 词性”形式则表示这个词典的词性默认是该词性。优先级递减。
    #另外data/dictionary/custom/CustomDictionary.txt是个高质量的词库,请不要删除。所有词典统一使用UTF-8编码。
    CustomDictionaryPath=data/dictionary/custom/CustomDictionary.txt; 现代汉语补充词库.txt; 全国地名大全.txt ns; 人名词典.txt; 机构名词典.txt; 上海地名.txt ns;data/dictionary/person/nrf.txt nrf;
    

    参考文献:
    HanLP分词+用户自定义词典

  • 相关阅读:
    前后端交互, 安装drf, restful接口规范, pycharm断点调试
    django中文设置, axios, CORS, 全局js配置, Vue配置jq + bs
    js原型, Vue项目环境搭建, Vue项目目录结构, Vue项目生命周期, 小组件使用, 全局样式, 路由跳转, 组件的生命周期钩子, 路由传参
    Vue组件
    Vue表单指令, 条件指令, 循环指令, 成员
    question1 赋值运算操作符
    CH15 面向对象程序设计
    CH12 动态内存
    CH11 关联容器
    CH10 泛型算法
  • 原文地址:https://www.cnblogs.com/bill-h/p/14542722.html
Copyright © 2011-2022 走看看