cohit's picture
Upload folder using huggingface_hub
0827183 verified
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License.
from typing import List
from recognizers_text import Culture
class PromptCultureModel:
"""
Culture model used in Choice and Confirm Prompts.
"""
def __init__(
self,
locale: str,
separator: str,
inline_or: str,
inline_or_more: str,
yes_in_language: str,
no_in_language: str,
):
"""
:param locale: Culture Model's Locale. Example: "en-US".
:param separator: Culture Model's Inline Separator. Example: ", ".
:param inline_or: Culture Model's Inline Or. Example: " or ".
:param inline_or_more Culture Model's Inline Or More. Example: ", or ".
:param yes_in_language: Equivalent of "Yes" in Culture Model's Language. Example: "Yes".
:param no_in_language: Equivalent of "No" in Culture Model's Language. Example: "No".
"""
self.locale = locale
self.separator = separator
self.inline_or = inline_or
self.inline_or_more = inline_or_more
self.yes_in_language = yes_in_language
self.no_in_language = no_in_language
class PromptCultureModels:
"""
Class container for currently-supported Culture Models in Confirm and Choice Prompt.
"""
Chinese = PromptCultureModel(
locale=Culture.Chinese,
inline_or=" 要么 ",
inline_or_more=", 要么 ",
separator=", ",
no_in_language="不",
yes_in_language="是的",
)
Dutch = PromptCultureModel(
locale=Culture.Dutch,
inline_or=" of ",
inline_or_more=", of ",
separator=", ",
no_in_language="Nee",
yes_in_language="Ja",
)
English = PromptCultureModel(
locale=Culture.English,
inline_or=" or ",
inline_or_more=", or ",
separator=", ",
no_in_language="No",
yes_in_language="Yes",
)
French = PromptCultureModel(
locale=Culture.French,
inline_or=" ou ",
inline_or_more=", ou ",
separator=", ",
no_in_language="Non",
yes_in_language="Oui",
)
German = PromptCultureModel(
# TODO: Replace with Culture.German after Recognizers-Text package updates.
locale="de-de",
inline_or=" oder ",
inline_or_more=", oder ",
separator=", ",
no_in_language="Nein",
yes_in_language="Ja",
)
Italian = PromptCultureModel(
locale=Culture.Italian,
inline_or=" o ",
inline_or_more=" o ",
separator=", ",
no_in_language="No",
yes_in_language="Si",
)
Japanese = PromptCultureModel(
locale=Culture.Japanese,
inline_or=" または ",
inline_or_more="、 または ",
separator="、 ",
no_in_language="いいえ",
yes_in_language="はい",
)
Korean = PromptCultureModel(
locale=Culture.Korean,
inline_or=" 또는 ",
inline_or_more=" 또는 ",
separator=", ",
no_in_language="아니",
yes_in_language="예",
)
Portuguese = PromptCultureModel(
locale=Culture.Portuguese,
inline_or=" ou ",
inline_or_more=", ou ",
separator=", ",
no_in_language="Não",
yes_in_language="Sim",
)
Spanish = PromptCultureModel(
locale=Culture.Spanish,
inline_or=" o ",
inline_or_more=", o ",
separator=", ",
no_in_language="No",
yes_in_language="Sí",
)
Turkish = PromptCultureModel(
locale=Culture.Turkish,
inline_or=" veya ",
inline_or_more=" veya ",
separator=", ",
no_in_language="Hayır",
yes_in_language="Evet",
)
@classmethod
def map_to_nearest_language(cls, culture_code: str) -> str:
"""
Normalize various potential locale strings to a standard.
:param culture_code: Represents locale. Examples: "en-US, en-us, EN".
:return: Normalized locale.
:rtype: str
.. remarks::
In our other SDKs, this method is a copy/paste of the ones from the Recognizers-Text library.
However, that doesn't exist in Python.
"""
if culture_code:
culture_code = culture_code.lower()
supported_culture_codes = cls._get_supported_locales()
if culture_code not in supported_culture_codes:
culture_prefix = culture_code.split("-")[0]
for supported_culture_code in supported_culture_codes:
if supported_culture_code.startswith(culture_prefix):
culture_code = supported_culture_code
return culture_code
@classmethod
def get_supported_cultures(cls) -> List[PromptCultureModel]:
"""
Gets a list of the supported culture models.
"""
return [
cls.Chinese,
cls.German,
cls.Dutch,
cls.English,
cls.French,
cls.Italian,
cls.Japanese,
cls.Korean,
cls.Portuguese,
cls.Spanish,
cls.Turkish,
]
@classmethod
def _get_supported_locales(cls) -> List[str]:
return [c.locale for c in cls.get_supported_cultures()]