Je cherche à travailler sur un projet NLP, dans n'importe quel langage de programmation (bien que Python soit ma préférence).
Je veux prendre deux documents et déterminer à quel point ils sont similaires.
Je cherche à travailler sur un projet NLP, dans n'importe quel langage de programmation (bien que Python soit ma préférence).
Je veux prendre deux documents et déterminer à quel point ils sont similaires.
Pour la similarité syntaxique Il peut y avoir 3 façons simples de détecter la similarité.
Pour la similarité sémantique On peut utiliser l'incorporation BERT et essayer différentes stratégies de regroupement de mots pour obtenir l'incorporation du document, puis appliquer la similarité cosinus sur l'incorporation du document.
Une méthodologie avancée peut utiliser BERT SCORE pour obtenir la similarité.
Lien vers le document de recherche : https://arxiv.org/abs/1904.09675
Si vous êtes plus intéressé par la mesure de la similarité sémantique de deux morceaux de texte, je vous suggère de jeter un coup d'oeil à ce projet gitlab . Vous pouvez l'exécuter en tant que serveur, il y a également un modèle préconstruit que vous pouvez utiliser facilement pour mesurer la similarité de deux morceaux de texte ; même s'il est principalement formé pour mesurer la similarité de deux phrases, vous pouvez toujours l'utiliser dans votre cas.il est écrit en java mais vous pouvez l'exécuter comme un service RESTful.
Une autre option est également Similitude DKPro qui est une bibliothèque contenant divers algorithmes pour mesurer la similarité des textes. Cependant, elle est également écrite en java.
exemple de code :
// this similarity measure is defined in the dkpro.similarity.algorithms.lexical-asl package
// you need to add that to your .pom to make that example work
// there are some examples that should work out of the box in dkpro.similarity.example-gpl
TextSimilarityMeasure measure = new WordNGramJaccardMeasure(3); // Use word trigrams
String[] tokens1 = "This is a short example text .".split(" ");
String[] tokens2 = "A short example text could look like that .".split(" ");
double score = measure.getSimilarity(tokens1, tokens2);
System.out.println("Similarity: " + score);
Vous pouvez essayer ce service en ligne pour la similarité des documents en cosinus. http://www.scurtu.it/documentSimilarity.html
import urllib,urllib2
import json
API_URL="http://www.scurtu.it/apis/documentSimilarity"
inputDict={}
inputDict['doc1']='Document with some text'
inputDict['doc2']='Other document with some text'
params = urllib.urlencode(inputDict)
f = urllib2.urlopen(API_URL, params)
response= f.read()
responseObject=json.loads(response)
print responseObject
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.