斯坦福NLP团队发布最新自然语言处理Python库
https://www.toutiao.com/a6655115885528744456/
斯坦福NLP团队,于1月29日发布了新版的自然语言处理Python库:StandfordNLP,不同于以前java系的CoreNLP, 这次的项目是一个全新Python库,内部基于PyTorch 1.0。小编刚刷完文档,个人觉得,这是目前最值得学习的自然语言处理算法库了!现在分享给大家。
版本特性
新版的StandfordNLP包含以下特性:
- 纯python库,没有什么设置项,pip install后直接可用
- 拥有自然语言处理所需的几乎所有方法
- 包含预训练模型,支持73个树库中的53种语言
- 与斯坦福CoreNLP无缝联动
- 斯坦福NLP团队出品,质量有保证
安装
pip install stanfordnlp
使用
>>> import stanfordnlp >>> stanfordnlp.download('en') # 这会下载英语的神经网络模型 >>> nlp = stanfordnlp.Pipeline() # 获取一个默认的英语语言处理流程 >>> doc = nlp("Barack Obama was born in Hawaii. He was elected president in 2008.") >>> doc.sentences[0].print_dependencies() ('Barack', '4', 'nsubj:pass') ('Obama', '1', 'flat') ('was', '4', 'aux:pass') ('born', '0', 'root') ('in', '6', 'case') ('Hawaii', '4', 'obl') ('.', '4', 'punct')
中文demo
>>> import stanfordnlp >>> stanfordnlp.download('zh') # 下载中文模型 >>> nlp = stanfordnlp.Pipeline(lang='zh') # 中文语言处理流程 >>> doc = nlp("達沃斯世界經濟論壇是每年全球政商界領袖聚在一起的年度盛事。") >>> doc.sentences[0].print_tokens() # 打印token 達沃斯 達沃斯 PROPN 世界 世界 NOUN 經濟 經濟 NOUN 論壇 論壇 NOUN 是 是 AUX 每年 每年 DET 全球 全球 NOUN 政 政 PART 商界 商界 NOUN 領袖 領袖 NOUN 聚 聚 VERB 在 在 VERB 一起 一起 NOUN 的 的 PART 年度 年度 NOUN 盛事 盛事 NOUN 。 。 PUNCT >>> doc.sentences[0].print_dependencies() # 打印依存分析树 ('達沃斯', '4', 'nmod') ('世界', '4', 'nmod') ('經濟', '4', 'nmod') ('論壇', '16', 'nsubj') ('是', '16', 'cop') ('每年', '10', 'nmod') ('全球', '10', 'nmod') ('政', '9', 'case:pref') ('商界', '10', 'nmod') ('領袖', '11', 'nsubj') ('聚', '16', 'acl:relcl') ('在', '11', 'mark') ('一起', '11', 'obj') ('的', '11', 'mark:relcl') ('年度', '16', 'nmod') ('盛事', '0', 'root') ('。', '16', 'punct')
Pipeline的配置
在StandfordNLP里,Pipline配置了StandfordNLP怎么处理数据,比如英文的默认是Token,Lemma等,而中文的是分词,Token等。完整的Pipline配置见下图:
import stanfordnlpconfig = { 'processors': 'tokenize,mwt,pos,lemma,depparse', # 配置调用该Pipline需要用到的模型, lang': 'fr', # 配置该Pipline所处理的目标语言 # 配置用到的模型,及其模型路径,注意,这里的模型都是PyTorch的 # 你也可以自己训练自己的模型 'tokenize_model_path': './fr_gsd_models/fr_gsd_tokenizer.pt', 'mwt_model_path': './fr_gsd_models/fr_gsd_mwt_expander.pt', 'pos_model_path': './fr_gsd_models/fr_gsd_tagger.pt', 'pos_pretrain_path': './fr_gsd_models/fr_gsd.pretrain.pt', 'lemma_model_path': './fr_gsd_models/fr_gsd_lemmatizer.pt', 'depparse_model_path': './fr_gsd_models/fr_gsd_parser.pt', 'depparse_pretrain_path': './fr_gsd_models/fr_gsd.pretrain.pt' } nlp = stanfordnlp.Pipeline(**config) # 根据配置初始化Pipline doc = nlp("Van Gogh grandit au sein d'une famille de l'ancienne bourgeoisie.") # 将Pipline运用到句子上 doc.sentences[0].print_tokens() # 查看结果
更多信息,请访问该库的github地址:
https://github.com/stanfordnlp/stanfordnlp