File size: 10,072 Bytes
3c8e99b
 
c02e09b
 
 
125237a
 
3c8e99b
c02e09b
125237a
 
c02e09b
3c8e99b
c02e09b
 
f3afefa
c02e09b
f3afefa
 
 
 
 
125237a
f3afefa
 
 
 
 
 
 
 
 
125237a
f3afefa
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c02e09b
 
 
 
 
 
b8db557
026dc36
125237a
026dc36
125237a
026dc36
125237a
 
 
 
 
 
 
 
026dc36
125237a
3c8e99b
125237a
 
3c8e99b
 
 
 
 
 
 
 
 
 
 
 
 
 
b221737
3c8e99b
 
125237a
 
c02e09b
 
 
 
 
 
 
 
125237a
 
 
 
de77ff5
3c8e99b
125237a
 
026dc36
125237a
026dc36
125237a
 
 
 
3c8e99b
 
 
 
125237a
 
 
 
 
c02e09b
 
 
125237a
 
3c8e99b
 
c02e09b
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
# app.py – Now includes DuckDuckGo, arXiv, and Semantic Scholar crawling

from sentence_transformers import SentenceTransformer
from sklearn.metrics.pairwise import cosine_similarity
import gradio as gr
import arxiv
from semanticscholar import SemanticScholar
from duckduckgo_search import DDGS

# Load sentence transformer
model = SentenceTransformer('all-MiniLM-L6-v2')

# Math domain definitions (trimmed for brevity)
DOMAINS = {
    "Real Analysis": "Studies properties of real-valued functions, sequences, limits, continuity, differentiation, Riemann/ Lebesgue integration, and convergence in the real number system.",
    "Complex Analysis": "Explores analytic functions of complex variables, contour integration, conformal mappings, and singularity theory.",
    "Functional Analysis": "Deals with infinite-dimensional vector spaces, Banach and Hilbert spaces, linear operators, duality, and spectral theory in the context of functional spaces.",
    "Measure Theory": "Studies sigma-algebras, measures, measurable functions, and integrals, forming the foundation for modern probability and real analysis.",
    "Fourier and Harmonic Analysis": "Analyzes functions via decompositions into sines, cosines, or general orthogonal bases, often involving Fourier series, Fourier transforms, and convolution techniques.",
    "Calculus of Variations": "Optimizes functionals over infinite-dimensional spaces, leading to Euler-Lagrange equations and applications in physics and control theory.",
    "Metric Geometry": "Explores geometric properties of metric spaces and the behavior of functions and sequences under various notions of distance.",
    "Ordinary Differential Equations (ODEs)": "Involves differential equations with functions of a single variable, their qualitative behavior, existence, uniqueness, and methods of solving them.",
    "Partial Differential Equations (PDEs)": "Deals with multivariable functions involving partial derivatives, including wave, heat, and Laplace equations.",
    "Dynamical Systems": "Studies evolution of systems over time using discrete or continuous-time equations, stability theory, phase portraits, and attractors.",
    "Linear Algebra": "Focuses on vector spaces, linear transformations, eigenvalues, diagonalization, and matrices.",
    "Abstract Algebra": "General study of algebraic structures such as groups, rings, fields, and modules.",
    "Group Theory": "Investigates algebraic structures with a single binary operation satisfying group axioms, including symmetry groups and applications.",
    "Ring and Module Theory": "Extends group theory to rings (two operations) and modules (generalized vector spaces).",
    "Field Theory": "Studies field extensions, algebraic and transcendental elements, and classical constructions.",
    "Galois Theory": "Connects field theory and group theory to solve polynomial equations and understand solvability.",
    "Algebraic Number Theory": "Applies tools from abstract algebra to study integers, Diophantine equations, and number fields.",
    "Representation Theory": "Studies abstract algebraic structures by representing their elements as linear transformations of vector spaces.",
    "Algebraic Geometry": "Examines solutions to polynomial equations using geometric and algebraic techniques like varieties, schemes, and morphisms.",
    "Differential Geometry": "Studies geometric structures on smooth manifolds, curvature, geodesics, and applications in general relativity.",
    "Topology": "Analyzes qualitative spatial properties preserved under continuous deformations, including homeomorphism, compactness, and connectedness.",
    "Geometric Topology": "Explores topological manifolds and their classification, knot theory, and low-dimensional topology.",
    "Symplectic Geometry": "Studies geometry arising from Hamiltonian systems and phase space, central to classical mechanics.",
    "Combinatorics": "Covers enumeration, existence, construction, and optimization of discrete structures.",
    "Graph Theory": "Deals with the study of graphs, networks, trees, connectivity, and coloring problems.",
    "Discrete Geometry": "Focuses on geometric objects and combinatorial properties in finite settings, such as polytopes and tilings.",
    "Set Theory": "Studies sets, cardinality, ordinals, ZFC axioms, and independence results.",
    "Mathematical Logic": "Includes propositional logic, predicate logic, proof theory, model theory, and recursion theory.",
    "Category Theory": "Provides a high-level, structural framework to relate different mathematical systems through morphisms and objects.",
    "Probability Theory": "Mathematical foundation for randomness, including random variables, distributions, expectation, and stochastic processes.",
    "Mathematical Statistics": "Theory behind estimation, hypothesis testing, confidence intervals, and likelihood inference.",
    "Stochastic Processes": "Studies processes that evolve with randomness over time, like Markov chains and Brownian motion.",
    "Information Theory": "Analyzes data transmission, entropy, coding theory, and information content in probabilistic settings.",
    "Numerical Analysis": "Designs and analyzes algorithms to approximate solutions of mathematical problems including root-finding, integration, and differential equations.",
    "Optimization": "Studies finding best outcomes under constraints, including convex optimization, linear programming, and integer programming.",
    "Operations Research": "Applies optimization, simulation, and probabilistic modeling to decision-making problems in logistics, finance, and industry.",
    "Control Theory": "Mathematically models and regulates dynamic systems through feedback and optimal control strategies.",
    "Computational Mathematics": "Applies algorithmic and numerical techniques to solve mathematical problems on computers.",
    "Game Theory": "Analyzes strategic interaction among rational agents using payoff matrices and equilibrium concepts.",
    "Machine Learning Theory": "Explores the mathematical foundation of algorithms that learn from data, covering generalization, VC dimension, and convergence.",
    "Spectral Theory": "Studies the spectrum (eigenvalues) of linear operators, primarily in Hilbert/Banach spaces, relevant to quantum mechanics and PDEs.",
    "Operator Theory": "Focuses on properties of linear operators on function spaces and their classification.",
    "Mathematical Physics": "Uses advanced mathematical tools to solve and model problems in physics, often involving differential geometry and functional analysis.",
    "Financial Mathematics": "Applies stochastic calculus and optimization to problems in pricing, risk, and investment.",
    "Mathematics Education": "Focuses on teaching methods, learning theories, and curriculum design in mathematics.",
    "History of Mathematics": "Studies the historical development of mathematical concepts, theorems, and personalities.",
    "Others / Multidisciplinary": "Covers problems that span multiple mathematical areas or do not fall neatly into a traditional domain."
}

