实用的人类自然语言处理工具。依赖性分析,句法成分分析,语义角色标记,命名实体识别,浅层分块,词性标注,全部使用python。

practnlptools的Python项目详细描述


重要的是
==practnlptools

==practnlptools



>实用的人类自然语言处理工具。
practnlptools是一个pythonic库,位于senna和stanford依赖提取器之上。


语义角色标记
2。句法分析
3。词性标注(词性标注)
4.命名实体识别(NER)
5.依赖分析
6。浅分块

功能
===
1。快:番泻叶是C。所以它很快。
2。我们只使用stanford parser的依赖抽取器组件,它从senna中获取语法分析并应用依赖抽取。因此不需要为stanford parser加载解析模型,这需要时间。易于使用。<安装>需要安装:带有内存的计算机,Java运行时环境(1.7最好与1.6同时工作),但是没有测试。)installed和python。

如果您在linux中:
运行:

sudo python setup.py install

如果您在windows中:
以管理员身份运行此命令:

sudo python setup.py install


示例
==


chunk和ner使用bios标记方案。扩展到:

1。s=标签包含单个单词。
2.b=标记以单词开头。
3。i=单词位于已开始的标记的内部。
4。e=标记以单词结尾。
5。0=其他标记。

示例:
('biplab','s-np'),('is','s-vp'),('a','b-np'),('good','i-np'),('boy','e-np'),('.','o')

表示:

[biplab]np[is]vp[a good boy]np[.]o


创建注释器对象。

>>gt;来自practnlptools.tools import annotator
>>gt;annotator=annotator()


