Update README.md
Browse files
README.md
CHANGED
|
@@ -1,3 +1,64 @@
|
|
| 1 |
-
---
|
| 2 |
-
license: apache-2.0
|
| 3 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
license: apache-2.0
|
| 3 |
+
language:
|
| 4 |
+
- ar
|
| 5 |
+
tags:
|
| 6 |
+
- iraqi-dialect
|
| 7 |
+
- pragmatics
|
| 8 |
+
- nlp
|
| 9 |
+
- social-reasoning
|
| 10 |
+
- cultural-alignment
|
| 11 |
+
---
|
| 12 |
+
|
| 13 |
+
# Project Nabu: A Model-Agnostic Pragmatic Layer
|
| 14 |
+
|
| 15 |
+
**Author:** Abdullah Hawas (Independent Researcher, Iraq)
|
| 16 |
+
**Paper Title:** Project Nabu: A Model-Agnostic Pragmatic Layer for Social Intent Understanding in Arabic Dialects
|
| 17 |
+
|
| 18 |
+
## 1. Abstract
|
| 19 |
+
[cite_start]Most natural language processing (NLP) systems rely on surface-level sentiment cues, which leads to systematic failures when processing language in high-context cultures[cite: 7]. [cite_start]**Project Nabu** introduces a model-agnostic pragmatic layer designed to sit on top of any pretrained language model (like BERT or MARBERT), allowing inference of social intent beyond traditional sentiment analysis[cite: 8].
|
| 20 |
+
|
| 21 |
+
[cite_start]We use **Iraqi Arabic** as a stress-test case due to its dense hierarchical signaling[cite: 9]. [cite_start]Our evaluation on the **ICLE dataset (4,000 annotated sentences)** demonstrates that the Nabu Layer can suppress literal sentiment cues when they conflict with pragmatic intent[cite: 10].
|
| 22 |
+
|
| 23 |
+
## 2. The Problem: "The Pragmatic Gap"
|
| 24 |
+
Standard sentiment pipelines often misclassify utterances in hierarchical settings. For example, exaggerated praise or apparent sympathy often serves strategic goals like:
|
| 25 |
+
* Deference signaling (Respect)
|
| 26 |
+
* Request softening
|
| 27 |
+
* [cite_start]Status negotiation [cite: 18]
|
| 28 |
+
|
| 29 |
+
Current models see "Good job" as **Positive**, while Nabu analyzes if it is **Sarcastic** or **Flattery**.
|
| 30 |
+
|
| 31 |
+
## 3. Methodology & Architecture
|
| 32 |
+
[cite_start]The Nabu Layer operates on the embeddings of a pretrained base model without retraining the base model itself[cite: 37].
|
| 33 |
+
|
| 34 |
+
### Architecture Design
|
| 35 |
+
The layer extracts pragmatic features based on:
|
| 36 |
+
1. **Hierarchical role indicators**
|
| 37 |
+
2. **Pragmatic trigger density**
|
| 38 |
+
3. [cite_start]**Status comparison patterns** [cite: 40-42]
|
| 39 |
+
|
| 40 |
+
*(Note: See Figure 1 in the attached Paper PDF for the full diagram)*
|
| 41 |
+
|
| 42 |
+
## 4. Evaluation & Results
|
| 43 |
+
We evaluated the model on **Test Case II: Sentiment Paradox (Status Inflation)**.
|
| 44 |
+
[cite_start]Example: *"By God, Professor, frankly you are oppressed in this position, you should be a minister not a manager."* [cite: 78]
|
| 45 |
+
|
| 46 |
+
| Metric | Standard Sentiment | **Nabu Layer** |
|
| 47 |
+
| :--- | :--- | :--- |
|
| 48 |
+
| **Interpretation** | Negative (Sadness) | **Strategic Flattery (Hypocrisy)** |
|
| 49 |
+
| **Confidence** | N/A | [cite_start]**73.04%** [cite: 81] |
|
| 50 |
+
|
| 51 |
+
**Overall Performance:**
|
| 52 |
+
[cite_start]The Nabu framework achieved an average accuracy of **89%** on the Iraqi Arabic test set, compared to **54%** for standard sentiment classifiers[cite: 94].
|
| 53 |
+
|
| 54 |
+
## 5. Technical Usage
|
| 55 |
+
To use the Nabu Layer (Weights coming soon):
|
| 56 |
+
|
| 57 |
+
```python
|
| 58 |
+
from transformers import AutoModelForSequenceClassification, AutoTokenizer
|
| 59 |
+
|
| 60 |
+
# Load the Nabu-Trained Layer
|
| 61 |
+
model_name = "ay933/Nabu-Iraqi"
|
| 62 |
+
|
| 63 |
+
model = AutoModelForSequenceClassification.from_pretrained(model_name)
|
| 64 |
+
tokenizer = AutoTokenizer.from_pretrained(model_name)
|