ai-code-detection / xai /text_explainer.py
joshnavip's picture
Initial commit: AI code detection project (without binary files)
b144cb7
def generate_text_explanation(grouped_importance, prediction, confidence):
"""
grouped_importance : dict from grouping.py
Example:
{
"Semantic": 0.92,
"Stylometry": 0.21,
"Statistical": 0.08
}
prediction : "AI" or "Human"
confidence : float
"""
# Sort groups by importance
sorted_groups = sorted(grouped_importance.items(), key=lambda x: -x[1])
explanation_lines = []
explanation_lines.append(
f"The model predicts the code is {prediction} with confidence {round(confidence,4)}."
)
explanation_lines.append("Key contributing factors:")
for group, score in sorted_groups:
if group == "Semantic":
explanation_lines.append(
f"• Semantic patterns strongly influenced the decision, indicating structural similarity with {'AI‑generated' if prediction=='AI' else 'human‑written'} code."
)
elif group == "Stylometry":
explanation_lines.append(
f"• Stylometric characteristics such as identifier usage and coding style contributed to the prediction."
)
elif group == "Statistical":
explanation_lines.append(
f"• Token‑level statistical patterns (entropy, repetition, vocabulary richness) affected the classification."
)
elif group == "AST":
explanation_lines.append(
f"• Abstract Syntax Tree structure and control flow patterns influenced the decision."
)
elif group == "Language":
explanation_lines.append(
f"• Programming language encoding provided contextual information for the classifier."
)
return "\n".join(explanation_lines)