首页 > 解决方案 > 如何使用 NLTK 包在文本中获取有关人口/国家/地区的信息

问题描述

我有关于人口和国家信息的文本。我想获得人口和国家的 NER。

我的文字如下:

text_sent = 日本动脉闭塞性疾病中的抗原。使用 nih 标准淋巴细胞毒性试验,在 48 名血栓闭塞性脉管炎患者中的 17 名(35.4%)中发现了一种可能的日本特异性抗原 bjw 22.2(35.4%),在 15 名 takayasu 患者中的 5 名动脉炎(33.3%)和 113 名正常对照组中的 11 名(9.7%)。

我试过用这个

从 nltk 导入 word_tokenize, pos_tag, ne_chunk ne_chunk(pos_tag(word_tokenize(text_sent )))

我得到了标记,但没有得到任何 GPE 标记词

(S 抗原/NNS in/IN 动脉/JJ 闭塞性/JJ 疾病/NNS in/IN japan.using/VBG a/DT nih/JJ 标准/JJ 淋巴细胞毒性/NN 测试/NN,/, a/DT 可能/JJ 日本/JJ 特异性/JJ 抗原/NN ,/, bjw/JJ 22.2/CD 是/VBD 鉴定/VBN 入/IN 17/CD 出/IN/IN 48/CD 患者/NNS 合并/IN 血栓性血管炎/NN 闭塞性/NNS (/( 35.4/CD per/IN cent/NN)/) ,/, in/IN 5/CD out/IN/IN 15/CD 患者/NNS with/IN takayasu/NN's/POS 动脉炎/NN( /( 33.3/CD per/IN cent/NN )/) and/CC in/IN 11/CD out/IN of/IN 113/CD 正常/JJ 控制/NNS (/( 9.7/CD per/IN cent/NN )/) ./.)

标签: python-3.xnltknamed-entity-recognition

解决方案


您没有获得 GPE 标记,因为“japan.using”不是地理位置的名称,而是应该是日本使用

我已经尝试过使用训练有素的 spacy 模型

import spacy 
nlp = spacy.load("en_core_web_sm")

doc = nlp(u"antigens in arterial occlusive diseases in japan.using a nih standard lymphocytotoxicity test, a possible japanese specific antigen, bjw 22.2 was identified in 17 out of 48 patients with thromboangiitis obliterans (35.4 per cent), in 5 out of 15 patients with takayasu's arteritis (33.3 per cent) and in 11 out of 113 normal controls (9.7 per cent).")

for ent in doc.ents:
print(ent.text, ent.start_char, ent.end_char, ent.label_)

#o/p
japanese 106 114 NORP
22.2 137 141 CARDINAL
17 160 162 CARDINAL
48 170 172 CARDINAL
35.4 per cent 215 228 MONEY
5 234 235 CARDINAL
15 243 245 CARDINAL
33.3 per cent 282 295 MONEY
11 304 306 CARDINAL
113 314 317 CARDINAL
9.7 per cent 335 347 MONEY

但是当您将 'japan.using' 修改为 'Japan. 使用'您将获得 GPE 标签

Japan 43 48 GPE
japanese 107 115 NORP
22.2 138 142 CARDINAL
17 161 163 CARDINAL
48 171 173 CARDINAL
35.4 per cent 216 229 MONEY
5 235 236 CARDINAL
15 244 246 CARDINAL
33.3 per cent 283 296 MONEY
11 305 307 CARDINAL
113 315 318 CARDINAL
9.7 per cent 336 348 MONEY

推荐阅读