死亡让这个世界对你和我来说都变得更美好。")
{dep-parse':'','chunk':[('there','s-np'),('are','s-vp'),('people','s-np'),('diing','b-vp'),('make','e-vp'),('this','b-np'),('world','e-np'),('a','b-np,('better','i-np'),('place','e-np,('for','s-pp'),('you','s-np'),('and','o'),('for','s-pp'),('me','s-np')],'pos':[('there','ex'),('are','vbp'),('people','nns'),('deiting','vbg'),('make','vb'),('this','dt'),('world','nn',('a','dt'),('better','jjjr'),('place','nn,('for','in'),('you','prp'),('and','cc'),('for',,'在'),('me.','.'),'srl':[{'a1':'people','v':'diging'},{'a1':'people this world','a2':'a better place for you and me.','v':'make'}],'语法树':'(s1(s(np(ex there))(vp(vbp are)(np(np(nns people))(sbar(s(vbg diing)(vp(vb make)(s(np(dt this)(nn world))(np(dt a)(jjjr better)(nn place)))(pp(in for)(np(prp you)))(cc和)(pp(in for)(np()))))))))","动词":['diing','make','words':['there','are','people','diing make','this','world','a','better','place','for','you','and','for','me.'],'ner':[('there','o'),('are','o'),('people','o'),('diing','o'),('make','o'),('this','o'),('world','o'),('a',,'o'),('better','o'),('place','o'),('for','o'),('you','o'),('and','o'),('for','o'),('me.','o')]}



annotator.getannotations("有人会死去,让这个世界对你和我来说都更美好。",dep悻parse=true)
{dep悻parse':'expl(are-2,there-1)
root(root-0,are-2)
nsubj(are-2,people-3)
dep(make-5,diing-4)
rcmod(people-3,make-5)
det(world-7,this-6)
nsubj(第10位,第7位)
det(第10位,第8位)
amod(第10位,第9位更好)
xco(make-5,place-10)
p(make-5,you-12)
p(make-5,place-10)
p(make-5,you-12)和(you-12,me-15)‘chunk’:[(‘there’‘s-np’,(‘are’,‘s-vp’,(‘are’,‘s-vp’,(‘peop‘s’,‘s-np’,(‘peop‘s’,‘s-np’,(‘临死’,‘b-vp’,(‘make’,‘e-vp’,‘e-vp’,(‘this’,‘b-np’,‘b-np’,(‘this’,‘b-np"你",'s-np'),('and','o'),('for','s-pp'),('me.','s-np'),'pos':[('there','ex'),('are','vbp'),('people','nns'),('diing','vbg'),('make','vb'),('this','dt'),('world','nn',('a','dt'),('better','jjjr'),('place','nn,('for','in'),('you','prp'),('and','cc'),('for','in'),('me.','.')],'srl':[{'a1':'people','v':'diging'},{'a1':'people this world','a2':'a better place for you and me.','v':'make'}],'语法树':'(s1(s(np(ex there))(vp(vbp are)(np(np(nns people))(sbar(s(vbg diing)(vp(vb make)(s(np(dt this)(nn world))(np(dt a)(jjjr better)(nn place)))(pp(in for)(np(prp you)))(cc和)(pp(in for)(np()))))))))","动词":['diing','make','words':['there','are','people','diing make','this','world','a','better','place','for','you','and','for','me.'],'ner':[('there','o'),('are','o'),('people','o'),('diing','o'),('make','o'),('this','o'),('world','o'),('a',,'o'),('better','o'),('place','o'),('for','o'),('you','o'),('and','o'),('for','o'),('me.','o')]}


>您可以通过以下方式访问单个组件:

>;>;annotator.getannotations("biplab是个好孩子。")['pos']
[('biplab','nnp'),('is','vbz'),('a','dt'),('good','jj'),('boy','nn'),('.','.')]
>;>annotator.getannotations("biplab是个好孩子。")['chunk']
[('biplab','s-np'),('is','s-vp'),('a','b-np'),('good','i-np'),('boy','e-np'),('.','o')]



机器人并在制造后将其破坏。")['verbs']
['created','broke','making']


>;annotator.getannotations("他创建了机器人,并在创建后将其断开。")['srl']
[{'a1':'机器人','a0':'他','v':'创建'},{'a1':'它','a0':'他','am-tmp':'完成后。','v':'断开'},{'a1':'它','a0':'他','v':'making'}

'syntax_tree'以penn tree bank格式返回语法树。

>>>;注释器.getAnnotations("他创建了机器人,并在生成后将其断开。")["语法树"]
(s1(s(np(prp he))(vp(vp(vbd created)(np(dt the)(nn robot))))(cc和)(vp(vbd break)(np(prp it))(pp(in after)(s(vp(vbg making)(np(prp it)))))))"

"dep parse"返回依赖关系作为一根绳子。每一种关系都是新线。您可能需要对此进行一些后期处理。

>;>print annotator.getannotations("他创建了robot并在创建之后将其破坏。",dep_parse=true)['dep_parse']
nsubj(created-2,he-1)
root(root-0,created-2)
det(robot-4,-3)
dobj(created-2,robot-4)
连接和(created-2,break-6)
dobj(break-6,it-7)
在(break-6,making-9)
dobj(making-9,it-10)



如果要注释的语句很多,请使用批处理模式,注释器。getbatchannotations(语句,dep_parse=真/假)。返回批注词典列表。

>;>;批注器.getBatchAnnotations(["他创建了robot并在创建之后将其破坏。","biplab是个好孩子。"],dep_parse=true)
[{dep_parse':'nsubj(created-2,he-1)
root(root-0,created-2)
det(robot-4,3)
dobj(created-2,robot-4)
连接和(created-2,break-6)
dobj(break-6,it-7)
准备-9)
dobj(making-9,it.-10)','chunk':[('he','s-np'),('created','s-vp'),('the','b-np'),('robot','e-np'),('and','o'),('broke','s-vp'),('it','s-np'),('after','s-pp'),('making','s-vp,('it','s-np'),'pos:[('he','prp'),('created','vbd'),('the','dt,('robot','nn'),('and''和''cc'),('broke','vbd','it','prp','prp'),('after','in','in','making','vbg','it''''prp'),'srl':[{'a1':'机器人','a0':'a0':'a0':'a1':'a1':'a0':'他','am-tmp':'他制造制造制造制造制造制造制造制造制造制造制造制造制造制造制造制造制造制造制造制造制造制造制造制造制造制造制造制造制造制造制造制造制造制造制造制造制造制造制造制造制造制造制造制造制造制造制造制造制造制造制造制造制造制造制造制造制造制造制造制造制造制造制造制造制造制造制造制造制造s1(s(np(prp他)(副总裁(副总裁(VBD创建)(NP(dt the)(nn robot))(CC and)(副总裁(VBD break)(NP(prp it))(PP(in after)(S(副总裁(VBG making)(NP(prp it)))))","动词":["created","break","making"],"words":["he","created","the","robot","and","break","it","after","making","it.","ner":[("he","o"),("created",'o'),('the,'o',('robot,'o','o',('and,'o','o',('broke,'o','o',('broke,'o','o',('it,'it,'o','o','o','o'),{'dep'u parse':'nsubj(boy-5,biplalab-1)
cop(boy-5,is-2)
det(boy-5,a-3)
amod(boy-5,good-4)
根(root-0,boy-0,boy-5,a-3)
det(bo('biplab','s-np'),('is','s-vp'),('a','b-np'),('good','i-np'),('boy','e-np'),('.','o'),'pos':[('biplab','nnp'),('is','vbz'),('a','dt'),('good','jj'),('boy','nn'),('.','.'),'srl':[,'语法树':'(s1(s(np(nnp biplab))(vp(vbz is)(np(dt a)(jj good)(nn boy))(。)','动词':[],'单词':['biplab','is','a','good','boy','.],'ner':[('biplab','s-per'),('is','o'),('a','o'),('good','o'),('boy','o'),('.','o')]}]


注意:为了说明,我们使用了:

>;annotator.getannotations("他创建了机器人,并在创建后将其断开。",dep_parse=true)["dep_parse"]


更好的方法是:

>;>;annotation=annotator.getannotations("他创建了机器人,并在创建后将其断开。",dep_parse=true)
>;NER=注释['NER']
>;>srl=注释['srl']


问题
==

1。不能给句子加(或),即左括号或右括号。结果是没有结果。所以在发送给注释者之前,请先清理句子。
2.另一个问题可能是为各种平台构建的senna可执行文件。我没有经历过,但很有可能。如果您遇到此问题:


转到文件夹practnlptools

gcc-o3-o senna-linux64*.c(对于Linux 64位)
gcc-o3-o senna-linux32*.c(对于Linux 32位)
gcc-o3-o senna senna osx*.c(对于Mac)
*windows:我从未编译过CWindows中的文件。*
python setup.py install

>3。任何其他情况下,您都可以在


to do
===
1中从La Laa Laaaa到Biplab12(A T)CSE d0t IITB d0t AC d0t。使依赖分析更容易访问。
2.包含用于生成Senna for Windows的指令

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

推荐PyPI第三方库


热门话题
java如何使用JNA创建同一库的多个实例?   java在将Graphql查询作为JSON字符串传递时收到意外的令牌错误   OAuth2 oltu的java问题   java桌面应用程序使用的好的嵌入式数据库是什么?   java Firebase数据库高级查询选项   java正在使磁盘上的EhCache元素过期   java 安卓还原处于backstack中的片段的实例状态   XMemcached中的java异步集   java TimescaleDB是否使用与Postgresql完全相同的JDBC驱动程序?   java从网站c读取信息#   检查java Android中的字符串是否只包含数字和空格   c#如何向web服务发送特殊字符?   grails无法调用需要java的方法。lang.类参数?   java我在组合框中调用的方法不会运行所有代码,它只运行部分代码   java发送带有标头的HTTP GET请求