在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:DDParser开源软件地址:https://gitee.com/baidu/DDParser开源软件介绍:DDParser依存句法分析简介依存句法分析是自然语言处理核心技术之一,旨在通过分析句子中词语之间的依存关系来确定句子的句法结构,如下图实例所示: 项目介绍DDParser(Baidu Dependency Parser)是百度自然语言处理部基于深度学习平台飞桨(PaddlePaddle)和大规模标注数据研发的依存句法分析工具。其训练数据不仅覆盖了多种输入形式的数据,如键盘输入query、语音输入query,还覆盖了多种场景的数据,如新闻、论坛。该工具在随机评测数据上取得了优异的效果。同时,该工具使用简单,一键完成安装及预测。 效果说明
注:由于CTB5数据集规模较小,最优模型(即评测模型)使用了句子的word级表示、POS(词性标签)表示、以及预训练词向量,而DuCTB1.0数据集规模较大,其最优模型仅使用了句子的word级和char级表示。 快速开始版本依赖
一键安装用户可以使用以下方式进行一键安装及预测:
功能使用未分词方式
>>> from ddparser import DDParser>>> ddp = DDParser()>>> # 单条句子>>> ddp.parse("百度是一家高科技公司")[{'word': ['百度', '是', '一家', '高科技', '公司'], 'head': [2, 0, 5, 5, 2], 'deprel': ['SBV', 'HED', 'ATT', 'ATT', 'VOB']}]>>> # 多条句子>>> ddp.parse(["百度是一家高科技公司", "他送了一本书"])[{'word': ['百度', '是', '一家', '高科技', '公司'], 'head': [2, 0, 5, 5, 2], 'deprel': ['SBV', 'HED', 'ATT', 'ATT', 'VOB']}, {'word': ['他', '送', '了', '一本', '书'], 'head': [2, 0, 2, 5, 2], 'deprel': ['SBV', 'HED', 'MT', 'ATT', 'VOB']}]>>> # 输出概率和词性标签>>> ddp = DDParser(prob=True, use_pos=True)>>> ddp.parse(["百度是一家高科技公司"])[{'word': ['百度', '是', '一家', '高科技', '公司'], 'postag': ['ORG', 'v', 'm', 'n', 'n'], 'head': [2, 0, 5, 5, 2], 'deprel': ['SBV', 'HED', 'ATT', 'ATT', 'VOB'], 'prob': [1.0, 1.0, 1.0, 1.0, 1.0]}]>>> # buckets=True, 数据集长度不均时处理速度更快>>> ddp = DDParser(buckets=True)>>> # 选择使用transformer模型>>> ddp = DDParser(encoding_model='transformer')>>> # 使用GPU>>> ddp = DDParser(use_cuda=True) 已分词方式
>>> from ddparser import DDParser>>> ddp = DDParser()>>> ddp.parse_seg([['百度', '是', '一家', '高科技', '公司'], ['他', '送', '了', '一本', '书']])[{'word': ['百度', '是', '一家', '高科技', '公司'], 'head': [2, 0, 5, 5, 2], 'deprel': ['SBV', 'HED', 'ATT', 'ATT', 'VOB']}, {'word': ['他', '送', '了', '一本', '书'], 'head': [2, 0, 2, 5, 2], 'deprel': ['SBV', 'HED', 'MT', 'ATT', 'VOB']}]>>> # 输出概率>>> ddp = DDParser(prob=True)>>> ddp.parse_seg([['百度', '是', '一家', '高科技', '公司']])[{'word': ['百度', '是', '一家', '高科技', '公司'], 'head': [2, 0, 5, 5, 2], 'deprel': ['SBV', 'HED', 'ATT', 'ATT', 'VOB'], 'prob': [1.0, 1.0, 1.0, 1.0, 1.0]}] 注:标签含义见依存句法分析标注关系集合。 进阶使用项目下载用户可以通过 pip install --upgrade paddlepaddle-gpupip install --upgrade LAC 模型下载我们发布了基于 训练用户可以通过 CUDA_VISIBLE_DEVICES=0 python -u run.py \ --mode=train \ --use_cuda \ --feat=char \ --preprocess \ --model_files=model_files/baidu \ --model_files=model_files/baidu \ --train_data_path=data/baidu/train.txt \ --valid_data_path=data/baidu/dev.txt \ --test_data_path=data/baidu/test.txt \ --unk=UNK \ --buckets=15 注:用户可通过修改 评估用户可以通过执行 CUDA_VISIBLE_DEVICES=0 python run.py \ --mode=evaluate \ --use_cuda \ --model_files=model_files/baidu \ --test_data_path=data/baidu/test.txt \ --buckets=15 \ --tree 注:用户可通过修改 预测基于源码,我们提供两种基于命令行的预测方法,分别用于已分词数据和未分词数据。 基于已分词数据的预测 预测的输入数据要求以 CUDA_VISIBLE_DEVICES=0 python run.py \ --mode=predict \ --use_cuda \ --model_files=model_files/baidu \ --infer_data_path=data/baidu/test.txt \ --infer_result_path=data/baidu/test.predict \ --buckets=15 \ --tree 注:用户可通过修改 基于未分词数据的预测 CUDA_VISIBLE_DEVICES=0 python run.py \ --mode=predict_q \ --use_cuda \ --model_files=model_files/baidu \ --buckets=15 \ --tree 注:默认调用 参数说明mode: 任务模式(train, evaluate, predict, predict_q)config_path:保存超参文件的路径model_files:保存模型的路径train_data_path:训练集文件的路径valid_data_path:验证集文件的路径test_data_path:测试集文件的路径infer_data_path:待预测文件的路径pretrained_embedding_dir:预训练词向量的路径batch_size:批尺寸log_path:日志的路径log_level: 日志等级,默认INFO('DEBUG', 'INFO', 'WARNING', 'ERROR', 'FATAL')infer_result_path:预测结果保存的路径use_cuda:如果设置,则使用GPUpreprocess:训练模式下的使用参数,设置表示会基于训练数据进行词统计等操作,不设置默认使用已统计好的信息(节省统计时间);针对同一训练数据,多次训练可不设置该参数。seed:随机数种子(默认:1)threads:控制每个paddle实例的线程数tree:确保输出结果是正确的依存句法树prob:如果设置,则输出每个弧的概率,保存在结果的PROB列。feat:选择输入的特征(char,pos)buckets:选择最大分桶数(默认:15)punct:评估结果的时候是否包含标点unk:指定在预训练词表中UNK符号encoding_model:选择底层模型, 默认lstm(lstm, transformer) 数据格式说明本项目数据格式基于CoNLL-X(官方说明)的风格,缺少的字段使用"-"代替(用户只用关注ID,FROM,HEAD,DEPREL,PROB等列即可),如“百度是一家高科技公司”的可解析为如下格式: ID FROM LEMMA CPOSTAG POSTAG FEATS HEAD DEPREL PROB PDEPREL1 百度 百度 - - - 2 SBV 1.0 -2 是 是 - - - 0 HED 1.0 -3 一家 一家 - - - 5 ATT 1.0 -4 高科技 高科技 - - - 5 ATT 1.0 -5 公司 公司 - - - 2 VOB 1.0 - 数据集介绍依存句法分析标注关系集合DuCTB1.0数据集含14种标注关系,具体含义见下表:
数据来源DuCTB1.0: 文件结构.├── LICENSE├── README.md├── requirements.txt #依赖模块及版本要求├── ddparser #DDParser的核心代码,包含模型,测试数据,运行脚本等 后期计划
参考资料本项目所用方法出自论文《Deep Biaffine Attention for Neural Dependency Parsing》,对应的pytorch版本参见yzhangcs/parser。 文献引用如果您的学术工作成果中使用了DDParser,请您增加下述引用。我们非常欣慰DDParser能够对您的学术工作带来帮助。 @misc{zhang2020practical, title={A Practical Chinese Dependency Parser Based on A Large-scale Dataset}, author={Shuai Zhang and Lijie Wang and Ke Sun and Xinyan Xiao}, year={2020}, eprint={2009.00901}, archivePrefix={arXiv}, primaryClass={cs.CL}} 如何贡献我们欢迎开发者向DDParser贡献代码。如果您开发了新功能或发现了bug,欢迎给我们提交PR。 |
请发表评论