Supposons que j'ai 2 chaînes comme celle-ci.comment implémenter le coefficient de jaccard dans Java?
Query1: "Les idées de Mars"
Query2: "Ceaser mort en Mars"
Fonction (j) = (Query1 intersection Query2)/(Query1 union Query2)
Je cherche à la précision par rapport au nombre de jetons (mots), quelle que soit leur position.
Query1 intersection Query2 = 1 {Mars}
Query1 union QUERY2 = 6 {Des idées, des, Mars, Ceaser, est mort, dans}
Dans cette fonction de contexte (j) devrait revenir 1/6 .
Y at-il de toute façon que je peux trouver le nombre d'intersection et le nombre d'union de deux phrases? Pour un exemple, ici,
public double calculateSimilarity(String oneContent, String otherContent)
{
double numerator = intersection(oneContent,otherContet);
double denominator = union(oneContent,otherContet);
return denominator.size() > 0 ?
(double)numerator.size()/(double)denominator.size() : 0;
}
Est-ce une fonction disponible en Java pour obtenir le nombre d'intersection et le nombre d'union sans utiliser des bibliothèques externes comme Google goyave?
Notez que le coefficient Jaccard Index/Tanimoto n'a pas de définition unique. Il s'agit plutôt d'une méthode de mise en relation d'une intersection et d'une union avec un indice de précision, et son interprétation dépend donc de l'intersection particulière et des mesures d'union utilisées. Vous devez être spécifique à ce que vous recherchez, par ex. précision en termes de nombre de caractères communs en cas de traitement indépendant de la position, ou nombre de caractères en commun en fonction d'un alignement optimal (qui est alors soumis à l'algorithme d'alignement particulier utilisé). –
@TasosPapastylianou Je regarde la précision par rapport au nombre de jetons (mots), quelle que soit leur position. – Yash
Dans ce cas, tokenisez et triez par ordre alphabétique (en ignorant le cas ou non, jusqu'à vous) la concaténation des deux textes (ie ne gardant que des jetons uniques), puis faites deux tableaux en tenant compte du nombre de fois qu'un mot apparaît pour chaque individu texte. Votre interesection est la somme du minimum entre les deux tableaux sur tous les jetons, et votre union est la somme du maximum correspondant. –