我有一段
在卡拉克省所有内部线路上运行的公共巴士都有 昨天举行罢工,抗议罢免决定 超过12年的工作巴士。公交车司机和车主说 新政府决定拆除已经结束的公交车 12岁以下,将给这些车主带来巨大的经济损失 公共汽车,其中大多数因购买而遭受高额债务。 “政府不知道自己在做什么,尤其是在 取消数千辆以各种方式运营的公交车的案例 王国的部分地区,这些国家通过银行和 他指出,“公交车将保持闲置状态 直到政府复审该决定对成千上万的人不公平 王国的家庭。”就他而言, 卡拉克运输管理当局(Mahmoud Al-Sarayra)没有 回答Al Ghad的呼吁,以回应驾驶员的抱怨 和公交车主
在该段上运行以下代码:
import nltk
sentences = [x.replace('.','').replace('"','') for x in nltk.sent_tokenize(paragraph)]
tokenized_sentences = [nltk.word_tokenize(sentence) for sentence in sentences]
tagged_sentences = [nltk.pos_tag(sentence) for sentence in tokenized_sentences]
chunked_sentences = [x for x in nltk.ne_chunk_sents(tagged_sentences)]
entities=np.unique(np.array([x for s in chunked_sentences for x in s if type(x)==nltk.tree.Tree ])).tolist()
NLTK函数ne_chunk_sents给我以下命名实体:
[Tree('GPE', [('Bus', 'NNP')]),
Tree('GPE', [('Karak', 'NNP')]),
Tree('GPE', [('Public', 'NNP')]),
Tree('ORGANIZATION', [('Karak', 'NNP'), ('Transport', 'NNP'), ('Regulatory', 'NNP'), ('Authority', 'NNP')]),
Tree('ORGANIZATION', [('Kingdom', 'NNP')]),
Tree('PERSON', [('Al', 'NNP'), ('Ghad', 'NNP')]),
Tree('PERSON', [('Mahmoud', 'NNP'), ('Al-Sarayra', 'NNP')])]
GPE代表“地缘政治实体”。我不确定“公共”和“公共汽车”是否合格。我知道Karak是我要找的东西。 NLTK中最简单的方法是将常见的英语单词(例如Public和Bus)与非英语且最有可能是地名的作品区分开来?
注意:这类似于两年前的this question,但没有得到明确的答案。
答案 0 :(得分:0)
因此,遵循the similar question from 2 years ago的思路,这是一个解决方案:
e2=[(x.label(),' '.join([y for y,z in x[0:]])) for x in entities]
e3=[y for x,y in e2 if x == 'GPE']
english_vocab = set(w.lower() for w in nltk.corpus.words.words())
e4=[x for x in e3 if x.lower() not in english_vocab]
然后 e4 是列表
['Karak']