Il miglior algoritmo pratico per la somiglianza delle frasi


18

Ho due frasi, S1 e S2, entrambe con un conteggio delle parole (di solito) inferiore a 15.

Quali sono gli algoritmi più utili e di successo (machine learning), che sono probabilmente facili da implementare (la rete neurale è ok, a meno che l'architettura non sia complicata come Google Inception ecc.).

Sto cercando un algoritmo che funzioni bene senza dedicare troppo tempo. Ci sono algoritmi che hai trovato di successo e facili da usare?

Questo può, ma non deve rientrare nella categoria del clustering. Il mio background proviene dall'apprendimento automatico, quindi eventuali suggerimenti sono ben accetti :)


Cosa hai implementato? Sto anche affrontando lo stesso, devo trovare una soluzione per gli articoli relativi a "k" in un corpus che continua ad aggiornarsi.
Dileepa,

Risposte:


16

Cosine Somiglianza con Vector Space potresti essere la risposta: http://blog.christianperone.com/2013/09/machine-learning-cosine-similarity-for-vector-space-models-part-iii/

Oppure potresti calcolare l'autovettore di ogni frase. Ma il problema è, che cos'è la somiglianza?

"Questo è un albero", "Questo non è un albero"

Se vuoi controllare il significato semantico della frase avrai bisogno di un set di dati di wordvector. Con il set di dati di wordvector sarai in grado di controllare la relazione tra le parole. Esempio: (Re - Uomo + donna = Regina)

Siraj Raval ha un buon notebook in pitone per la creazione di set di dati di wordvector: https://github.com/llSourcell/word_vectors_game_of_thrones-LIVE


8

Un approccio che potresti provare è la media dei vettori di parole generati da algoritmi di incorporamento di parole (word2vec, glove, ecc.). Questi algoritmi creano un vettore per ogni parola e la somiglianza del coseno tra loro rappresenta la somiglianza semantica tra le parole. Nel caso dei vettori medi tra le frasi. Un buon punto di partenza per saperne di più su questi metodi è questo documento: How Well Embeddings Capture Significato . Discute alcuni metodi di incorporamento delle frasi. Ti suggerisco anche di esaminare l' apprendimento senza supervisione degli incorporamenti di frasi usando le funzioni n-Gram composizionali che gli autori sostengono che il loro approccio ha battuto metodi all'avanguardia. Inoltre forniscono il codice e alcune istruzioni per l'uso in questo repository github .



2

Dovresti dare un'occhiata a https://github.com/seatgeek/fuzzywuzzy#usage . fuzzywuzzy è una libreria fantastica per la corrispondenza stringa / testo che fornisce un numero compreso tra 0 e 100 in base a due frasi simili. Usa Levenshtein Distance per calcolare le differenze tra le sequenze in un pacchetto semplice da usare. Inoltre, dai un'occhiata a questo post sul blog per una spiegazione dettagliata di come fuzzywuzzy fa il lavoro. Questo blog è anche scritto dall'autore fuzzywuzzy


1

Questo blog ha la soluzione per la somiglianza del breve testo. Usano principalmente il modello di rete neurale BERT per trovare somiglianze tra le frasi. https://medium.com/@vimald8959/sentence-categorisation-short-text-similarity-61bb88fae15e


Ciao, benvenuto nello scambio di stack di Data Science! Quando si fa riferimento a una soluzione da un sito Web esterno, considerare di scrivere un riepilogo nella risposta. In effetti, questo sarà più facile da leggere e impedisce che la tua risposta diventi obsoleta se la pagina di destinazione cambia o il collegamento si interrompe.
Romain Reboulleau,

Bene, questa è davvero roba buona. Quindi usano sostanzialmente BERT? @RomainReboulleau ha sicuramente ragione!
DaveTheAl,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.