Skip to content

Cosine Similarity Algorithm | Machine Learning #11537

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 10 commits into from
Closed

Cosine Similarity Algorithm | Machine Learning #11537

wants to merge 10 commits into from

Conversation

Arko-Sengupta
Copy link

Cosine Similarity Algorithm

Overview

Introduces a New Implementation of the Cosine Similarity Algorithm in the Cosine_Similarity class. Cosine Similarity is a widely used metric in Natural Language Processing and Information retrieval to measure the similarity between two texts based on their Vector Representations.

Key Features

  • Vector Representation: Utilizes SpaCy's pre-trained Word Embeddings to convert text into Vectors.
  • Tokenization: Breaks down input text into lowercased tokens, excluding punctuation.
  • Vectorization: Converts tokens into their corresponding vectors using SpaCy's embeddings.
  • Mean Vector Calculation: Computes the Mean Vector for a set of Word Vectors to represent the overall text.
  • Cosine Similarity Calculation: Measures the cosine of the angle between two vectors, providing a Similarity Score ranging from -1 to 1.
  • Cosine Similarity Percentage: Outputs the similarity score as a percentage, facilitating easier interpretation.

Mathematical Foundation

  • Dot Product: Measures the Degree of Alignment between two Vectors.

  • Magnitude (Norm): Computes the length of a Vector.

  • Cosine Similarity Formula:

     Cosine Similarity = (Dot Product) / (Magnitude_1 * Magnitude_2)
    

    where the result is normalized to lie between -1 and 1, with 1 indicating identical vectors, 0 indicating orthogonal vectors, and -1 indicating completely dissimilar vectors.

Usage

The Cosine_Similarity class provides methods to Tokenize, Vectorize, and calculate the Cosine Similarity between two pieces of text. It includes:

  • Tokenize(text): Tokenizes the input text into lowercase tokens.
  • Vectorize(tokens): Converts tokens into vector representations.
  • Mean_Vector(vectors): Computes the average vector of a list of vectors.
  • Dot_Product(vector1, vector2): Calculates the dot product of two vectors.
  • Magnitude(vector): Computes the magnitude of a vector.
  • Cosine_Similarity(vector1, vector2): Computes the cosine similarity between two vectors.
  • Cosine_Similarity_Percentage(text1, text2): Calculates the similarity percentage between two texts.

Error Handling

Robust Error Handling is implemented for all operations to ensure reliability. Any issues encountered during tokenization, vectorization, or similarity calculations are logged and raised appropriately.

Benefits

  • Provides an effective method for comparing textual content.
  • Leverages pre-trained embeddings for accurate and efficient similarity measurement.
  • Can be used in various applications including document similarity, search relevance, and recommendation systems.

@algorithms-keeper
Copy link

Closing this pull request as invalid

@Arko-Sengupta, this pull request is being closed as none of the checkboxes have been marked. It is important that you go through the checklist and mark the ones relevant to this pull request. Please read the Contributing guidelines.

If you're facing any problem on how to mark a checkbox, please read the following instructions:

  • Read a point one at a time and think if it is relevant to the pull request or not.
  • If it is, then mark it by putting a x between the square bracket like so: [x]

NOTE: Only [x] is supported so if you have put any other letter or symbol between the brackets, that will be marked as invalid. If that is the case then please open a new pull request with the appropriate changes.

@algorithms-keeper algorithms-keeper bot closed this Sep 3, 2024
@algorithms-keeper algorithms-keeper bot added the awaiting reviews This PR is ready to be reviewed label Sep 3, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
awaiting reviews This PR is ready to be reviewed invalid
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant