史丹佛NLP團隊釋出最新自然語言處理Python庫

dicksonjyl560101發表於2019-02-08

https://blog.csdn.net/weixin_42137700/article/details/86777031



史丹佛NLP團隊,於1月29日釋出了新版的自然語言處理Python庫:StandfordNLP,不同於以前java系的CoreNLP, 這次的專案是一個全新Python庫,內部基於PyTorch 1.0。小編剛刷完文件,個人覺得,這是目前最值得學習的自然語言處理演算法庫了!現在分享給大家。

史丹佛NLP團隊釋出最新自然語言處理Python庫


版本特性

新版的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


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29829936/viewspace-2600342/,如需轉載,請註明出處,否則將追究法律責任。

相關文章