#script #conversion #transliteration #issue #input #indic #devanagari

bin+lib IndicScriptSwap

这是一个帮助在不同印度语脚本之间转写的工具。它尚未准备就绪,存在许多问题。如果您遇到任何问题,请联系我(https://github.com/mssrprad/transliterate-ferris/tree/cli 或 [email protected]

4 个版本

0.6.0 2023 年 5 月 23 日
0.5.2 2023 年 4 月 25 日
0.5.1 2023 年 4 月 25 日
0.5.0 2023 年 4 月 25 日

#9#transliteration

Download history 22/week @ 2024-06-30 57/week @ 2024-07-28

每月下载量 52

MIT 许可证

740KB
958

transliterate-ferris

IMP: 如果您正在编写代码,请勿使用 rust-analyzer。它已多次在 vscode 和 nvim 上崩溃。我怀疑 data.rs 造成了这个问题。

安装

cargo安装 IndicScriptSwap

用法

IndicScriptSwap--源 devanagari--目标 telugu--转换 i2i--输入数据.txt--输出 out.txt

注意:也支持输入和输出管道:cat data.txt | IndicScriptSwap --source devanagari --destination telugu --conversion i2i

Rust 库,用于在脚本之间转写。

问题

  1. 构建时间过长(36秒!!!)
    1. 我以为移除 serdejson 依赖项并从 data.rs 读取可以提高构建时间,但这使它变得更糟。
    2. 使用这种方法代码运行得略快一些。
    3. 由于这个原因,rust-analyzer 在 vs-code 上崩溃。
  2. aksharamukha-python 相比,在相同的转换中,耗时从约 30 毫秒增加到约 150 毫秒。(可以做得更好)
  3. 代码块嵌套太多,看起来很丑。
  4. 没有测试,所以更改可能产生意外的后果。

尽管存在这些问题,但它似乎足以满足基本的转换需求。

设置和使用

git clone https://github.com/MSSRPRAD/ transliterate-ferris.git

cdtransliterate-ferris

time cargo run--发布1>out.txt2>错误.txt

out.txt 包含输出。 error.txt 包含程序发出的警告和错误消息。

main.rs 包含一种“演示”。输入文本如下

letinput: String = "अस्त्य् उत्तरस्यां दिशि देवतात्मा हिमालयो नाम नगाधिराजः । पूर्वापरौ तोयनिधी विगाह्य स्थितः पृथिव्या इव मानदण्डः ॥" .to_string();

您可以将它更改为尝试不同的测试用例。

对于上述输入文本生成的输出是

"asty uttarasyAM diSi devatAtmA himAlayo nAma nagADirAjaH .\npUrvAparO toyaniDI vigAhya sTitaH pfTivyA iva mAnadaRqaH .."

注意

我已经测试过的一些转换(需要测试更多)

还有许多在此未提及的脚本之间的转写可以完成。请尝试它们!(见 src/data.rs 了解各种脚本名称)

源键 目标键 函数
devanagari slp1 convert_indic_to_roman()
devanagari iast convert_indic_to_roman()
devanagari hk convert_indic_to_roman()
telugu slp1 convert_indic_to_roman()
telugu iast convert_indic_to_roman()
telugu hk convert_indic_to_roman()
kannada slp1 convert_indic_to_roman()
kannada iast convert_indic_to_roman()
kannada hk convert_indic_to_roman()
slp1 devanagari convert_roman_to_indic()
slp1 telugu convert_roman_to_indic()
slp1 kannada convert_roman_to_indic()
slp1 itrans convert_roman_to_roman()
iast slp1 convert_roman_to_roman()
slp1 iast convert_roman_to_roman()
iast slp1 convert_roman_to_roman()
iast itrans convert_roman_to_roman()
iast hk convert_roman_to_roman()
devanagari telugu convert_roman_to_roman()
telugu devanagari convert_roman_to_roman()
devanagari kannada convert_roman_to_roman()
kannada devanagari convert_roman_to_roman()
kannada telugu convert_roman_to_roman()
telugu kannada convert_roman_to_roman()

主要关注的是将德文纳加里文转换为 slp1,因为许多程序需要 slp1 格式的输入,而 Rust 尚未提供德文纳加里文到 slp1 的转换库。结果是,制作 convert_roman_to_indic() 和 convert_roman_to_roman() 函数并没有太多区别,所以我也将它实现了。

可能工作的脚本列表 IndicScripts = [ 'RomanSemitic', 'Makasar', 'Nandinagari', 'Kawi', 'Shahmukhi', 'Pallava', 'Hebrew', 'LaoTham', 'LueTham', 'KhuenTham', 'TamilExtended', 'Marchen', 'MasaramGondi', 'GunjalaGondi', 'Soyombo', 'Dogra', 'KhomThai', 'KhamtiShan', 'TaiLaing', 'Mon', 'Khojki', 'Shan', 'Ranjana', 'ZanabazarSquare', 'Rejang', 'GranthaGrantamil', 'Devanagari', 'Multani', 'Ahom', 'Mahajani', 'Lao2', 'Hanunoo', 'Buhid', 'Siddham', 'SiddhamDevanagari', 'GranthaPandya', 'Vatteluttu', 'Khudawadi', 'Bhaiksuki', 'Sharada', 'Newa', 'Takri', 'SylotiNagri', 'Tirhuta', 'Modi', 'Kaithi', 'Kharoshthi', 'Telugu', 'Kannada', 'Malayalam', 'Gujarati', 'Bengali', 'Oriya', 'Gurmukhi', 'Tamil', 'Assamese', 'Saurashtra', 'TamilBrahmi', 'Grantha', 'TamilGrantha', 'Sinhala', 'Khmer', 'Burmese', 'Urdu', 'Balinese', 'Javanese', 'Thaana', 'Tibetan', 'Thai', 'OldPersian', 'Limbu', 'Lepcha', 'Sundanese', 'Tagalog', 'Tagbanwa', 'Buginese', 'Chakma', 'PhagsPa', 'MeeteiMayek', 'LaoPali', 'BatakKaro','BatakPakpak','BatakSima','BatakToba','BatakManda', 'Cham', 'TaiTham', 'Lao', 'Brahmi' ]

LatinScripts = ['IASTLOC', 'RomanColloquial', 'ISOPali', 'RomanKana', 'BarahaNorth', 'BarahaSouth', 'Mongolian', 'SLP1', 'Wancho', 'Mro', 'IASTPali', 'HanifiRohingya','Ariyaka', 'RomanReadable', 'Aksharaa', 'WarangCiti', 'SoraSompeng','WX-kok','Avestan','ISO','IAST','HK','Titus','Itrans','Velthuis','WX','Inter','IPA','TolongSiki','Santali','RussianCyrillic']

依赖项

~1.2–1.8MB
~34K SLoC