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

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')

许可证

Creative Commons License
版权所有CC BY-NC-SA 4.0下的2019 CKIP。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
如何在Java和Javascript之间共享常量   c#无法使用Gson反序列化字节[]   如果字符串是实十进制数字,则在Java中仅显示十进制数字   与Android Studio的java FireBase同步失败   web应用程序的Java Oracle数据库更改通知问题   数组中缺少整数的java嵌套循环   zos在z/os上以TOD格式(一天中的时间)转换Java时间戳   java JAXB未根据注释生成XML(JDK 1.7)   java使用Twitter4j和Geolocation查找在该地区发布推文的用户,但如何获取用户ID?   在Libgdx中实现简单运动模糊的java意外结果   java在Android数据库中插入另一个EditText值?   java标准偏差数组(我的算法错误)   java如何修复M1 Mac的Ant javascript标记?   java遍历树标记值的长度   java理解Springboot中的Cron,自动发送电子邮件   java如何将“Data.Json”文件从资产保存到内部存储器,然后将其用于读/写   java代码在编写FirstDuplicate方法时会遇到时间限制问题   java将HTML转换为PDF并将其添加到段落中   javascript css()未设置正文标记的背景属性