Smart Calculator with NLP

 Smart Calculator with NLP 

1. Introduction

A Smart Calculator with NLP interprets natural language queries to perform mathematical operations. This project combines basic Natural Language Processing (NLP) techniques with Python's computation capabilities to create a calculator that understands user queries in plain language.

2. Prerequisites

• Python: Install Python 3.x from the official Python website.
• Required Libraries:
  - nltk: Install using pip install nltk
  - sympy: Install using pip install sympy
  - num2words (optional): Install using pip install num2words (for word-to-number conversion)
• Basic knowledge of Python programming and Natural Language Processing.

3. Project Setup

1. Create a Project Directory:

- Name your project folder, e.g., `SmartCalculator`.
- Inside this folder, create a Python script file (`smart_calculator.py`).

2. Install Required Libraries:

Ensure nltk, sympy, and num2words are installed using `pip`.

4. Writing the Code

Below is the Python code for the Smart Calculator:


import nltk
from sympy import sympify
from num2words import num2words
from word2number import w2n

# Ensure nltk corpus is downloaded
nltk.download('punkt')

# Function to process and evaluate natural language math queries
def evaluate_expression(query):
    try:
        # Tokenize and preprocess the input query
        tokens = nltk.word_tokenize(query.lower())
        numbers = {"zero": 0, "one": 1, "two": 2, "three": 3, "four": 4,
                   "five": 5, "six": 6, "seven": 7, "eight": 8, "nine": 9}
       
        processed_query = " ".join(str(numbers[word]) if word in numbers else word for word in tokens)
       
        # Parse and compute the expression
        result = sympify(processed_query)
        return result
    except Exception as e:
        return f"Error interpreting the query: {str(e)}"

# Main loop for user input
if __name__ == "__main__":
    print("Welcome to the Smart Calculator!")
    print("Type 'exit' to quit.")
    while True:
        user_query = input("Enter your math query: ")
        if user_query.lower() == 'exit':
            break
        print("Result:", evaluate_expression(user_query))
   

5. Key Components

• Tokenization: Breaks the query into smaller parts (tokens) for easier processing.
• Word-to-Number Conversion: Converts numbers in word form (e.g., 'two') into digits.
• SymPy: A symbolic mathematics library to parse and evaluate mathematical expressions.

6. Testing

1. Run the script:

   python smart_calculator.py

2. Enter natural language math queries like:

   - 'What is two plus three?'
   - 'Multiply five by six.'

3. The program will return the computed result. Type 'exit' to quit.

7. Enhancements

• Add Support for Complex Operations: Include support for trigonometry, logarithms, etc.
• Voice Input: Integrate a speech-to-text module to accept spoken math queries.
• Error Handling: Enhance error messages for invalid inputs.

8. Troubleshooting

• Incorrect Results: Ensure the query uses proper syntax and supported operations.
• Module Not Found: Verify all required libraries are installed.
• Tokenization Issues: Ensure nltk corpus is downloaded correctly.

9. Conclusion

This project demonstrates how to use NLP to interpret natural language math queries. With added functionalities, it can evolve into a full-fledged voice-activated assistant or smart chatbot.