Algoritmo di classificazione del prodotto - classificazione del testo - C # - suggerimenti dell'algoritmo

3

Bene gente. Infine, con l'aiuto della community di stackoverflow, ho raccolto 20 pagine di prodotti commerciali di siti Web di vendita con le seguenti funzionalità

Product URL
Product Price
Product Name
Product Category
Product Page Title
Product Page Description
Product Page Keywords

Ora con l'utilizzo di queste funzionalità dei prodotti devo classificarle. Cosa significa classificazione? Lascia che ti spieghi.

Ora come puoi immaginare ogni sito web elenca i prodotti a modo loro. Non c'è il formato. Quindi diciamo che iPhone 4 è venduto in 20 diversi siti web con 20 modi diversi. Quindi quello che ho bisogno di raggiungere è il raggruppamento di questi 20 pagina iphone in 20 diversi siti web. Quindi, quando la persona interroga il mio sito web con iphone 4 word, mostrerò 20 risultati. Fondamentalmente su oltre 500.000 url di prodotto ho bisogno di raggruppare ogni prodotto. Quindi diciamo che ci sono 15 gefore gtx 570 su questi 500k urls quindi ho bisogno di raggrupparli come lo stesso prodotto. Potete immaginarlo come prodotti google. Ma lo sto facendo nel mio paese che è la Turchia e Google non ha ricerca di prodotti per la Turchia.

In breve con l'utilizzo delle funzionalità sopra l'algoritmo che suggeriresti. Non voglio usare alcuna tecnica di allenamento se possibile. Tutto automatizzato.

Sto usando C # 4.0 WPF e i dati sono archiviati nel database MSSQL 2008 R2

    
posta MonsterMMORPG 09.02.2012 - 23:57
fonte

2 risposte

2

Non dovresti semplicemente invertire l'indicizzazione delle parole nei vari campi alla pagina? Come esempio semplicistico, suddividere ciascun nome prodotto (ad esempio, in base agli spazi) e normalizzare ogni parola chiave (ad esempio, in minuscolo, escludere la punteggiatura) e quindi associarlo all'URL o alla registrazione del prodotto. Cercare "iphone" ti darebbe quindi il risultato giusto. Hai persino un campo relativo alle parole chiave per la pagina di prodotto.

Il raggruppamento dei prodotti sarebbe solo una ricerca su una combinazione di parole chiave, come "iphone case".

Ottenere un tale sistema perfetto, naturalmente, può essere immensamente complesso, ma la logica di base sembra che si applicherebbe qui. Ad esempio, la tokenizzazione dei termini turchi potrebbe richiedere un trattamento speciale.

    
risposta data 10.02.2012 - 00:09
fonte
1

Mi rendo conto che funzioni come Decoratori dal motivo Decoratori. Cioè, ognuno potrebbe avvolgere un altro decoratore. Quindi, ogni oggetto reale avrà caratteristiche: FirstObject, FirstObject.envelopes, FirstObject.envelopes.envelopes, ... fino all'ultimo. Dovrai fare una funzione, che mostra per tutti i decoratori tutti gli interni. E la funzione che renderà dal tuo DB tale "MATRYOSHKA".

Ogni decoratore avrà i suoi campi specifici:

  1. nome della funzione
  2. Valore della funzione. Un elenco di possibili valori di funzionalità dovrebbe essere impostato come elenco statico in ogni classe Decorator.
  3. Dove verrebbe mostrato in quale pagina in quale formato. Questo mi renderebbe conto come una mappa di tipi di pagina come chiavi e valori = oggetti di un posizionamento di classe, includerà luogo e formato. Questi posizionamenti eseguiranno la visualizzazione reale della funzione nella pagina.
  4. Analizzerai anche altre pagine? Per qui è possibile impostare anche i luoghi in cui nelle pagine potrebbero essere trovate queste funzionalità. Ma questo è un punto molto difficile.
  5. Qui puoi mettere le dipendenze - ciò che i decoratori potrebbero racchiudere.
  6. Anche qui dovrebbe esserci un meccanismo per trasmettere informazioni importanti dai decoratori interni a quelli esterni. Ma questa è la parte dello standard del modello di progettazione.

L'altra variante - ogni oggetto è una lista di tali caratteristiche, solo quelle indipendenti. Ma questo è, IMHO, costruzione troppo dinamica per il tuo compito, ed è più difficile da controllare.

Questo è il modello più primitivo.

Per quanto riguarda quelli più elaborati, dovresti tenere conto dei sinonimi dei nomi delle funzionalità. Ciò significa che l'elenco di possibili valori di funzionalità cambierà in elenco di elenchi.

Il prossimo passo: alcune funzionalità potrebbero esistere separatamente o insieme come un'unica stringa. Ad esempio, GeForce o 590 o GeForce 590. Per la realizzazione di questo devi usare Congregator invece di Decorator.

Un altro passaggio: dovresti considerare le funzionalità rappresentate dai numeri (prezzo, data). È indipendente sui due passaggi precedenti. Invece di elenchi di valori possibili, il decoratore avrà una gamma di valori possibili. Il modello di ricerca verrà modificato in modo che l'impostazione dell'intervallo sia possibile.

Il prossimo passo indipendente - ordinare per caratteristiche. Avete tutte le caratteristiche ordinate includendo e tutti i valori sono ordinati per ordine negli elenchi di possibili valori. Questo è l'ordine naturale. Ma potresti cambiare l'ordine.

Quindi, due strumenti di potenza che dovresti fare: l'interfaccia utente del ricercatore e l'interfaccia utente del committente. IMHO, cerca di non eseguire la ricerca o ordinare per questi oggetti dal tuo codice, usa invece SQL. Gli oggetti dovrebbero solo rappresentarli, utilizzati per l'input e l'output e l'impostazione della definizione dell'interfaccia utente di ricerca / ordinamento.

Naturalmente, potrebbe essere ulteriormente elaborato, ma sarebbe meglio realizzare il compito passo dopo passo.

    
risposta data 23.02.2012 - 22:48
fonte

Leggi altre domande sui tag