6

Sto cercando di acquisire misurazioni utilizzando Stanford CoreNLP. (Se è possibile suggerire un estrattore diverso, va bene anche questo.)Come può Stanford CoreNLP denominare Entity Recognition acquisire misurazioni come 5 pollici, 5 ", 5 pollici, 5 in

per esempio, voglio trovare 15kg, 15 kg, 15,0 kg, 15 kg, 15 libbre, 15 chili, ecc Ma tra CoreNLPs regole di estrazione, I don ne vedo uno per le misure.

Naturalmente, posso farlo con regex puri, ma i toolkit possono essere eseguiti più rapidamente e offrono l'opportunità di eseguire il chunk a un livello superiore, ad es. per trattare gb e gigabyte insieme, e RAM e memoria come blocchi - anche in assenza di analisi sintattica - come costruire unità più grandi come 128 gb RAM e 8 gigabyte di memoria.

Voglio un estrattore per questo che è basato su regole, non basato su apprendimento macchina), ma non ne vedo uno come parte di RegexNer o altrove. Come faccio a fare questo?

IBM Named Entity Extraction può fare questo. Le regex vengono eseguite in modo efficiente anziché passare il testo attraverso ciascuna di esse. E le regex sono raggruppate per esprimere entità significative, come per esempio quella che unisce tutte le unità di misura in un singolo concetto.

risposta

5

Non credo che esista un sistema basato su regole per questo compito particolare. Tuttavia, non dovrebbe essere difficile da realizzare con TokensregexNER.Ad esempio, una mappatura simile:

[{ner:NUMBER}]+ /(k|m|g|t)b/ memory? MEMORY 
[{ner:NUMBER}]+ /"|''|in(ches)?/  LENGTH 
... 

Si potrebbe provare a utilizzare la vaniglia TokensRegex pure, e poi semplicemente estrarre il relativo valore con un gruppo di cattura:

(?$group_name [{ner:NUMBER}]+) /(k|m|g|t)b/ memory? 
+0

Sembra che questa sia una funzionalità speciale di IBM Named Entity Extraction. I regex sono ovviamente possibili in qualsiasi sistema, ma IBM NEE può eseguire schemi molto più efficaci; e anche trattare i concetti correlati insieme. (Ad esempio, i codici postali prendono dozzine di moduli in tutto il mondo ma sono tutti "codici postali" ai fini dei concetti di livello superiore.) –

+0

Questo è certamente vero: IBM ha un motore molto più veloce per questo tipo di corrispondenza regex. Tuttavia, gli esempi sopra sono da CoreNLP. TokensRegex (incluso in CoreNLP) è generalmente abbastanza veloce per la maggior parte delle applicazioni; in particolare se (1) i pattern sono semplici (nessuna corrispondenza di lunghezza variabile) o (2) ce ne sono abbastanza pochi. –

+0

Se stai cercando una soluzione basata principalmente su espressioni regolari, puoi anche consultare [JAPE] di GATE (https://gate.ac.uk/releases/gate-5.0-build3244-ALL/doc/tao/splitch7). html) ambiente di espressioni regolari. Non sono sicuro che sia più veloce del nostro, ma ha più supporto per la GUI. –

2

È possibile creare i propri dati di allenamento ed etichettare le misure richieste di conseguenza.

Per esempio, se si dispone di una frase come Jack weighs about 50 kgs

Così il modello classificherà il vostro input come:

Jack, PERSONA
pesa, O
circa, O
50, MES
kg, MES

Dove MES indica le misurazioni.

Ho recentemente creato i dati di allenamento per il Stanford NER tagger per il mio problema personalizzato e ne ho creato un modello.

Credo che per Stanford CoreNLP NER Inoltre è possibile fare la stessa cosa

Questo può essere un approccio machine learning-based piuttosto che un approccio rule-based

+0

Grazie, Rohan. Un approccio basato su ML può essere prezioso. Ma chiaramente alcune regole ci daranno molto valore qui. Ci sono troppe espressioni regolari per una soluzione ad hoc senza CoreNLP per essere semplici o performanti, ma mi piacerebbe che uno strumento di estrazione di entità potesse permettermi di raggruppare queste espressioni regolari in un modo che lo rendesse semplice e performante. –

+0

Sembra che questa sia una funzionalità speciale di IBM Named Entity Extraction. I regex sono ovviamente possibili in qualsiasi sistema, ma IBM NEE può eseguire schemi molto più efficaci; e anche trattare i concetti correlati insieme. (Ad esempio, i codici postali prendono dozzine di moduli in tutto il mondo ma sono tutti "codici postali" ai fini dei concetti di livello superiore.) –

+0

Ya è possibile. Richiede molte ricerche per questo problema. :) –