我正在尝试使用 Python NLTK 中的斯坦福命名实体识别器 (NER) 提取人员和组织的列表。
当我跑步时:
from nltk.tag.stanford import NERTagger
st = NERTagger('/usr/share/stanford-ner/classifiers/all.3class.distsim.crf.ser.gz',
'/usr/share/stanford-ner/stanford-ner.jar')
r=st.tag('Rami Eid is studying at Stony Brook University in NY'.split())
print(r)
输出是:
[('Rami', 'PERSON'), ('Eid', 'PERSON'), ('is', 'O'), ('studying', 'O'),
('at', 'O'), ('Stony', 'ORGANIZATION'), ('Brook', 'ORGANIZATION'),
('University', 'ORGANIZATION'), ('in', 'O'), ('NY', 'LOCATION')]
我想要的是从此列表中提取以下形式的所有个人和组织:
Rami Eid
Sony Brook University
我尝试遍历元组列表:
for x,y in i:
if y == 'ORGANIZATION':
print(x)
但此代码每行仅打印每个实体一个:
Sony
Brook
University
真实的数据在一句话中可能有多个组织、多个人,如何在不同实体之间进行限制?