Arabic Sentencizer
A lightweight Arabic sentence segmentation and text analytics toolkit designed for Arabic NLP pipelines, Information Retrieval systems, Large Language Models (LLMs), corpus processing, data annotation workflows, and Retrieval-Augmented Generation (RAG) applications.
Arabic Sentencizer addresses common challenges in Arabic sentence boundary detection while preserving important linguistic and technical patterns such as abbreviations, URLs, emails, decimal numbers, and version identifiers.
Features
- Arabic sentence segmentation
- URL-aware sentence splitting
- Email-aware sentence splitting
- Decimal number preservation (
1.5,95.5,١.٩) - Version number preservation (
v2.1.5) - Arabic abbreviation handling (
د.,أ.د.,م.) - Arabic punctuation support (
؟,؛,!) - Text statistics and analytics
- NLP preprocessing support
- Corpus preparation and annotation workflows
- Information Retrieval preprocessing
- RAG chunking preparation
- Human-readable text analysis reports
Installation
Install from PyPI:
pip install arabic-sentencizer
For local development:
pip install -e .
Quick Start
Sentence Segmentation
from arabic_sentencizer import split_sentences
text = """
د. أحمد وصل إلى الاجتماع الساعة 10.30 صباحاً.
ثم قال إن نسبة النجاح بلغت 95.5%.
زار الموقع https://www.sanaa.ai ثم انتقل إلى bbc.com.
"""
sentences = split_sentences(text)
for i, sentence in enumerate(sentences, start=1):
print(i, sentence)
Output:
1 د. أحمد وصل إلى الاجتماع الساعة 10.30 صباحاً.
2 ثم قال إن نسبة النجاح بلغت 95.5%.
3 زار الموقع https://www.sanaa.ai ثم انتقل إلى bbc.com.
Real Example
from arabic_sentencizer import split_sentences, analyze_text, print_report
text = """
د. أحمد محمد، أستاذ الذكاء الاصطناعي في جامعة القاهرة، أعلن اليوم عن إصدار جديد من منصة التحليل اللغوي. الإصدار الحالي هو v2.1.5 بينما كان الإصدار السابق v2.0.9 فقط.
قال أ.د. محمد علي: "لقد حققنا نتائج ممتازة في معالجة اللغة العربية." وأضاف أن دقة النظام وصلت إلى 95.7% مقارنة بـ 88.4% العام الماضي.
يمكن للباحثين زيارة الموقع الرسمي:
https://www.sanaa.ai
كما يمكنهم مراجعة الوثائق عبر:
https://docs.sanaa.ai/api/v1.5/index.html
للتواصل مع فريق التطوير يرجى إرسال رسالة إلى:
research@sanaa.ai
بلغ عدد الوثائق المعالجة أكثر من 1.5 مليون وثيقة. كما تم تحليل 125.456.789 كلمة عربية خلال مرحلة الاختبار.
هل يمكن استخدام النظام في تطبيقات البحث الدلالي؟
نعم! يدعم النظام البحث الدلالي والبحث التقليدي معاً.
ممتاز؛ لننتقل الآن إلى تقييم النتائج.
شارك في المشروع كل من:
د. فيصل الشرقي
أ.د. محمود الأحمد
م. خالد السالم
وقد تم نشر النتائج في عدة مؤتمرات منها AAAI 2025 و ACL 2024 و EMNLP 2023.
زار الفريق مواقع مثل bbc.com و wikipedia.org و github.com أثناء جمع البيانات.
وأشار التقرير النهائي إلى أن متوسط زمن الاستجابة بلغ 0.35 ثانية فقط. بينما انخفض زمن الفهرسة من 12.5 ساعة إلى 4.2 ساعة بعد تحسين الخوارزمية.
قال أحد المراجعين:
"هذه من أفضل الأدوات مفتوحة المصدر لمعالجة النصوص العربية."
هل ستتم إضافة دعم للهجات العربية مستقبلاً؟
بالتأكيد. تشمل الخطة القادمة دعم اللهجات الخليجية والشامية والمصرية واليمنية.
شكراً لجميع المساهمين!
"""
print_report(text)
Output:
Arabic Text Analysis Report
===================================
Sentences: 18
Words: 242
Arabic Words: 193
Unique Words: 190
Characters: 1342
Characters without spaces: 1115
Lines: 24
URLs: 6
Emails: 1
Decimal / Version Numbers: 10
Questions: 2
Exclamations: 2
Average Words per Sentence: 13.44
Max Words in a Sentence: 44
Min Words in a Sentence: 1
This example demonstrates support for:
- Arabic abbreviations (
د.,أ.د.,م.) - URLs and domains
- Email addresses
- Decimal numbers
- Version numbers
- Questions and exclamations
- Arabic punctuation
- Text analytics
Text Analytics
from arabic_sentencizer import analyze_text
stats = analyze_text(text)
print(stats["sentences"])
print(stats["words"])
print(stats["top_words"])
Human-Readable Report
from arabic_sentencizer import print_report
print_report(text)
API
Split Sentences
split_sentences(text: str) -> list[str]
Returns a list of segmented Arabic sentences.
Analyze Text
analyze_text(text: str) -> dict
Returns a dictionary containing text statistics and extracted information.
Print Report
print_report(text: str) -> None
Prints a human-readable summary report.
Supported Cases
Arabic Abbreviations
د. أحمد محمد
أ.د. محمد علي
م. خالد السالم
URLs
https://www.sanaa.ai
https://docs.sanaa.ai/api/v1.5/index.html
bbc.com
github.com
wikipedia.org
Emails
research@sanaa.ai
Decimal Numbers
1.5
95.7
88.4
0.35
12.5
4.2
١.٩
Version Numbers
v2.1.5
v2.0.9
Arabic Punctuation
؟
!
؛
Text Statistics
The analyze_text() function returns:
| Statistic | Description |
|---|---|
| characters | Total characters |
| characters_no_spaces | Characters excluding spaces |
| lines | Number of non-empty lines |
| sentences | Number of detected sentences |
| words | Total words |
| arabic_words | Arabic words only |
| unique_words | Unique word count |
| urls | Number of URLs |
| emails | Number of emails |
| decimal_or_version_numbers | Decimal and version numbers |
| questions | Number of questions |
| exclamations | Number of exclamations |
| avg_words_per_sentence | Average sentence length |
| max_words_sentence | Longest sentence length |
| min_words_sentence | Shortest sentence length |
| long_sentences | Long sentences |
| short_sentences | Short sentences |
| top_words | Most frequent words |
| sentences_list | All detected sentences |
| urls_list | Extracted URLs |
| emails_list | Extracted emails |
| numbers_list | Extracted numbers |
Use Cases
- Arabic NLP preprocessing
- Corpus preparation
- Dataset annotation
- Information Retrieval
- Search engines
- Retrieval-Augmented Generation (RAG)
- LLM pipelines
- Arabic content analytics
- Text mining
- Digital humanities research
- Academic research projects
Author
Dr. Faisal Alshargi
Metadata
Release files for arabic-sentencizer 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| arabic_sentencizer-0.1.1.tar.gz | 8.2 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| arabic_sentencizer-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 16.1 kB
Release files / arabic_sentencizer-0.1.1.tar.gz
| Download URL | arabic_sentencizer-0.1.1.tar.gz |
|---|---|
| Size | 8.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5f8d14c28ac0b5661a39e62ce4b3ffc3f0e053dfefeff9254557a3cb11e8bf0c
|
|
BLAKE2b-256 checksum How to use checksums |
094105dff04a24a6ea435de95e68e1171c2728c2c87bae56357ba326b2e6b49c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.7
|
Release files / arabic_sentencizer-0.1.1-py3-none-any.whl
| Download URL | arabic_sentencizer-0.1.1-py3-none-any.whl |
|---|---|
| Size | 8.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5f67ffe3a4d46338fd12ec0142fdd2c925473ee5c891a076174ef9c076345126
|
|
BLAKE2b-256 checksum How to use checksums |
7f50d3c92d29569ad9dd7c1f1f152fb33eae65e97873e90dbb863c5bee9177fe
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.7
|
Security for arabic-sentencizer 0.1.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.