Skip to content

ri111rrr/Ai

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 

Repository files navigation

Building Ai course project

Project Title

Final project for the Building AI course

from flask import Flask, request, render_template_string, jsonify from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.metrics.pairwise import cosine_similarity import argparse

Load ideas from file

def load_ideas(path="ideas.txt"): with open(path, "r", encoding="utf-8") as f: ideas = [line.strip() for line in f if line.strip()] return ideas

Suggest function

def suggest(input_text, ideas, topk=5): corpus = ideas + [input_text] vect = TfidfVectorizer().fit_transform(corpus) sims = cosine_similarity(vect[-1], vect[:-1])[0] ranked_idx = sims.argsort()[::-1][:topk] return [(ideas[i], float(sims[i])) for i in ranked_idx]

Flask app

app = Flask(name)

HTML = ''' <!doctype html>

<title>AI Idea Generator</title> <style> body { font-family: Arial, sans-serif; margin: 40px; line-height: 1.6; } input[type=text] { width: 60%; padding: 8px; font-size: 16px; margin-right:10px; } input[type=submit] { padding: 8px 16px; font-size: 16px; } ol { margin-top: 20px; padding-left: 20px; } li { margin-bottom: 12px; word-wrap: break-word; max-width: 800px; } small { color: #555; } </style>

AI Idea Generator

Enter a description or keywords:
{% if suggestions %}

Suggestions:

    {% for s, score in suggestions %}
  1. {{ s }} ({{ "%.2f"|format(score) }})
  2. {% endfor %}
{% endif %}

You can also use the API via POST to /api/suggest with JSON {"text":"..."}

'''

@app.route("/", methods=["GET","POST"]) def index(): ideas = load_ideas() suggestions = None if request.method == "POST": text = request.form.get("text","") suggestions = suggest(text, ideas, topk=5) return render_template_string(HTML, suggestions=suggestions)

@app.route("/api/suggest", methods=["POST"]) def api_suggest(): data = request.get_json() or {} text = data.get("text","") ideas = load_ideas() suggestions = suggest(text, ideas, topk=5) return jsonify([{"idea":s,"score":sc} for s,sc in suggestions])

if name == "main": parser = argparse.ArgumentParser() parser.add_argument("--text", type=str, help="Run suggest on a given text and print results") args = parser.parse_args() if args.text: ideas = load_ideas() print(suggest(args.text, ideas, topk=5)) else: app.run(debug=True)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors