ich alle Land extrahieren möchten und Nationalität erwähnt von Text nltk verwenden, habe ich POS alle GPE zu extrahieren Tagging markierte Token, aber die Ergebnisse waren nicht befriedigend.Extrahierung Nationalitäten und Länder von Text
abstract="Thyroid-associated orbitopathy (TO) is an autoimmune-mediated orbital inflammation that can lead to disfigurement and blindness. Multiple genetic loci have been associated with Graves' disease, but the genetic basis for TO is largely unknown. This study aimed to identify loci associated with TO in individuals with Graves' disease, using a genome-wide association scan (GWAS) for the first time to our knowledge in TO.Genome-wide association scan was performed on pooled DNA from an Australian Caucasian discovery cohort of 265 participants with Graves' disease and TO (cases) and 147 patients with Graves' disease without TO (controls). "
sent = nltk.tokenize.wordpunct_tokenize(abstract)
pos_tag = nltk.pos_tag(sent)
nes = nltk.ne_chunk(pos_tag)
places = []
for ne in nes:
if type(ne) is nltk.tree.Tree:
if (ne.label() == 'GPE'):
places.append(u' '.join([i[0] for i in ne.leaves()]))
if len(places) == 0:
places.append("N/A")
Die erzielten Ergebnisse sind:
['Thyroid', 'Australian', 'Caucasian', 'Graves']
Einige sind Nationalitäten, aber andere sind nur Substantive.
Also, was mache ich falsch oder gibt es eine andere Möglichkeit, solche Informationen zu extrahieren?
Es ist nichts falsch mit dir getan hat. Sie haben Entity Extraction durchgeführt und dann die Entity Chunks genommen und in ihnen nach GPE Label gesucht. Der Grund, warum Sie nicht mit NLTK-Ergebnissen zufrieden sind, liegt darin, dass NLTK generell eine schlechte Leistung bezüglich der Klassifizierung von Entitäten ** aufweist. Es gibt Nachschlagetabellen für GPEs. Sie sind ziemlich umfassend und sehr effizient. Verwenden Sie sie, anstatt sich auf NLTK zu verlassen. –
Vielen Dank, können Sie mir ein Beispiel für diese Nachschlagetabellen geben ... – user6453258