7

Ecco il problema: ho qualche migliaio di frammenti di testo piccoli, da poche parole a poche frasi: lo snippet più grande è circa 2k su disco. Voglio essere in grado di confrontare ciascuno con ciascuno, e calcolare un fattore di correlazione in modo che possa mostrare le informazioni relative agli utenti.Quali sono alcuni buoni metodi per trovare la "parentela" di due corpi di testo?

Quali sono alcuni buoni modi per farlo? Esistono algoritmi noti per fare ciò che sono utili, esistono soluzioni GPL, ecc.?

Non ho bisogno di questo per l'esecuzione in tempo reale, in quanto posso precalcolare tutto. Sono più interessato a ottenere buoni risultati rispetto al runtime.

Ho solo pensato di chiedere alla comunità di Stack Overflow prima di andare a scrivere le mie cose. Devono esserci persone là fuori che hanno trovato buone soluzioni a questo prima.

+1

Domanda molto sottintesa. Su quali basi consideri che due testi sono collegati tra loro? Argomenti comuni? Frasi ripetute? Lunghezza? Complessità? Frequenza delle lettere? –

risposta

2

ho mai usato, ma si potrebbe desiderare di guardare in Levenshtein distance

+0

Funziona bene in molti scenari –

+0

Levenshtein fornisce la distanza di modifica, non le differenze semantiche. – Bob

0

Questo book può essere rilevante.

Edit: ecco un correlate SO question

+0

Grazie. Information Retrieval è l'argomento generale, e questo libro ha probabilmente delle buone informazioni in esso. – Matt

0

Questo è abbastanza fattibile per testi di grandi dimensioni, tuttavia più difficile per i testi più piccoli.

ho fatto una volta come questo, e ha funzionato abbastanza bene:

  • filtro tutte le parole "generali" (come un, uno, il, in, ecc ...) (Filtri circa 10-30 % delle parole)
  • Contare le frequenze delle parole rimanenti, memorizzare la x superiore delle parole più frequenti, questi sono i tuoi argomenti.
  • Come passaggio aggiuntivo è possibile creare gruppi di 2/3/4 parole successive e confrontarle con i gruppi in altri testi. L'ho usato come misura per il plagerismo.
0

Vedere le note del corso di Manning e Raghavan su MinHashing e cercare elementi simili e uno C#(?) version. Credo che le tecniche derivino dalla ricerca di Ullman e Motwani.

0

algoritmi fonetici

L'articolo, Beyond SoundEx - Functions for Fuzzy Searching in MS SQL Server, mostra come installare e utilizzare la libreria SimMetrics in SQL Server.Questa libreria ti consente di trovare la somiglianza relativa tra stringhe e include numerosi algoritmi.

Ho finito per lo più usando Jaro Winkler per abbinare sui nomi. Ecco ulteriori informazioni su dove ho chiesto informazioni sui nomi corrispondenti su SO: Matching records based on Person Name

Alcuni algoritmi basati su Levenshtein Distance sono anche disponibili nella libreria SimMetric e potrebbero essere utili nella tua applicazione.

Problemi correlati