Tutorial¶
本文提供了本模块的基本调用方式,主要为 nlpir 下的各个模块的使用.除必要引用,不对 nlpir.native
下的内容进行介绍. nlpir.native 为直接调用NLPIR各个模块的方法,熟悉NLPIR调用的用户可以直接配合对应
文档使用.
nlpir 下的各个模块是整合了NLPIR各个模块功能,并提供一些工具方法.方便用户以更Python的方法使用NLPIR模块.
Download License¶
NLPIR本身为收费共享软件,对于科研和个人用户提供免费使用. 但是需要在 NLPIR repo 中下载对应的license文件,这里 提供工具方法直接更新:
from nlpir import tools
tools.update_license()
或者使用命令 nlpir_update 更新
Custom init config¶
本模块提供了一次性的对NLPIR各个模块的初始化方法,若不进行此操作,则直接使用默认配置进行初始化.
note: 初始化必须在调用各个模块函数之前进行,否则配置是不能生效的.而且初始化配置只能调用一次.
E.g:
import nlpir
data_path = "/home/nlpir/Data"
lib_path = "/home/nlpir/lib"
nlpir.init_setting(
nlpir.ictclas,
encode=nlpir.native.nlpir_base.BIG5_CODE,
lib_path=lib_path,
data_path=data_path
)
上述初始化设置的代码,初始化设置了 nlpir.ictclas 模块的设置.这里每个模块的初始化设置都是分开的.
修改 ictclas 设置并不影响 nlpir.new_words_finder 的设置.
data_path 是指定一个NLPIR的 Data 文件夹,默认为Module内部的 Data 文件夹,若指定别的
文件夹(可以先复制包的文件夹出来),则对其进行的各种设置和词表的修改不会影响本Module本身.且可以拷
贝此文件夹到其他机器,共享配置.
lib_path 是指定一个NLPIR的调用DLL文件,可以用于需要制定外部DLL的情况,如使用Docker时保持DLL
库更新,可以使用Docker的volume设置DLL文件.
Chinese word segmentation (ICTCLAS)¶
基本分词功能¶
分词的基本功能是使用 nlpir.ictclas.segment() 进行的, 该函数提供对字符串进行分词,以及是否进行词性标注以及最终的后处理方式.
默认的后处理方式会返回一个列表,内容为单词和词性.若没有进行词性标注则直接返回单词的列表.
from nlpir import ictclas
test_str = "法国启蒙思想家孟德斯鸠曾说过:“一切有权力的人都容易滥用" \
"权力,这是一条千古不变的经验。有权力的人直到把权力用到" \
"极限方可休止。”另一法国启蒙思想家卢梭从社会契约论的观点" \
"出发,认为国家权力是公民让渡其全部“自然权利”而获得的," \
"他在其名著《社会契约论》中写道:“任何国家权力无不是以民" \
"众的权力(权利)让渡与公众认可作为前提的”。"
for word, pos in ictclas.segment(test_str, pos_tagged=True):
print(word, pos)
ICTCLAS的原始输出为字符串,譬如在进行Seq2Seq训练的语料的前处理上,需要的是分词后的字符串内容,得到列表得不偿失,这里可以修改后处理的回调 函数,使用lambda表达式直接获取字符串输出,也可以自己编写回调后处理函数直接接入训练的Pipline中.
获得字符串结果:
segment(txt, pas_tagged, post_process=lambda t, _ : t)
其他配置¶
1. 标注集修改¶
默认使用的标注集为 nlpir.native.ictclas.ICTCLAS.ICT_POS_MAP_SECOND 计算所二级标注集,
若需要进行标注集修改,使用 nlpir.native.ictclas.ICTCLAS.set_pos_map() 进行修改
2. 词典使用¶
ICTCLAS支持两种词典添加方式,一种是直接持久化的添加方式保存为用户词典,程序关闭后再次调用的时候依然会导入此用户此件. 另一种为临时用户词典添加入内存中,程序关闭后消失.
添加词典¶
使用 nlpir.ictclas.import_dict() 添加临时词典
nlpir.ictclas.import_dict(["孟德斯鸠"])
默认添加词典词性为`n`,若增加词的词性为其他的时候,使用 nlpir.ictclas.import_dict(["孟德斯鸠 name"]) 的
形式进行添加
词典删除¶
使用 nlpir.ictclas.clean_user_dict() 删除所有内存中的词, 仅想删除部分词时使用 delete_user_word()
此函数传入参数为想要删除的词的列表
词典保存¶
内存中的词典可以保存在磁盘中,保存于Data文件夹下,在程序下次使用时直接使用,内存中的词典可以使用
nlpir.ictclas.save_user_dict() 保存在磁盘中, 也可以直接使用
nlpir.native.ictclas.ICTCLAS.import_user_dict() 添加文件形式的词典(不推荐)
持久化词典的删除¶
删除已经持久化的用户词典的方法为 clean_saved_user_dict() 此方法将会删除保存在Data文件夹下的用户词典,
但是此方法只能一次性删除所有,不能仅删除部分单词.所以,请谨慎使用.