FoolNLTK — 简单好用的中文NLP工具包
FoolNLTK — 作者号称“可能不是最快的开源中文分词,但很可能是最准的开源中文分词”。
这个开源工具包基于 BiLSTM模型 训练而成,功能包含分词,词性标注,实体识别。并支持用户自定义词典,可训练自己的模型及批量处理文本。
开始之前,你要确保Python和pip已经成功安装在电脑上,如果没有,可以访问这篇文章:超详细Python安装指南进行安装。
如果你用Python的目的是数据分析,可以直接安装Anaconda: Python数据分析与挖掘好帮手—Anaconda ,它内置了Python和pip.
此外,推荐大家用VSCode编辑器,它有许多的优点: Python 编程的最好搭档—VSCode 详细指南 。
请选择以下任一种方式输入命令安装依赖 :
1. Windows 环境 打开 Cmd (开始-运行-CMD)。
2. MacOS 环境 打开 Terminal (command+空格输入Terminal)。
3. 如果你用的是 VSCode编辑器 或 Pycharm,可以直接使用界面下方的Terminal.
pip install foolnltk
2.使用说明
2.1 分词功能
通过 fool.cut 函数,能够实现分词功能:
import fool
text = "一个傻子在北京"
print(fool.cut(text))
# ['一个', '傻子', '在', '北京']
命令行针对文件进行分词操作:
python -m fool [filename]
2.2 用户自定义词典
词典格式格式如下,词的权重越高,词的长度越长就越越可能出现,权重值请大于1:
难受香菇 10
什么鬼 10
分词工具 10
北京 10
北京天安门 10
加载词典:
import fool
fool.load_userdict(path) # path 为词典路径
text = ["我在北京天安门看你难受香菇", "我在北京晒太阳你在非洲看雪"]
print(fool.cut(text))
#[['我', '在', '北京', '天安门', '看', '你', '难受', '香菇'],
# ['我', '在', '北京', '晒太阳', '你', '在', '非洲', '看', '雪']]
删除词典:
fool.delete_userdict()
2.3 词性标注
词性标注只需要使用 pos_cut 函数,生成的数组结果中,第一个维度是对应字符串的识别结果。第二个维度是分词后的每个词语及对应的词性。
import fool
text = ["一个傻子在北京"]
print(fool.pos_cut(text))
#[[('一个', 'm'), ('傻子', 'n'), ('在', 'p'), ('北京', 'ns')]]
2.4 实体识别
实体识别的结果元素中,第一二个元素是关键词的起始坐标和结束坐标,第三个元素是实体类别,最后一个元素是实体关键词。
import fool
text = ["一个傻子在北京","你好啊"]
words, ners = fool.analysis(text)
print(ners)
#[[(5, 8, 'location', '北京')]]
3.定制自己的模型
你可以在 linux 的 Python3 环境定制自己的模型。
git clone https://github.com/rockyzhengwu/FoolNLTK.git
cd FoolNLTK/train
1. 训练。 模型训练 data_dir 存放训练数据格式如 datasets/demo 下。下载与训练的模型,我这里是将下载的模型软链接到 pretrainmodel 下
python ./train_bert_ner.py --data_dir=data/bid_train_data \
--bert_config_file=./pretrainmodel/bert_config.json \
--init_checkpoint=./pretrainmodel/bert_model.ckpt \
--vocab_file=./pretrainmodel/vocab.txt \
--output_dir=./output/all_bid_result_dir/ --do_train
2. 导出模型 。模型导出 predict 同时指定 do_export 就能导出 pb 格式的模型,用于部署:
python ./train_bert_ner.py --data_dir=data/bid_train_data \
--bert_config_file=./pretrainmodel/bert_config.json \
--init_checkpoint=./pretrainmodel/bert_model.ckpt \
--vocab_file=vocab.txt \
--output_dir=./output/all_bid_result_dir/ --do_predict --do_export
3. 预测 。在 bert_predict.py 中指定下面三个参数就能加载训练好的模型完成预测:
VOCAB_FILE = './pretrainmodel/vocab.txt'
LABEL_FILE = './output/label2id.pkl'
EXPORT_PATH = './export_models/1581318324'
如果你有兴趣构建自己的模型,并且还有一些构建的疑惑,你可以在这里看到详细的说明文档:
https://github.com/rockyzhengwu/FoolNLTK/blob/master/train/README.md
未闻 Code·知识星球开放啦!
一对一答疑爬虫相关问题
职业生涯咨询
面试经验分享
每周直播分享
......
未闻 Code·知识星球期待与你相见~
一二线大厂在职员工
十多年码龄的编程老鸟
国内外高校在读学生
中小学刚刚入门的新人
在 “未闻 Code技术交流群” 等你来!
入群方式:添加微信“mekingname”,备注“粉丝群”(谢绝广告党,非诚勿扰!)
- 一日一技:二分偏左,二分搜索在分布式系统里面也有用?
- 一日一技:使用Python翻译HTML中的文本字符串
- 一日一技:如何让自己的工具函数在Python全局可用?
- 一日一技:Any与TypeVar,让IDE的自动补全更好用
- 一日一技:用Python做游戏有多简单
- 一日一技:如何批量给PDF添加水印?
- 一日一技:抛掉JavaScript,用HTML和Python做网站
- 一个让我感到 "细思极恐" 的开源项目!
- 一日一技:FastAPI 接口限流
- 5 分钟,使用内网穿透快速实现远程手机桌面!
- Python Delorean 优秀的时间格式智能转换工具
- 写在公众号粉丝2w时
- 一日一技:协程与多进程的完美结合
- 一个 "丧心病狂" 的开源项目
- python中如何优雅的实现代码与敏感信息分离?
- Pandas 多进程处理数据,速度快了不少!
- 爬虫出海Step by Step(一)
- 一日一知:架构到底是什么?
- Python识别花卉种类,并自动整理分类!
- 这几个摸鱼神器,你怎么能不知道