[英]Get Stanford NER result through NLTK with IOB format
我正在使用nltk作為斯坦福NER Tagger的接口。 我有疑問是否可以使用NLTK將NER結果作為IOB格式獲得 ? 我已經讀過這個問題,但這是針對Java用戶的
NLTK版本:3.4
Java版本:jdk1.8.0_211 / bin
斯坦福大學NER模型:english.conll.4class.distsim.crf.ser.gz
輸入 :我叫唐納德·特朗普
預期的輸出 :我/ O的名字/ O是/ O Donald / B-PERSON Trumph / I-PERSON
首先看斯坦福解析器和NLTK
編寫一個簡單的循環並遍歷NER輸出:
def stanford_to_bio(tagged_sent):
prev_tag = "O"
bio_tagged_output = []
current_ner = []
for word, tag in tagged_sent:
if tag == 'O':
bio_tagged_output += current_ner
bio_tagged_output.append((word, tag))
current_ner = []
prev_tag = 'O'
else:
if prev_tag == 'O':
current_ner.append((word, 'B-'+tag))
prev_tag = 'B'
else:
current_ner.append((word, 'I-'+tag))
prev_tag = 'I'
if current_ner:
bio_tagged_output += current_ner
return bio_tagged_output
tagged_sent = [('Rami', 'PERSON'), ('Eid', 'PERSON'), ('is', 'O'), ('studying', 'O'), ('at', 'O'), ('Stony', 'ORGANIZATION'), ('Brook', 'ORGANIZATION'), ('University', 'ORGANIZATION'), ('in', 'O'), ('NY', 'STATE_OR_PROVINCE')]
stanford_to_bio(tagged_sent)
[OUT]:
[('Rami', 'B-PERSON'),
('Eid', 'I-PERSON'),
('is', 'O'),
('studying', 'O'),
('at', 'O'),
('Stony', 'B-ORGANIZATION'),
('Brook', 'I-ORGANIZATION'),
('University', 'I-ORGANIZATION'),
('in', 'O'),
('NY', 'B-STATE_OR_PROVINCE')]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.