如何构建一个系统?


当前第2页 返回上一页

对于之前自己定义的规则cp,可以使用cp.evaluate(conll2000.chunked_sents('train.txt')[99]) 来测试正确率。利用之前学过的Unigram标注器,可以进行名词短语分块,并且测试准确度

class UnigramChunker(nltk.ChunkParserI):"""        一元分块器,        该分块器可以从训练句子集中找出每个词性标注最有可能的分块标记,        然后使用这些信息进行分块    """def __init__(self, train_sents):"""            构造函数            :param train_sents: Tree对象列表        """train_data = []for sent in train_sents:# 将Tree对象转换为IOB标记列表[(word, tag, IOB-tag), ...]conlltags = nltk.chunk.tree2conlltags(sent)# 找出每个词性标注对应的IOB标记ti_list = [(t, i) for w, t, i in conlltags]
            train_data.append(ti_list)# 使用一元标注器进行训练self.__tagger = nltk.UnigramTagger(train_data)def parse(self, tokens):"""            对句子进行分块            :param tokens: 标注词性的单词列表            :return: Tree对象        """# 取出词性标注tags = [tag for (word, tag) in tokens]# 对词性标注进行分块标记ti_list = self.__tagger.tag(tags)# 取出IOB标记iob_tags = [iob_tag for (tag, iob_tag) in ti_list]# 组合成conll标记conlltags = [(word, pos, iob_tag) for ((word, pos), iob_tag) in zip(tokens, iob_tags)]return nltk.chunk.conlltags2tree(conlltags)
test_sents = conll2000.chunked_sents("test.txt", chunk_types=["NP"])
train_sents = conll2000.chunked_sents("train.txt", chunk_types=["NP"])

unigram_chunker = UnigramChunker(train_sents)print(unigram_chunker.evaluate(test_sents))


命名实体识别和信息提取

命名实体:确切的名词短语,指特定类型的个体,如日期、人、组织等 。如果自己去许梿分类器肯定头大(ˉ▽ ̄~)~~。NLTK提供了一个训练好的分类器--nltk.ne_chunk(tagged_sent[,binary=False]) 。如果binary被设置为True,那么命名实体就只被标注为NE;否则标签会有点复杂。

sent = nltk.corpus.treebank.tagged_sents()[22]print(nltk.ne_chunk(sent,binary=True))


如果命名实体被确定后,就可以实现关系抽取来提取信息。一种方法是:寻找所有的三元组(X,a,Y)。其中X和Y是命名实体,a是表示两者关系的字符串,示例如下:

#请在Python2下运行import re
IN = re.compile(r'.*\bin\b(?!\b.+ing)')for doc in nltk.corpus.ieer.parsed_docs('NYT_19980315'):for rel in nltk.sem.extract_rels('ORG','LOC',doc,corpus='ieer',pattern = IN):print nltk.sem.show_raw_rtuple(rel)

以上就是如何构建一个系统?的详细内容,更多文章请关注木庄网络博客!!

返回前面的内容

相关阅读 >>

Python的变量和变量之间如何实现乘法运算

Python 统计字数的思路详解

Python中break和continue的区别

django教程中user-profile的使用方法介绍(附源码)

Python用什么数据库

Python如何对字典进行排序

Python双等号是什么意思

ubantu中如何卸载Python

Python爬虫是什么?为什么把Python叫做爬虫?

Python怎么把字符串换行输出

更多相关阅读请进入《Python》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...