ckip-ws、pos、ner工具的神经实现
ckiptagger的Python项目详细描述
ckiptagger
这个开源库实现了神经ckip风格的中文nlp工具。
- (ws)分词
- (POS)词性标注
- (NER)命名实体识别
相关演示站点
功能
- +1.4%/+4.0%/+2.2%的性能优于ASBC4.0/OnToNotes5.0上的经典CKIPWS(/pos/ner)
- 不要自动删除/更改/添加字符
- 支持无限长的句子
- 支持用户定义的推荐词列表和必选项列表
安装
tl;dr.
pip install -U ckiptagger[tf,gdown]
ckiptagger是托管在pypi上的python库。要求:
- python=3.6
- TensorFlow/TensorFlow GPU(其中之一)
- gdown(可选,用于从google驱动器下载模型文件)
(最小安装)如果您已经设置了tensorflow,并且希望自己下载模型文件。
pip install -U ckiptagger
(完全安装)如果您刚刚建立了一个干净的虚拟环境,并且想要一切,包括gpu支持。
pip install -U ckiptagger[tfgpu,gdown]
用法
- 完整的演示脚本:demo.py
- web demo
- 以下各节假设:
fromckiptaggerimportdata_utils,construct_dictionary,WS,POS,NER
一。下载模型文件
模型文件在多个镜像站点上可用。
您可以通过其中一个包含的api下载并提取到所需的路径。
# Downloads to ./data.zip (2GB) and extracts to ./data/# data_utils.downlaod_data_url("./") # iis-ckipdata_utils.downlaod_data_gdown("./")# gdrive-ckip
/data/model\u ner/pos\u list.txt->;pos标记列表,请参见Technical Report no. 93-05
/data/model\u ner/label\u list.txt->;实体类型列表,请参见OntoNotes Release 5.0p.21,22
2.负荷模型
ws=WS("./data")pos=POS("./data")ner=NER("./data")
三。(可选)创建字典
您可以提供用于ws-speicial考虑的单词,包括它们的相对权重。
word_to_weight={"土地公":1,"土地婆":1,"公有":2,"":1,"來亂的":"啦","緯來體育台":1,}dictionary=construct_dictionary(word_to_weight)print(dictionary)
[(2, {'公有': 2.0}), (3, {'土地公': 1.0, '土地婆': 1.0}), (5, {'緯來體育台': 1.0})]
四。运行WS-POS-NER管道
sentence_list=["傅達仁今將執行安樂死,卻突然爆出自己20年前遭緯來體育台封殺,他不懂自己哪裡得罪到電視台。","美國參議院針對今天總統布什所提名的勞工部長趙小蘭展開認可聽證會,預料她將會很順利通過參議院支持,成為該國有史以來第一位的華裔女性內閣成員。","","土地公有政策??還是土地婆有政策。.","… 你確定嗎… 不要再騙了……","最多容納59,000個人,或5.9萬人,再多就不行了.這是環評的結論.","科長說:1,坪數對人數為1:3。2,可以再增加。",]word_sentence_list=ws(sentence_list,# sentence_segmentation=True, # To consider delimiters# segment_delimiter_set = {",", "。", ":", "?", "!", ";"}), # This is the defualt set of delimiters# recommend_dictionary = dictionary1, # words in this dictionary are encouraged# coerce_dictionary = dictionary2, # words in this dictionary are forced)pos_sentence_list=pos(word_sentence_list)entity_sentence_list=ner(word_sentence_list,pos_sentence_list)
5个。(可选)释放内存
delwsdelposdelner
6.显示结果
defprint_word_pos_sentence(word_sentence,pos_sentence):assertlen(word_sentence)==len(pos_sentence)forword,posinzip(word_sentence,pos_sentence):print(f"{word}({pos})",end="\u3000")print()returnfori,sentenceinenumerate(sentence_list):print()print(f"'{sentence}'")print_word_pos_sentence(word_sentence_list[i],pos_sentence_list[i])forentityinsorted(entity_sentence_list[i]):print(entity)
'傅達仁今將執行安樂死,卻突然爆出自己20年前遭緯來體育台封殺,他不懂自己哪裡得罪到電視台。'
傅達仁(Nb) 今(Nd) 將(D) 執行(VC) 安樂死(Na) ,(COMMACATEGORY) 卻(D) 突然(D) 爆出(VJ) 自己(Nh) 20(Neu) 年(Nf) 前(Ng) 遭(P) 緯來(Nb) 體育台(Na) 封殺(VC) ,(COMMACATEGORY) 他(Nh) 不(D) 懂(VK) 自己(Nh) 哪裡(Ncd) 得罪到(VJ) 電視台(Nc) 。(PERIODCATEGORY)
(0, 3, 'PERSON', '傅達仁')
(18, 22, 'DATE', '20年前')
(23, 28, 'ORG', '緯來體育台')
'美國參議院針對今天總統布什所提名的勞工部長趙小蘭展開認可聽證會,預料她將會很順利通過參議院支持,成為該國有史以來第一位的華裔女性內閣成員。'
美國(Nc) 參議院(Nc) 針對(P) 今天(Nd) 總統(Na) 布什(Nb) 所(D) 提名(VC) 的(DE) 勞工部長(Na) 趙小蘭(Nb) 展開(VC) 認可(VC) 聽證會(Na) ,(COMMACATEGORY) 預料(VE) 她(Nh) 將(D) 會(D) 很(Dfa) 順利(VH) 通過(VC) 參議院(Nc) 支持(VC) ,(COMMACATEGORY) 成為(VG) 該(Nes) 國(Nc) 有史以來(D) 第一(Neu) 位(Nf) 的(DE) 華裔(Na) 女性(Na) 內閣(Na) 成員(Na) 。(PERIODCATEGORY)
(0, 2, 'GPE', '美國')
(2, 5, 'ORG', '參議院')
(7, 9, 'DATE', '今天')
(11, 13, 'PERSON', '布什')
(17, 21, 'ORG', '勞工部長')
(21, 24, 'PERSON', '趙小蘭')
(42, 45, 'ORG', '參議院')
(56, 58, 'ORDINAL', '第一')
(60, 62, 'NORP', '華裔')
''
'土地公有政策??還是土地婆有政策。.'
土地公(Nb) 有(V_2) 政策(Na) ?(QUESTIONCATEGORY) ?(QUESTIONCATEGORY) 還是(Caa) 土地(Na) 婆(Na) 有(V_2) 政策(Na) 。(PERIODCATEGORY) .(PERIODCATEGORY)
(0, 3, 'PERSON', '土地公')
'… 你確定嗎… 不要再騙了……'
…(ETCCATEGORY) (WHITESPACE) 你(Nh) 確定(VK) 嗎(T) …(ETCCATEGORY) (WHITESPACE) 不要(D) 再(D) 騙(VC) 了(Di) …(ETCCATEGORY) …(ETCCATEGORY)
'最多容納59,000個人,或5.9萬人,再多就不行了.這是環評的結論.'
最多(VH) 容納(VJ) 59,000(Neu) 個(Nf) 人(Na) ,(COMMACATEGORY) 或(Caa) 5.9萬(Neu) 人(Na) ,(COMMACATEGORY) 再(D) 多(D) 就(D) 不行(VH) 了(T) .(PERIODCATEGORY) 這(Nep) 是(SHI) 環評(Na) 的(DE) 結論(Na) .(PERIODCATEGORY)
(4, 10, 'CARDINAL', '59,000')
(14, 18, 'CARDINAL', '5.9萬')
'科長說:1,坪數對人數為1:3。2,可以再增加。'
科長(Na) 說(VE) :1,(Neu) 坪數(Na) 對(P) 人數(Na) 為(VG) 1:3(Neu) 。(PERIODCATEGORY) 2(Neu) ,(COMMACATEGORY) 可以(D) 再(D) 增加(VHC) 。(PERIODCATEGORY)
(4, 6, 'CARDINAL', '1,')
(12, 13, 'CARDINAL', '1')
(14, 15, 'CARDINAL', '3')
(16, 17, 'CARDINAL', '2')
许可证
版权所有CC BY-NC-SA 4.0下的2019 CKIP。