9

Sto cercando di analizzare titoli di prodotti non strutturati come "Canon D1000 4MP Camera 2X Zoom LCD" in dati strutturati come {brand: canon, model number: d1000, lens: 4MP zoom: 2X, display type: LCD}.Come analizzare titoli di prodotto (non strutturati) in dati strutturati?

Finora ho:

  1. stopwords rimosso e pulito fino (rimuovere i caratteri come -;:/)
  2. creazione di token lunghe stringhe in parole.

Qualsiasi tecnica/libreria/metodo/algoritmo sarebbe molto apprezzata!

MODIFICA: non esiste euristica per i titoli dei prodotti. Un venditore può inserire qualsiasi cosa come come titolo. Ad esempio: 'Canon D1000' può essere solo il titolo. Inoltre, questo esercizio non è solo per i set di dati della fotocamera, il titolo può essere di qualsiasi prodotto.

+0

Avete dati di allenamento? Dire specifiche del prodotto per 1000 prodotti? – Jirka

+0

Ho molti dati di allenamento. Devo eseguire questo per 100 milioni di articoli, ma in questo momento sto cercando di costruire un prototipo con ~ 10.000 prodotti relativi alle videocamere. – stealthspy

+1

Sto cercando di risolvere lo stesso problema. Ho ~ 50K prodotti, tutti non strutturati, nessun dato di allenamento. Il primo passo per me è trovare i dati per la formazione, ovvero prodotti con attributi definiti: marca, modello, ecc. I prodotti appartengono all'elettronica (telefoni, laptop, fotocamere). Qualche suggerimento dove trovare prodotti con attributi? – dzeno

risposta

6

Dato che ci sono molti dati di allenamento (presumo che tu abbia molte coppie titolo + specifiche json strutturate), proverei ad allenare uno Named Entity Recognizer.

Ad esempio, è possibile addestrare lo Stanford NER. Vedi questo FAQ entry spiegando come farlo. Ovviamente, dovrai armeggiare con i parametri poiché i titoli dei prodotti non sono esattamente frasi.

È necessario preparare i dati di allenamento, ma non dovrebbe essere così difficile. Hai bisogno di due colonne, parola e risposta e puoi aggiungere la colonna tag (ma non sono sicuro di quale sia l'accuratezza del tagger POS standard dato che è un testo piuttosto non tipico). Vorrei semplicemente estrarre il valore della colonna della risposta dalla specifica json associata, ci sarà un po 'di ambiguità, ma penso che sarà abbastanza raro da poterlo ignorare.

+0

Grazie! Lo esaminerò. – stealthspy

1

Se si ottengono solo titoli (come prodotti Amazon), è possibile visualizzarli come una frase e considerare l'etichettatura sequenziale.

A seconda che gli attributi sono date o sconosciuto (attributi sono come marca, modello ecc), ci sono diverse questioni qui:

1: Se questo è ciò che dato allora il problema è "facile" e si può usare qualsiasi metodo di "etichettatura sequenziale" per risolvere il problema. I metodi includono CRF (campi casuali condizionali) e Modelli Markov (HMM, MEMM, ecc.)

2: In caso contrario, è necessario estrarre le coppie (attributo, valore) allo stesso modo dell'analisi (analisi delle dipendenze, analisi completa) . Ma mi chiedo se questo sia fattibile dato che c'è davvero poca conoscenza degli attributi in anticipo. Un'altra possibilità è che, date molte informazioni esterne (sia le recensioni che le descrizioni dei prodotti), è possibile determinare quegli attributi e quindi estrarre le coppie dai titoli. Ex. trovi molte correlazioni tra "brand" e "canon" nelle recensioni, poi scopri la parola "canon" dal titolo con la videocamera da qualche parte, sai che questo è un valore per "marca".

+0

Penso di dover dire che non c'è euristica per il titolo del prodotto. Come funzionerebbe l'etichettatura sequenziale in questo caso? Nulla impedisce al venditore di inserire "D1000 4MP Camera Canon 2X LCD Zoom" – stealthspy

+2

quindi questo è un problema molto più difficile (vedi il caso due). La valutazione/descrizione di leva sarebbe d'aiuto. Altrimenti, se lavori solo nei prodotti per fotocamere (i dati non sono sparsi), probabilmente l'etichetta sequenziale senza supervisione può aiutare (HMM), ma puoi sapere che solo "canon" e "nikon" hanno lo stesso attributo, ma è ancora difficile da nominare (da dove "marca" proviene?) – dragonxlwang

0

Potresti avere più successo con una rete neurale per analizzare questo testo libero, ma fallirai con l'analisi del testo in chiaro, perché molte delle parole hanno bisogno di un contesto che non hai.

Tuttavia, a seconda del livello di precisione che si desidera raggiungere, è possibile trovare una soluzione parziale (che richiede quindi un post trattamento umano). O forzare almeno una struttura minima sull'input (come i nomi dei prodotti devono sempre seguire un determinato schema). In questo modo si ha un inizio molto migliore dal momento che è possibile identificare meglio il prodotto che dovrebbe fornire sufficienti informazioni di contesto per comprendere l'input rimanente.

Non c'è sicuramente una soluzione al 100% possibile (nemmeno con una rete neurale), immagino.

2

Accetto che non esiste un metodo di successo del 100%. Un possibile approccio sarebbe quello di addestrare un NER personalizzato (riconoscimento di entità nominate) con alcuni dati annotati manualmente. Le etichette sarebbero: MARCA/MODELLO/TIPO. Anche un modo comune per filtrare i nomi dei modelli/marchi è quello di utilizzare un dizionario. Marchi/modelli di solito non sono parole del dizionario.

3

Avendo sviluppato un analizzatore commerciale di questo tipo, posso dirti che non esiste una soluzione facile per questo problema. Ma ci sono scorciatoie multiple, specialmente se il tuo dominio è limitato a fotocamere/elettronica.

In primo luogo, è necessario esaminare più siti. Molti hanno la marca del prodotto annotata nella pagina (annotazioni html appropriate, caratteri in grassetto, maiuscole all'inizio del nome). Alcuni siti hanno pagine intere con selettori di marchi a scopo di ricerca. In questo modo puoi creare un buon dizionario di avviamento dei marchi. Lo stesso con i nomi delle linee di prodotti e persino con i modelli. I modelli alfanumerici possono essere estratti alla rinfusa da espressioni regolari e filtrati piuttosto rapidamente.

Ci sono molti altri trucchi, ma cercherò di essere breve. Solo un consiglio qui: c'è sempre un compromesso tra lavoro manuale e algoritmi. Ricorda sempre che entrambi gli approcci possono essere mescolati ed entrambi hanno curve di ritorno sull'investimento, che le persone tendono a dimenticare. Se il tuo obiettivo non è quello di creare un algoritmo automatico per estrarre marche e modelli di prodotto, questo problema dovrebbe avere un budget limitato nel tuo piano. È possibile creare realisticamente un dizionario di 1000 marchi in un giorno, e per prestazioni decenti sulla fonte di dati noti di beni elettronici (non stiamo parlando di Amazon qui o siamo?) Un dizionario di 4000 marchi può essere tutto ciò che serve per il tuo lavoro. Quindi fai i conti prima di investire settimane nell'ultima rete neurale denominata rilevatore di entità.

Problemi correlati