/ / Algoritmo per la corrispondenza fuzzy di più frasi di parole in un paragrafo: database, stringa, algoritmo, ricerca, ricerca fuzzy

Algoritmo per Fuzzy Matching Frasi di parole multiple in un paragrafo - database, stringa, algoritmo, ricerca, fuzzy-search

Primo, non sto cercando l'attuale algoritmo di corrispondenza fuzzy. Stiamo usando sia il coefficiente di Dice che la distanza di Levenshtein. Sto cercando il modo più intelligente per utilizzare questi algoritmi.

L'obiettivo. il gol:

Sto cercando di rilevare i nomi delle città inparagrafo di testo, nell'ordine in cui compaiono. Abbiamo un elenco di circa 1 milione di nomi di località. Voglio cercare in un paragrafo di testo e rilevare quando una di queste posizioni è presente, quindi memorizzare quella città. I nomi delle posizioni possono essere una o più parole.

Paragrafo di esempio:

Ciao mamma! Sam e io stiamo pensando di inciampare sulla strada Canada nel il prossimo mese. Sappiamo che possiamo già stare a casa di John in Quebec Città. So che hai viaggiato molto in Canada, quindi volevo ottenere il vostro consiglio.

Come ho detto, avremmo iniziato a Quebec City, poi probabilmente ci saremmo diretti Miramichi prima di andare a Halifax. Dopo 2 giorni vogliamo andare a Cape Breton. Infine, vogliamo controllare Advocate Harbour vedere cose come il Baia di Fundy, Digby, e il Molo di Santa Elisabetta

Ci sentiamo presto!

risultati aspettati

  • Canada
  • città del Quebec
  • Canada
  • Miramichi
  • Halifax
  • Cape Breton
  • Advocate Harbour
  • Baia di Fundy
  • Digby
  • Molo di Santa Elisabetta

Il problema

Il mio ostacolo attuale è come rilevare i nomi delle posizioni con più parole. So di poter dividere il paragrafo in parole, quindi confrontarle con il mio elenco, come:

  1. Abbina la prima parola al mio elenco di nomi di località
  2. Se nessuna corrispondenza, corrispondenza sfocata (prima parola + seconda parola) con il mio elenco di nomi di località
  3. Se nessuna corrispondenza, corrispondenza sfocata (prima + seconda + terza parola) con il mio elenco di nomi di località
  4. ...eccetera

Questo è il mio approccio attuale, ma è incredibilmente lento e inefficiente. C'è un modo intelligente in cui posso realizzare ciò che cerco?

risposte:

1 per risposta № 1

Penso che qualche algoritmo di corrispondenza delle stringhe funzioni perfettamente per te,

Ecco un elenco per loro: Algoritmi di corrispondenza delle stringhe

Nel tuo caso, penso che tu abbia bisogno di più stringhe di pattern corrispondenti a una, come Algoritmo Aho – Corasick