RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1602040
Accepted
Talleyran
Talleyran
Asked:2024-12-10 03:27:34 +0000 UTC2024-12-10 03:27:34 +0000 UTC 2024-12-10 03:27:34 +0000 UTC

Python 中的英俄实用转录

  • 772

我们需要一种将英语(用拉丁语书写)名字音译为俄语的方法,同时考虑发音。

我对实用的转录感兴趣,而不仅仅是音译。该链接有一个包含规则的巨大表格,但我什至无法想象如何对它们进行全部编码,并且在许多地方它仍然没有指定在哪种情况下使用哪种音节变体。也许您需要一本大字典。

有一个内置的库transliterate和相应的函数translit("Old White End", "ru"),但它完全没有用,因为它返回Олд Wхите Енд你想看到的东西Олд Уайт Энд。或Дэвис Корт不Давис Цоурт。

有没有现成或半现成的解决方案?

python
  • 2 2 个回答
  • 61 Views

2 个回答

  • Voted
  1. Best Answer
    Pak Uula
    2024-12-10T17:21:42Z2024-12-10T17:21:42Z

    您可以设置 IPA 符号和俄语字母之间的对应表。这是一个例子(免责声明 - 对应表是我自己制作的,我不能保证传输的准确性,如果您不喜欢它,请澄清并扩展)

    """
    Этот скрипт демонстрирует, как преобразовать английский текст в транскрипцию IPA,
    а затем к русскоязычному фонетическому представлению.
    """
    import eng_to_ipa as ipa
    
    
    # ipa2ru_map - Словарь для преобразования символов IPA в русскоязычные фонемы
    ipa2ru_map = {
        "p": "п", "b": "б", "t": "т", "d": "д", "k": "к", "g": "г", "m": "м", "n": "н", "ŋ": "нг", "ʧ": "ч", "ʤ": "дж", "f": "ф", "v": "в", "θ": "т", "ð": "з", "s": "с", "z": "з", "ʃ": "ш", "ʒ": "ж", "h": "х", "w": "в", "j": "й", "r": "р", "l": "л",
        # гласные
        "i": "и", "ɪ": "и", "e": "э", "ɛ": "э", "æ": "э", "ʌ": "а", "ə": "е", "u": "у", "ʊ": "у", "oʊ": "оу", "ɔ": "о", "ɑ": "а", "aɪ": "ай", "aʊ": "ау", "ɔɪ": "ой", "ɛr": "ё", "ər": "ё", "ɚ": "а", "ju": "ю", "əv": "ов",
        # ударения
        "ˈ": "", "ˌ": "",
    }
    
    def ipa2ru_at_pos(ipa_text: str, pos: int) -> tuple[str, int]:
        """
        Переводит символ или пару символов из строки IPA в соответствующий русский символ(ы) в данной позиции.
    
        Аргументы:
            ipa_text (str): Входная строка, содержащая символы IPA.
            pos (int): Положнение в строке.
    
        Возвращаемое значение:
            tuple[str, int]: Кортеж, содержащий русскую озвучку и новую позицию после перевода.
                             Если символ(ы) в данной позиции не найден(ы) в таблице соответствий,
                             то возвращается строка, в которой неизвестные символ(ы) обрамлены восклицательными знаками.
                            Второй элемент кортежа содержит позицию следующего необработанного символа.
        """
        ch = ipa_text[pos]
        ch2 = ipa_text[pos : pos + 2]
        # дифтонги или сочетания фонем
        if ch2 in ipa2ru_map:
            return ipa2ru_map[ch2], pos + 2
        # одиночные фонемы
        if ch in ipa2ru_map:
            return ipa2ru_map[ch], pos + 1
        # ascii символы - цифры, пунктуация и т.д.
        if ord(ch) < 128:
            return ch, pos + 1
        return f"!{ch}!", pos + 1
    
    def ipa2ru(ipa_text: str) -> str:
        """
        Преобразует транскрипцую, заданную символами IPA (международный фонетический алфавит),
        в русское фонетическое представление.
    
        Args:
            ipa_text (str): Входная строка, содержащая символы IPA.
    
        Returns:
            str: Полученная строка с русским фонетическим представлением.
        """
        result = ""
        pos = 0
        while pos < len(ipa_text):
            ru_ch, pos = ipa2ru_at_pos(ipa_text, pos)
            result += ru_ch
        return result
    

    翻译包含英语所有发音的短语的示例

    # Фраза, содержащая все (наверное) звуки английского языка
    eng = (
        "The beige hue on the waters of the loch impressed all,"
        " including the French queen, before she heard that symphony again,"
        " just as what young Arthur wanted."
    )
    transcription = ipa.convert(eng)
    
    print(eng)
    print(transcription)
    print(ipa2ru(transcription))
    

    这就是发生的事情

    The beige hue on the waters of the loch impressed all, including the French queen, before she heard that symphony again, just as what young Arthur wanted.
    ðə beɪʒ hju ɔn ðə ˈwɔtərz əv ðə lɑk ˌɪmˈprɛst ɔl, ˌɪnˈkludɪŋ ðə frɛnʧ kwin, ˌbiˈfɔr ʃi hərd ðət ˈsɪmfəni əˈgɛn, ʤɪst ɛz wət jəŋ ˈɑrθər ˈwɔntɪd.
    зе бэиж хю он зе вотёз ов зе лак импрэст ол, инклудинг зе фрэнч квин, бифор ши хёд зет симфени егэн, джист эз вет йенг артё вонтид.
    

    顺便说一下,end_to_ipa 是在撒谎。例如,他将其表达loch为lɑk,尽管它应该被解读为lɒx

    附言。由 Copilot 生成的文档。我的代码从来没有被如此详细地记录过)))

    • 3
  2. Qwertiy
    2024-12-10T18:22:19Z2024-12-10T18:22:19Z

    该算法几乎肯定不会起作用。只能通过完整的字典,但在某些情况下还需要从上下文中理解时间或含义。也许是另一个词性,但这主要影响重点,而且你似乎没有问。

    • https://www.youtube.com/watch?v=rl5FPJb18VM
    • https://www.youtube.com/watch?v=gqT-3fV762Y
    • 0

相关问题

  • 是否可以以某种方式自定义 QTabWidget?

  • telebot.anihelper.ApiException 错误

  • Python。检查一个数字是否是 3 的幂。输出 无

  • 解析多个响应

  • 交换两个数组的元素,以便它们的新内容也反转

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5