2015-08-26 12 views
9

Attualmente sto lavorando su un progetto di elaborazione del linguaggio naturale in cui ho bisogno di convertire la sezione bibliografica non strutturata (che è alla fine dell'articolo di ricerca) a metadati strutturati come "Anno", "Autore ", "Journal", "ID Volume", "Numero di pagina", "Titolo", eccElaborazione del linguaggio naturale - Conversione di bibliografia non strutturata in metadati strutturati


Ad esempio: ingresso

McCallum, A.; Nigam, K.; and Ungar, L. H. (2000). Efficient clustering of high-dimensional data sets with application to reference matching. In Knowledge Discovery and Data Mining, 169–178 

uscita prevista:

<Author> McCallum, A.</Author> <Author>Nigam, K.</Author> <Author>Ungar, L. H.</Author> 
<Year> 2000 </Year> 
<Title>Efficient clustering of high-dimensional data sets with application to reference matching <Title> and so on 

Strumento utilizzato: CRFsuite


Data-set: Questo contiene 12000 riferimenti

  1. Contiene titolo ufficiale,
  2. contiene parole del titolo dell'articolo,
  3. contiene i nomi di localizzazione ,

Ciascuna parola in data linea considerata come token e per ogni token derivo seguenti caratteristiche

  1. BOR all'inizio della linea,
  2. EOR per fine
  3. digitFeature: se segno è la cifra
  4. Anno: se il token è in formato anno come 19 ** e 20 **
  5. disponibile nel set di dati corrente,

Dall'alto strumento e data-set ho ottenuto solo il 63,7% di precisione. La precisione è molto inferiore per "Titolo" e buono per "Anno" e "Volume".

Domande:

  1. Posso disegnare qualsiasi funzionalità aggiuntive?
  2. Posso utilizzare qualsiasi altro strumento?
+3

potrebbe essere necessario dare una serie completa di esempi di stringhe per mostrare la varietà di modi in cui le voci della bibliografia sono formattate.Un esempio va bene se ogni voce ha esattamente lo stesso formato, ma ho il sospetto che stiate vedendo una pletora di strutture diverse in queste voci bibliografiche, quindi una serie più completa di esempi aiuterà le persone a suggerire modi per estrarre i dati desiderati. – Bobulous

risposta

2

Proporrei di basare la soluzione su approcci esistenti. Date un'occhiata per esempio a this paper

Park, Sung Hee, Roger W. Ehrich e Edward A. Fox. "Un approccio ibrido a due fasi per la rappresentazione canonica indipendente dalla disciplina estrazione dai riferimenti." Atti del 12 ° convegno ACM/IEEE-CS sulle biblioteche digitali. ACM, 2012.

Le sezioni 3.2 e 4.2 forniscono descrizioni di dozzine di funzionalità.

Per quanto riguarda le implementazioni CRF, ci sono altri strumenti come this one, ma non penso che sia una fonte di bassa precisione.

2

Mentre in generale sono d'accordo con Nikita sul fatto che qualsiasi set di strumenti CRF specifico non è la fonte della bassa precisione e che si tratta di un problema di approccio alle soluzioni. Non sono sicuro che l'approccio a due fasi, mentre molto accurato ed efficace quando completo, dimostrato da Park, et al. è un approccio pratico al tuo problema.

Per uno, i "due stadi" a cui si fa riferimento nella carta sono un SVM/CRF accoppiato che non è così facile da configurare al volo se questa non è la principale area di studio. Ognuno comporta l'addestramento su dati etichettati e un certo grado di ottimizzazione.

Due, è improbabile che il set di dati effettivo (in base alla descrizione sopra riportata) sia strutturato in modo differenziato in quanto questa particolare soluzione è stata progettata per far fronte mantenendo ancora un'elevata precisione. In tal caso questo livello di apprendimento supervisionato non è necessario.

Se posso proporre una soluzione specifica per il dominio con molte delle stesse funzionalità che dovrebbero essere molto più facili da implementare in qualunque strumento tu stia utilizzando, vorrei provare un approccio semantico (limitato), che è semi-supervisionato, specificatamente eccezione (errore) consigliato.

Invece di una frase inglese come la tua molecola di dati, hai una voce bibliografica. Le parti di questa molecola che devono essere presenti sono la parte dell'autore, la parte del titolo, la parte della data e la parte dell'editore, ma potrebbero esserci anche altre parti di dati (numero di pagina, ID del volume, ecc.).

Poiché alcune di queste parti possono essere annidate (ad esempio pagina # nella parte dell'editore) l'una dentro l'altra o in un ordine di arrangiamento vario, ma comunque valide dal punto di vista operativo, è un buon indicatore per l'uso di alberi semantici.

Inoltre, il fatto che ogni area, sebbene variabile, ha caratteristiche uniche: parte dell'autore (i nomi personali sono formati per esempio Blow, J. O James, e così via, ecc.); la parte del titolo (citata o in corsivo ha una struttura di frasi standard); data parte (formati data, racchiusa tra(), ecc.), significa che è necessaria una formazione generale inferiore rispetto all'analisi tokenizzata e non strutturata. Alla fine questo meno apprendimento per il tuo programma.

Inoltre ci sono relazioni strutturali che possono essere apprese per migliorare la precisione per esempio: parte di data (spesso alla fine o sezioni chiave di separazione), parte dell'autore (spesso all'inizio, o dopo il titolo), ecc. è inoltre supportato dal fatto che molte associazioni ed editori hanno il loro modo di formattare tali riferimenti, questi possono essere appresi facilmente per relazione senza molti dati di addestramento.

Quindi, per riassumere segmentando le parti e facendo apprendimento strutturato, si riduce il pattern matching in ogni sotto-parte e l'apprendimento è relegato a pattern relazionali, che sono più affidabili, poiché è così che costruiamo tali voci come gli esseri umani.

Inoltre c'è un sacco di strumenti per questo tipo di dominio specifico di apprendimento semantico

http://www.semantic-measures-library.org/ http://wiki.opensemanticframework.org/index.php/Ontology_Tools

Speranza che aiuta :)

Problemi correlati