Voglio estrarre tutte le citazioni di nazionalità e nazionalità dal testo utilizzando nltk, ho usato il tagging POS per estrarre tutti i token etichettati GPE ma i risultati non erano soddisfacenti.Estrarre nazionalità e paesi dal testo
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")
I risultati ottenuti sono:
['Thyroid', 'Australian', 'Caucasian', 'Graves']
Alcuni sono le nazionalità, ma altri sono solo nomi.
Quindi cosa sto facendo male o c'è un altro modo per estrarre tali informazioni?
Non c'è niente di sbagliato in te. Hai eseguito l'estrazione dell'entità e poi hai preso i pezzi dell'entità e cercato l'etichetta GPE al loro interno. Il motivo per cui non sei soddisfatto dei risultati NLTK è perché NLTK ha generalmente ** prestazioni scadenti rispetto alle entità classificanti **. Sono disponibili tabelle di ricerca per GPE. Sono abbastanza complete e molto efficienti. Usali invece di fare affidamento su NLTK. –
Grazie, puoi darmi un esempio di quelle tabelle di ricerca ... – user6453258