domain_names = list(DOMAINS.keys())
domain_texts = list(DOMAINS.values())
domain_embeddings = model.encode(domain_texts)

def fetch_arxiv_refs(query, max_results=5):
    refs = []
    try:
        search = arxiv.Search(query=query, max_results=max_results)
        for r in search.results():
            refs.append({
                "title": r.title,
                "authors": ", ".join(a.name for a in r.authors[:3]),
                "year": r.published.year,
                "url": r.entry_id,
                "source": "arXiv"
            })
    except:
        pass
    return refs

def fetch_duckduckgo_links(query, max_results=10):
    links = []
    try:
        with DDGS() as ddgs:
            results = ddgs.text(query, max_results=max_results)
            count = 0
            for res in results:
                url = res['href']
                if ".edu" in url or ".org" in url:
                    links.append({
                        "title": res['title'],
                        "url": url,
                        "snippet": res['body'],
                        "source": "DuckDuckGo"
                    })
                    count += 1
                if count >= 3:
                    break
    except:
        pass
    return links

def classify_math_question(question):
    q_embed = model.encode([question])
    scores = cosine_similarity(q_embed, domain_embeddings)[0]
    sorted_indices = scores.argsort()[::-1]
    major = domain_names[sorted_indices[0]]
    minor = domain_names[sorted_indices[1]]
    major_reason = DOMAINS[major]
    minor_reason = DOMAINS[minor]

    out = f"<b>Major Domain:</b> {major}<br><i>Reason:</i> {major_reason}<br><br>"
    out += f"<b>Minor Domain:</b> {minor}<br><i>Reason:</i> {minor_reason}<br><br>"

    refs = fetch_arxiv_refs(question, max_results=5)
    links = fetch_duckduckgo_links(question, max_results=3)

    if refs:
        out += "<b>Top Academic References (arXiv):</b><ul>"
        for p in refs:
            out += f"<li><b>{p['title']}</b> ({p['year']}) - <i>{p['authors']}</i><br><a href='{p['url']}' target='_blank'>{p['url']}</a></li>"
        out += "</ul>"
    else:
        out += "<i>No academic references found.</i><br>"

    if links:
        out += "<b>Top Web Resources (DuckDuckGo):</b><ul>"
        for link in links:
            out += f"<li><b>{link['title']}</b><br>{link['snippet']}<br><a href='{link['url']}' target='_blank'>{link['url']}</a></li>"
        out += "</ul>"
    else:
        out += "<i>No web links found.</i>"

    return out

iface = gr.Interface(
    fn=classify_math_question,
    inputs=gr.Textbox(lines=5, label="Enter Math Question (LaTeX supported)"),
    outputs=gr.HTML(label="Predicted Domains + References"),
    title="⚡ Fast Math Domain Classifier with arXiv + DuckDuckGo",
    description="Classifies math problems into major/minor domains and fetches fast references from arXiv + DuckDuckGo."
)

iface.launch()