开发和评估分块器

IOB格式和CoNLL2000语料库

语料库中的块类型貌似只有NP,VP和PP。

#从nltk中导入语料
from nltk.corpus import conll2000 as conll
import nltk
#字符串,单行,每行:单词 词性 在块中的IOB标记
text = '''
he PRP B-NP
accepted VBD B-VP
the DT B-NP
position NN I-NP
'''
print("字符串转块树",nltk.chunk.conllstr2tree(text))

#使用nltkCoNLL2000语料库中的句子
print("句子的树结构:")
print(conll.chunked_sents()[99])
print("只保存句子的NP块")
print(conll.chunked_sents('train.txt',chunk_types=['NP'])[99])
开发和评估分块器_第1张图片
运行结果

简单评估和基准

使用

from nltk.corpus import conll2000
import nltk

cp = nltk.RegexpParser("")
test_sents = conll2000.chunked_sents('test.txt',chunk_types=['NP'])
print(cp.evaluate(test_sents))

#尝试一个初级的正则表达式分类器
#正则表达式将词性是以C,D,J,N,P开头的块都识别为NP块
grammar = r"NP:{<[CDJNP].*>+}"
cp = nltk.RegexpParser(grammar)
print(cp.evaluate(test_sents))

你可能感兴趣的:(开发和评估分块器)