﻿#!/usr/bin/python
# -*- coding=utf-8 -*-
# -------------------------------------------------------------------------------
# Name:        stem_stopwords_const
# Purpose:     Arabic lexical analyser constants, provides feature for
# stemming arabic word as stopwords
#
# Author:      Taha Zerrouki (taha.zerrouki[at]gmail.com)
#
# Created:     07-07-2014
# Copyright:   (c) Taha Zerrouki 2014
# Licence:     GPL
# -------------------------------------------------------------------------------
"""Arabic lexical analyser constants, provides feature for
stemming arabic word as stopwords"""
import pyarabic.araby as araby


COMP_PREFIX_LETTERS = "أابفكول"
COMP_SUFFIX_LETTERS = "اكمنهي"
COMP_INFIX_LETTERS = ""
COMP_MAX_PREFIX = 5
COMP_MAX_SUFFIX = 6
COMP_MIN_STEM = 2
COMP_JOKER = "*"
COMP_PREFIX_LIST_TAGS = {
    "": {"tags": ("",), "vocalized": ("",)},
    "أ": {"tags": ("استفهام",), "vocalized": ("أَ",)},
    "أَ": {"tags": ("استفهام",), "vocalized": ("أَ",)},
    "و": {
        "tags": (
            "معطوف",
            "عطف",
            "",
        ),
        "vocalized": ("وَ",),
    },
    "وَ": {
        "tags": (
            "معطوف",
            "عطف",
            "",
        ),
        "vocalized": ("وَ",),
    },
    "أو": {
        "tags": (
            "معطوف",
            "عطف",
            "استفهام",
        ),
        "vocalized": ("أَوََ",),
    },
    "ف": {
        "tags": (
            "معطوف",
            "عطف",
        ),
        "vocalized": ("فَ",),
    },
    "أف": {
        "tags": (
            "استفهام",
            "معطوف",
            "عطف",
        ),
        "vocalized": ("أَفَ",),
    },
    "ب": {"tags": ("جر",), "vocalized": ("بِ",)},
    "أب": {
        "tags": (
            "استفهام",
            "جر",
        ),
        "vocalized": ("أَبِ",),
    },
    "وب": {
        "tags": (
            "جر",
            "معطوف",
            "عطف",
        ),
        "vocalized": ("وَبِ",),
    },
    "أوب": {
        "tags": (
            "استفهام",
            "جر",
            "معطوف",
            "عطف",
        ),
        "vocalized": ("أَوَبِ",),
    },
    "فب": {
        "tags": (
            "معطوف",
            "عطف",
            "جر",
        ),
        "vocalized": ("فَبِ",),
    },
    "أفب": {
        "tags": (
            "استفهام",
            "معطوف",
            "عطف",
            "جر",
        ),
        "vocalized": ("أَفَبِ",),
    },
    "ك": {"tags": ("جر",), "vocalized": ("كَ",)},
    "أك": {
        "tags": (
            "استفهام",
            "جر",
        ),
        "vocalized": ("أكَ",),
    },
    "وك": {
        "tags": (
            "جر",
            "معطوف",
            "عطف",
        ),
        "vocalized": ("وَكَ",),
    },
    "أوك": {
        "tags": (
            "استفهام",
            "جر",
            "معطوف",
            "عطف",
        ),
        "vocalized": ("أَوَكَ",),
    },
    "فك": {
        "tags": (
            "معطوف",
            "عطف",
            "جر",
        ),
        "vocalized": ("فَكَ",),
    },
    "أفك": {
        "tags": (
            "استفهام",
            "معطوف",
            "عطف",
            "جر",
        ),
        "vocalized": ("أَفَكَ",),
    },
    "ل": {"tags": ("جر",), "vocalized": ("لِ",)},
    "أل": {
        "tags": (
            "استفهام",
            "جر",
        ),
        "vocalized": ("أَلِ",),
    },
    "ول": {
        "tags": (
            "جر",
            "معطوف",
            "عطف",
        ),
        "vocalized": ("وَلِ",),
    },
    "أول": {
        "tags": (
            "استفهام",
            "جر",
            "معطوف",
            "عطف",
        ),
        "vocalized": ("أَوَلِ",),
    },
    "فل": {
        "tags": (
            "معطوف",
            "عطف",
            "جر",
        ),
        "vocalized": ("فَلِ",),
    },
    "أفل": {
        "tags": (
            "استفهام",
            "معطوف",
            "عطف",
            "جر",
        ),
        "vocalized": ("أَفَلِ",),
    },
    "ال": {"tags": ("تعريف",), "vocalized": ("الْ",)},
    "أال": {
        "tags": (
            "استفهام",
            "تعريف",
        ),
        "vocalized": ("أَالْ",),
    },
    "وال": {
        "tags": (
            "تعريف",
            "معطوف",
            "عطف",
        ),
        "vocalized": ("وَالْ",),
    },
    "أوال": {
        "tags": (
            "استفهام",
            "تعريف",
            "معطوف",
            "عطف",
        ),
        "vocalized": ("أَوَالْ",),
    },
    "فال": {
        "tags": (
            "معطوف",
            "عطف",
            "تعريف",
        ),
        "vocalized": ("فَالْ",),
    },
    "أفال": {
        "tags": (
            "استفهام",
            "معطوف",
            "عطف",
            "تعريف",
        ),
        "vocalized": ("أَفَالْ",),
    },
    "بال": {
        "tags": (
            "جر",
            "تعريف",
        ),
        "vocalized": ("بِالْ",),
    },
    "أبال": {
        "tags": (
            "استفهام",
            "جر",
            "تعريف",
        ),
        "vocalized": ("أَبالْ",),
    },
    "وبال": {
        "tags": (
            "جر",
            "تعريف",
            "معطوف",
            "عطف",
        ),
        "vocalized": ("وَبِالْْ",),
    },
    "أوبال": {
        "tags": (
            "استفهام",
            "جر",
            "تعريف",
            "معطوف",
            "عطف",
        ),
        "vocalized": ("أَوَبالْْ",),
    },
    "فبال": {
        "tags": (
            "معطوف",
            "عطف",
            "جر",
            "تعريف",
        ),
        "vocalized": ("فَبِالْ",),
    },
    "أفبال": {
        "tags": (
            "استفهام",
            "معطوف",
            "عطف",
            "جر",
            "تعريف",
        ),
        "vocalized": ("أَفَبِالْ",),
    },
    "كال": {
        "tags": (
            "جر",
            "تعريف",
        ),
        "vocalized": ("كَالْْ",),
    },
    "أكال": {
        "tags": (
            "استفهام",
            "جر",
            "تعريف",
        ),
        "vocalized": ("أكَالْ",),
    },
    "وكال": {
        "tags": (
            "جر",
            "تعريف",
            "معطوف",
            "عطف",
        ),
        "vocalized": ("وَكَالْْ",),
    },
    "أوكال": {
        "tags": (
            "استفهام",
            "جر",
            "تعريف",
            "معطوف",
            "عطف",
        ),
        "vocalized": ("أَوَكَالْْ",),
    },
    "فكال": {
        "tags": (
            "معطوف",
            "عطف",
            "جر",
            "تعريف",
        ),
        "vocalized": ("فَكَالْ",),
    },
    "أفكال": {
        "tags": (
            "استفهام",
            "معطوف",
            "عطف",
            "جر",
            "تعريف",
        ),
        "vocalized": ("أَفَكَالْ",),
    },
    "لل": {
        "tags": (
            "جر",
            "تعريف",
        ),
        "vocalized": ("لِلْ",),
    },
    "ألل": {
        "tags": (
            "استفهام",
            "جر",
            "تعريف",
        ),
        "vocalized": ("أَلِلْ",),
    },
    "ولل": {
        "tags": (
            "جر",
            "تعريف",
            "معطوف",
            "عطف",
        ),
        "vocalized": ("وَلِلْ",),
    },
    "أولل": {
        "tags": (
            "استفهام",
            "جر",
            "تعريف",
            "معطوف",
            "عطف",
        ),
        "vocalized": ("أَوَلِلْ",),
    },
    "فلل": {
        "tags": (
            "معطوف",
            "عطف",
            "جر",
            "تعريف",
        ),
        "vocalized": ("فَلِلْ",),
    },
    "أفلل": {
        "tags": (
            "استفهام",
            "معطوف",
            "عطف",
            "جر",
            "تعريف",
        ),
        "vocalized": ("أَفَلِلْ",),
    },
}
COMP_PREFIX_LIST = list(COMP_PREFIX_LIST_TAGS.keys())
COMP_SUFFIX_LIST_TAGS = {
    "": {"tags": ("",), "vocalized": ("",)},
    "ي": {
        "tags": ("مضاف",),
        "vocalized": ("ِي",),
    },
    "ِي": {
        "tags": ("مضاف",),
        "vocalized": ("ِي",),
    },
    "ني": {
        "tags": ("مضاف", "وقاية"),
        "vocalized": ("نِي",),
    },
    "نِي": {
        "tags": ("مضاف", "وقاية"),
        "vocalized": ("نِي",),
    },
    "ك": {
        "tags": ("مضاف",),
        "vocalized": ("كَ", "كِ"),
    },
    "كَ": {
        "tags": ("مضاف",),
        "vocalized": ("كَ",),
    },
    "كِ": {
        "tags": ("مضاف",),
        "vocalized": ("كِ",),
    },
    "كم": {
        "tags": ("مضاف",),
        "vocalized": ("كُمْ",),
    },
    "كُمْ": {
        "tags": ("مضاف",),
        "vocalized": ("كُمْ",),
    },
    "كن": {
        "tags": ("مضاف",),
        "vocalized": ("كُنَّ",),
    },
    "كُنَّ": {
        "tags": ("مضاف",),
        "vocalized": ("كُنَّ",),
    },
    "ها": {
        "tags": ("مضاف",),
        "vocalized": ("هَا",),
    },
    "هَا": {
        "tags": ("مضاف",),
        "vocalized": ("هَا",),
    },
    "نا": {
        "tags": ("مضاف",),
        "vocalized": ("نَا",),
    },
    "نَا": {
        "tags": ("مضاف",),
        "vocalized": ("نَا",),
    },
    "كما": {
        "tags": ("مضاف",),
        "vocalized": ("كُمَا",),
    },
    "كُمَا": {
        "tags": ("مضاف",),
        "vocalized": ("كُمَا",),
    },
    "هما": {
        "tags": ("مضاف",),
        "vocalized": ("هُمَا", "هِمَا"),
    },
    "هُمَا": {
        "tags": ("مضاف", "لايجر"),
        "vocalized": ("هُمَا",),
    },
    # تستعمل في حالة كسر هاء الضمير في الجر
    "هِمَا": {
        "tags": (
            "مضاف",
            "مجرور",
        ),
        "vocalized": ("هِمَا",),
    },
    "هم": {
        "tags": ("مضاف",),
        "vocalized": (
            "هُمْ",
            "هِمْ",
        ),
    },
    "هُمْ": {
        "tags": ("مضاف", "لايجر"),
        "vocalized": ("هُمْ",),
    },
    "هِمْ": {
        "tags": (
            "مضاف",
            "مجرور",
        ),
        "vocalized": ("هِمْ",),
    },
    "هن": {
        "tags": ("مضاف",),
        "vocalized": (
            "هُنَّ",
            "هِنَّ",
        ),
    },
    "هُنَّ": {
        "tags": ("مضاف", "لايجر"),
        "vocalized": ("هُنَّ",),
    },
    "هِنَّ": {
        "tags": (
            "مضاف",
            "مجرور",
        ),
        "vocalized": ("هِنَّ",),
    },
    "ه": {
        "tags": ("مضاف",),
        "vocalized": (
            "هُ",
            "هِ",
        ),
    },
    "هُ": {
        "tags": ("مضاف", "لايجر", "T"),
        "vocalized": ("هُ",),
    },
    "هِ": {
        "tags": (
            "مضاف",
            "مجرور",
        ),
        "vocalized": ("هِ",),
    },
}
COMP_SUFFIX_LIST = list(COMP_SUFFIX_LIST_TAGS.keys())
COMP_STOPWORDS_AFFIXES = set(
    [
        "-",  # قصد
        "أ-",  # أ-قصد
        "و-",  # و-قصد
        "أو-",  # أ-و-قصد
        "ف-",  # ف-قصد
        "أف-",  # أ-ف-قصد
        "ب-",  # ب-قصد
        "أب-",  # أ-ب-قصد
        "وب-",  # و-ب-قصد
        "أوب-",  # أ-و-ب-قصد
        "فب-",  # ف-ب-قصد
        "أفب-",  # أ-ف-ب-قصد
        "ك-",  # ك-قصد
        "أك-",  # أ-ك-قصد
        "وك-",  # و-ك-قصد
        "أوك-",  # أ-و-ك-قصد
        "فك-",  # ف-ك-قصد
        "أفك-",  # أ-ف-ك-قصد
        "ل-",  # ل-قصد
        "أل-",  # أ-ل-قصد
        "ول-",  # و-ل-قصد
        "أول-",  # أ-و-ل-قصد
        "فل-",  # ف-ل-قصد
        "أفل-",  # أ-ف-ل-قصد
        "-ي",  # قصد-ي
        "-ني",  # قصد-ي
        "أ-ي",  # أ-قصد-ي
        "و-ي",  # و-قصد-ي
        "أو-ي",  # أ-و-قصد-ي
        "ف-ي",  # ف-قصد-ي
        "أف-ي",  # أ-ف-قصد-ي
        "ب-ي",  # ب-قصد-ي
        "أب-ي",  # أ-ب-قصد-ي
        "وب-ي",  # و-ب-قصد-ي
        "أوب-ي",  # أ-و-ب-قصد-ي
        "فب-ي",  # ف-ب-قصد-ي
        "أفب-ي",  # أ-ف-ب-قصد-ي
        "ك-ي",  # ك-قصد-ي
        "أك-ي",  # أ-ك-قصد-ي
        "وك-ي",  # و-ك-قصد-ي
        "أوك-ي",  # أ-و-ك-قصد-ي
        "فك-ي",  # ف-ك-قصد-ي
        "أفك-ي",  # أ-ف-ك-قصد-ي
        "ل-ي",  # ل-قصد-ي
        "أل-ي",  # أ-ل-قصد-ي
        "ول-ي",  # و-ل-قصد-ي
        "أول-ي",  # أ-و-ل-قصد-ي
        "فل-ي",  # ف-ل-قصد-ي
        "أفل-ي",  # أ-ف-ل-قصد-ي
        "أ-ني",  # أ-قصد-ني
        "و-ني",  # و-قصد-ني
        "أو-ني",  # أ-و-قصد-ني
        "ف-ني",  # ف-قصد-ني
        "أف-ني",  # أ-ف-قصد-ني
        "ب-ني",  # ب-قصد-ني
        "أب-ني",  # أ-ب-قصد-ني
        "وب-ني",  # و-ب-قصد-ني
        "أوب-ني",  # أ-و-ب-قصد-ني
        "فب-ني",  # ف-ب-قصد-ني
        "أفب-ني",  # أ-ف-ب-قصد-ني
        "ك-ني",  # ك-قصد-ني
        "أك-ني",  # أ-ك-قصد-ني
        "وك-ني",  # و-ك-قصد-ني
        "أوك-ني",  # أ-و-ك-قصد-ني
        "فك-ني",  # ف-ك-قصد-ني
        "أفك-ني",  # أ-ف-ك-قصد-ني
        "ل-ني",  # ل-قصد-ني
        "أل-ني",  # أ-ل-قصد-ني
        "ول-ني",  # و-ل-قصد-ني
        "أول-ني",  # أ-و-ل-قصد-ني
        "فل-ني",  # ف-ل-قصد-ني
        "أفل-ني",  # أ-ف-ل-قصد-ني
        "-ك",  # قصد-ك
        "أ-ك",  # أ-قصد-ك
        "و-ك",  # و-قصد-ك
        "أو-ك",  # أ-و-قصد-ك
        "ف-ك",  # ف-قصد-ك
        "أف-ك",  # أ-ف-قصد-ك
        "ب-ك",  # ب-قصد-ك
        "أب-ك",  # أ-ب-قصد-ك
        "وب-ك",  # و-ب-قصد-ك
        "أوب-ك",  # أ-و-ب-قصد-ك
        "فب-ك",  # ف-ب-قصد-ك
        "أفب-ك",  # أ-ف-ب-قصد-ك
        "ك-ك",  # ك-قصد-ك
        "أك-ك",  # أ-ك-قصد-ك
        "وك-ك",  # و-ك-قصد-ك
        "أوك-ك",  # أ-و-ك-قصد-ك
        "فك-ك",  # ف-ك-قصد-ك
        "أفك-ك",  # أ-ف-ك-قصد-ك
        "ل-ك",  # ل-قصد-ك
        "أل-ك",  # أ-ل-قصد-ك
        "ول-ك",  # و-ل-قصد-ك
        "أول-ك",  # أ-و-ل-قصد-ك
        "فل-ك",  # ف-ل-قصد-ك
        "أفل-ك",  # أ-ف-ل-قصد-ك
        "-ه",  # قصد-ه
        "أ-ه",  # أ-قصد-ه
        "و-ه",  # و-قصد-ه
        "أو-ه",  # أ-و-قصد-ه
        "ف-ه",  # ف-قصد-ه
        "أف-ه",  # أ-ف-قصد-ه
        "ب-ه",  # ب-قصد-ه
        "أب-ه",  # أ-ب-قصد-ه
        "وب-ه",  # و-ب-قصد-ه
        "أوب-ه",  # أ-و-ب-قصد-ه
        "فب-ه",  # ف-ب-قصد-ه
        "أفب-ه",  # أ-ف-ب-قصد-ه
        "ك-ه",  # ك-قصد-ه
        "أك-ه",  # أ-ك-قصد-ه
        "وك-ه",  # و-ك-قصد-ه
        "أوك-ه",  # أ-و-ك-قصد-ه
        "فك-ه",  # ف-ك-قصد-ه
        "أفك-ه",  # أ-ف-ك-قصد-ه
        "ل-ه",  # ل-قصد-ه
        "أل-ه",  # أ-ل-قصد-ه
        "ول-ه",  # و-ل-قصد-ه
        "أول-ه",  # أ-و-ل-قصد-ه
        "فل-ه",  # ف-ل-قصد-ه
        "أفل-ه",  # أ-ف-ل-قصد-ه
        "-كم",  # قصد-كم
        "أ-كم",  # أ-قصد-كم
        "و-كم",  # و-قصد-كم
        "أو-كم",  # أ-و-قصد-كم
        "ف-كم",  # ف-قصد-كم
        "أف-كم",  # أ-ف-قصد-كم
        "ب-كم",  # ب-قصد-كم
        "أب-كم",  # أ-ب-قصد-كم
        "وب-كم",  # و-ب-قصد-كم
        "أوب-كم",  # أ-و-ب-قصد-كم
        "فب-كم",  # ف-ب-قصد-كم
        "أفب-كم",  # أ-ف-ب-قصد-كم
        "ك-كم",  # ك-قصد-كم
        "أك-كم",  # أ-ك-قصد-كم
        "وك-كم",  # و-ك-قصد-كم
        "أوك-كم",  # أ-و-ك-قصد-كم
        "فك-كم",  # ف-ك-قصد-كم
        "أفك-كم",  # أ-ف-ك-قصد-كم
        "ل-كم",  # ل-قصد-كم
        "أل-كم",  # أ-ل-قصد-كم
        "ول-كم",  # و-ل-قصد-كم
        "أول-كم",  # أ-و-ل-قصد-كم
        "فل-كم",  # ف-ل-قصد-كم
        "أفل-كم",  # أ-ف-ل-قصد-كم
        "-كن",  # قصد-كن
        "أ-كن",  # أ-قصد-كن
        "و-كن",  # و-قصد-كن
        "أو-كن",  # أ-و-قصد-كن
        "ف-كن",  # ف-قصد-كن
        "أف-كن",  # أ-ف-قصد-كن
        "ب-كن",  # ب-قصد-كن
        "أب-كن",  # أ-ب-قصد-كن
        "وب-كن",  # و-ب-قصد-كن
        "أوب-كن",  # أ-و-ب-قصد-كن
        "فب-كن",  # ف-ب-قصد-كن
        "أفب-كن",  # أ-ف-ب-قصد-كن
        "ك-كن",  # ك-قصد-كن
        "أك-كن",  # أ-ك-قصد-كن
        "وك-كن",  # و-ك-قصد-كن
        "أوك-كن",  # أ-و-ك-قصد-كن
        "فك-كن",  # ف-ك-قصد-كن
        "أفك-كن",  # أ-ف-ك-قصد-كن
        "ل-كن",  # ل-قصد-كن
        "أل-كن",  # أ-ل-قصد-كن
        "ول-كن",  # و-ل-قصد-كن
        "أول-كن",  # أ-و-ل-قصد-كن
        "فل-كن",  # ف-ل-قصد-كن
        "أفل-كن",  # أ-ف-ل-قصد-كن
        "-ها",  # قصد-ها
        "أ-ها",  # أ-قصد-ها
        "و-ها",  # و-قصد-ها
        "أو-ها",  # أ-و-قصد-ها
        "ف-ها",  # ف-قصد-ها
        "أف-ها",  # أ-ف-قصد-ها
        "ب-ها",  # ب-قصد-ها
        "أب-ها",  # أ-ب-قصد-ها
        "وب-ها",  # و-ب-قصد-ها
        "أوب-ها",  # أ-و-ب-قصد-ها
        "فب-ها",  # ف-ب-قصد-ها
        "أفب-ها",  # أ-ف-ب-قصد-ها
        "ك-ها",  # ك-قصد-ها
        "أك-ها",  # أ-ك-قصد-ها
        "وك-ها",  # و-ك-قصد-ها
        "أوك-ها",  # أ-و-ك-قصد-ها
        "فك-ها",  # ف-ك-قصد-ها
        "أفك-ها",  # أ-ف-ك-قصد-ها
        "ل-ها",  # ل-قصد-ها
        "أل-ها",  # أ-ل-قصد-ها
        "ول-ها",  # و-ل-قصد-ها
        "أول-ها",  # أ-و-ل-قصد-ها
        "فل-ها",  # ف-ل-قصد-ها
        "أفل-ها",  # أ-ف-ل-قصد-ها
        "-هم",  # قصد-هم
        "أ-هم",  # أ-قصد-هم
        "و-هم",  # و-قصد-هم
        "أو-هم",  # أ-و-قصد-هم
        "ف-هم",  # ف-قصد-هم
        "أف-هم",  # أ-ف-قصد-هم
        "ب-هم",  # ب-قصد-هم
        "أب-هم",  # أ-ب-قصد-هم
        "وب-هم",  # و-ب-قصد-هم
        "أوب-هم",  # أ-و-ب-قصد-هم
        "فب-هم",  # ف-ب-قصد-هم
        "أفب-هم",  # أ-ف-ب-قصد-هم
        "ك-هم",  # ك-قصد-هم
        "أك-هم",  # أ-ك-قصد-هم
        "وك-هم",  # و-ك-قصد-هم
        "أوك-هم",  # أ-و-ك-قصد-هم
        "فك-هم",  # ف-ك-قصد-هم
        "أفك-هم",  # أ-ف-ك-قصد-هم
        "ل-هم",  # ل-قصد-هم
        "أل-هم",  # أ-ل-قصد-هم
        "ول-هم",  # و-ل-قصد-هم
        "أول-هم",  # أ-و-ل-قصد-هم
        "فل-هم",  # ف-ل-قصد-هم
        "أفل-هم",  # أ-ف-ل-قصد-هم
        "-هن",  # قصد-هن
        "أ-هن",  # أ-قصد-هن
        "و-هن",  # و-قصد-هن
        "أو-هن",  # أ-و-قصد-هن
        "ف-هن",  # ف-قصد-هن
        "أف-هن",  # أ-ف-قصد-هن
        "ب-هن",  # ب-قصد-هن
        "أب-هن",  # أ-ب-قصد-هن
        "وب-هن",  # و-ب-قصد-هن
        "أوب-هن",  # أ-و-ب-قصد-هن
        "فب-هن",  # ف-ب-قصد-هن
        "أفب-هن",  # أ-ف-ب-قصد-هن
        "ك-هن",  # ك-قصد-هن
        "أك-هن",  # أ-ك-قصد-هن
        "وك-هن",  # و-ك-قصد-هن
        "أوك-هن",  # أ-و-ك-قصد-هن
        "فك-هن",  # ف-ك-قصد-هن
        "أفك-هن",  # أ-ف-ك-قصد-هن
        "ل-هن",  # ل-قصد-هن
        "أل-هن",  # أ-ل-قصد-هن
        "ول-هن",  # و-ل-قصد-هن
        "أول-هن",  # أ-و-ل-قصد-هن
        "فل-هن",  # ف-ل-قصد-هن
        "أفل-هن",  # أ-ف-ل-قصد-هن
        "-نا",  # قصد-نا
        "أ-نا",  # أ-قصد-نا
        "و-نا",  # و-قصد-نا
        "أو-نا",  # أ-و-قصد-نا
        "ف-نا",  # ف-قصد-نا
        "أف-نا",  # أ-ف-قصد-نا
        "ب-نا",  # ب-قصد-نا
        "أب-نا",  # أ-ب-قصد-نا
        "وب-نا",  # و-ب-قصد-نا
        "أوب-نا",  # أ-و-ب-قصد-نا
        "فب-نا",  # ف-ب-قصد-نا
        "أفب-نا",  # أ-ف-ب-قصد-نا
        "ك-نا",  # ك-قصد-نا
        "أك-نا",  # أ-ك-قصد-نا
        "وك-نا",  # و-ك-قصد-نا
        "أوك-نا",  # أ-و-ك-قصد-نا
        "فك-نا",  # ف-ك-قصد-نا
        "أفك-نا",  # أ-ف-ك-قصد-نا
        "ل-نا",  # ل-قصد-نا
        "أل-نا",  # أ-ل-قصد-نا
        "ول-نا",  # و-ل-قصد-نا
        "أول-نا",  # أ-و-ل-قصد-نا
        "فل-نا",  # ف-ل-قصد-نا
        "أفل-نا",  # أ-ف-ل-قصد-نا
        "-كما",  # قصد-كما
        "أ-كما",  # أ-قصد-كما
        "و-كما",  # و-قصد-كما
        "أو-كما",  # أ-و-قصد-كما
        "ف-كما",  # ف-قصد-كما
        "أف-كما",  # أ-ف-قصد-كما
        "ب-كما",  # ب-قصد-كما
        "أب-كما",  # أ-ب-قصد-كما
        "وب-كما",  # و-ب-قصد-كما
        "أوب-كما",  # أ-و-ب-قصد-كما
        "فب-كما",  # ف-ب-قصد-كما
        "أفب-كما",  # أ-ف-ب-قصد-كما
        "ك-كما",  # ك-قصد-كما
        "أك-كما",  # أ-ك-قصد-كما
        "وك-كما",  # و-ك-قصد-كما
        "أوك-كما",  # أ-و-ك-قصد-كما
        "فك-كما",  # ف-ك-قصد-كما
        "أفك-كما",  # أ-ف-ك-قصد-كما
        "ل-كما",  # ل-قصد-كما
        "أل-كما",  # أ-ل-قصد-كما
        "ول-كما",  # و-ل-قصد-كما
        "أول-كما",  # أ-و-ل-قصد-كما
        "فل-كما",  # ف-ل-قصد-كما
        "أفل-كما",  # أ-ف-ل-قصد-كما
        "-هما",  # قصد-هما
        "أ-هما",  # أ-قصد-هما
        "و-هما",  # و-قصد-هما
        "أو-هما",  # أ-و-قصد-هما
        "ف-هما",  # ف-قصد-هما
        "أف-هما",  # أ-ف-قصد-هما
        "ب-هما",  # ب-قصد-هما
        "أب-هما",  # أ-ب-قصد-هما
        "وب-هما",  # و-ب-قصد-هما
        "أوب-هما",  # أ-و-ب-قصد-هما
        "فب-هما",  # ف-ب-قصد-هما
        "أفب-هما",  # أ-ف-ب-قصد-هما
        "ك-هما",  # ك-قصد-هما
        "أك-هما",  # أ-ك-قصد-هما
        "وك-هما",  # و-ك-قصد-هما
        "أوك-هما",  # أ-و-ك-قصد-هما
        "فك-هما",  # ف-ك-قصد-هما
        "أفك-هما",  # أ-ف-ك-قصد-هما
        "ل-هما",  # ل-قصد-هما
        "أل-هما",  # أ-ل-قصد-هما
        "ول-هما",  # و-ل-قصد-هما
        "أول-هما",  # أ-و-ل-قصد-هما
        "فل-هما",  # ف-ل-قصد-هما
        "أفل-هما",  # أ-ف-ل-قصد-هما
        "ال-",  # ال-قصد
        "أال-",  # أ-ال-قصد
        "وال-",  # و-ال-قصد
        "أوال-",  # أ-و-ال-قصد
        "فال-",  # ف-ال-قصد
        "أفال-",  # أ-ف-ال-قصد
        "بال-",  # ب-ال-قصد
        "أبال-",  # أ-ب-ال-قصد
        "وبال-",  # و-ب-ال-قصد
        "أوبال-",  # أ-و-ب-ال-قصد
        "فبال-",  # ف-ب-ال-قصد
        "أفبال-",  # أ-ف-ب-ال-قصد
        "كال-",  # ك-ال-قصد
        "أكال-",  # أ-ك-ال-قصد
        "وكال-",  # و-ك-ال-قصد
        "أوكال-",  # أ-و-ك-ال-قصد
        "فكال-",  # ف-ك-ال-قصد
        "أفكال-",  # أ-ف-ك-ال-قصد
        "لل-",  # ل-ال-قصد
        "ألل-",  # أ-ل-ال-قصد
        "ولل-",  # و-ل-ال-قصد
        "أولل-",  # أ-و-ل-ال-قصد
        "فلل-",  # ف-ل-ال-قصد
        "أفلل-",  # أ-ف-ل-ال-قصد
    ]
)
CONJ_PREFIX_LETTERS = "1"
CONJ_SUFFIX_LETTERS = "اتةنوي"
CONJ_INFIX_LETTERS = ""
CONJ_MAX_PREFIX = 3
CONJ_MAX_SUFFIX = 3
CONJ_MIN_STEM = 2
CONJ_JOKER = "*"
CONJ_PREFIX_LIST = ""
CONJ_SUFFIX_LIST_TAGS = {
    "": {
        "tags": ("",),
        "vocalized": (
            "",
            araby.FATHA,
            araby.DAMMA,
            araby.KASRA,
            araby.DAMMATAN,
            araby.KASRATAN,
        ),
    },
    "ُ": {
        "tags": (
            "مرفوع",
            "متحرك",
            "ينون",
        ),
        "vocalized": ("ُ",),
    },  # DAMMA,
    "ٌ": {"tags": ("مرفوع", "متحرك", "تنوين"), "vocalized": ("ٌ",)},  # DAMMATAN,
    "ٍ": {"tags": ("مجرور", "متحرك", "تنوين"), "vocalized": ("ٍ",)},  # KASRA,
    "ِ": {
        "tags": (
            "مجرور",
            "متحرك",
            "ينون",
        ),
        "vocalized": ("ِ",),
    },  # KAsratan,
    "َ": {
        "tags": (
            "منصوب",
            "متحرك",
            "ينون",
        ),
        "vocalized": ("َ",),
    },  # FATHA,
}
CONJ_SUFFIX_LIST = list(CONJ_SUFFIX_LIST_TAGS.keys())
STOPWORDS_CONJUGATION_AFFIX = set(
    [
        "-",
    ]
)

AJUSTMENT = {
    "عَلَيْهُ": "عَلَيْهِ",
    "عَلَيهُ": "عَلَيْهِ",
    "فِيهُ": "فِيهِ",
    "أَبِيهُ": "أَبِيهِ",
    "إِلَيْهُ": "إِلَيْهِ",
    "وَإِلَيْهُ": "وَإِلَيْهِ",
    "إِلَيْهُمْ": "إِلَيْهِمْ",
    "إِلَيْهُمَا": "إِلَيْهِمَا",
    "عَنِي": "عَنِّي",
    "مِنِي": "مِنِّي",
    "لِهُ": "لَهُ",
    "لِهَا": "لَهَا",
    "لِهُمَا": "لَهُمَا",
    "لِهُمْ": "لَهُمْ",
    "لِهُنَّ": "لَهُنَّ",
    "لِكَ": "لَكَ",
    "لِكِ": "لَكِ",
    "لِكُمَا": "لَكُمَا",
    "لِكُنَّ": "لَكُنَّ",
    "لِكُمْ": "لَكُمْ",
    # ~u"":u"",
    # ~u"":u"",
    # ~u"":u"",
}
