<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: losdwind</title>
    <description>The latest articles on DEV Community by losdwind (@losdwind).</description>
    <link>https://dev.to/losdwind</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4231763%2F5cdcafb0-aa90-4730-8c4a-0f0d52f6116f.png</url>
      <title>DEV Community: losdwind</title>
      <link>https://dev.to/losdwind</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/losdwind"/>
    <language>en</language>
    <item>
      <title>Why We Trained 0.8B and 4B Transliteration Models for Mixed-Script Input Methods (No Mode-Switching)</title>
      <dc:creator>losdwind</dc:creator>
      <pubDate>Sat, 07 Nov 2026 09:00:13 +0000</pubDate>
      <link>https://dev.to/losdwind/why-we-trained-08b-and-4b-transliteration-models-for-mixed-script-input-methods-no-mode-switching-486a</link>
      <guid>https://dev.to/losdwind/why-we-trained-08b-and-4b-transliteration-models-for-mixed-script-input-methods-no-mode-switching-486a</guid>
      <description>&lt;p&gt;If you write software documentation, Slack messages, or bilingual notes across two scripts—say Simplified Chinese + English, Japanese + English, Hindi + English, or Arabic + English—you already know the mode-switching tax of traditional input method editors (IMEs).&lt;/p&gt;

&lt;p&gt;Every time an English identifier (&lt;code&gt;README&lt;/code&gt;, &lt;code&gt;useEffect&lt;/code&gt;, &lt;code&gt;roadmap&lt;/code&gt;, &lt;code&gt;v1.0.22&lt;/code&gt;) appears in the middle of a Pinyin or Romaji sentence, a conventional character-by-character IME forces you to toggle layouts (&lt;code&gt;Ctrl+Space&lt;/code&gt; or the Globe key), pick candidates, toggle back for the English token, and toggle again.&lt;/p&gt;

&lt;p&gt;On the other hand, general-purpose LLM translators fail in the opposite direction: if you feed them a mixed draft like &lt;code&gt;jintian yao finish README&lt;/code&gt; or &lt;code&gt;kyou wa Tokyo de meeting ga arimasu&lt;/code&gt;, they translate the entire sentence into a single language instead of preserving intentional bilingual code-switching.&lt;/p&gt;

&lt;p&gt;That gap is why we built &lt;strong&gt;&lt;a href="https://unimetype.com" rel="noopener noreferrer"&gt;UnimeType&lt;/a&gt;&lt;/strong&gt;—a cross-platform input method and set of browser converters—and open-sourced our specialized &lt;strong&gt;&lt;a href="https://huggingface.co/UnimeType" rel="noopener noreferrer"&gt;Transliteration 2.0 (&lt;code&gt;0.8B&lt;/code&gt; &amp;amp; &lt;code&gt;4B&lt;/code&gt;) models&lt;/a&gt;&lt;/strong&gt; under Apache-2.0.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. The Core Problem: Transliteration != Translation
&lt;/h2&gt;

&lt;p&gt;In a mixed-script input workflow, the user types phonetic Latin text on a single QWERTY layout:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Chinese (Pinyin + English)&lt;/strong&gt;: &lt;code&gt;women xiazhou release v2.1, qing xian check PR&lt;/code&gt; → &lt;code&gt;我们下周 release v2.1，请先 check PR&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Japanese (Romaji + English)&lt;/strong&gt;: &lt;code&gt;kyou wa Tokyo de team meeting ga arimasu&lt;/code&gt; → &lt;code&gt;今日は Tokyo で team meeting があります&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hindi (Hinglish + English)&lt;/strong&gt;: &lt;code&gt;kal morning mein deployment check karna hai&lt;/code&gt; → &lt;code&gt;कल morning में deployment check करना है&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Arabic (Arabizi + English)&lt;/strong&gt;: &lt;code&gt;ana fil meeting dilwa2ti, hab3at el PR ba3dein&lt;/code&gt; → &lt;code&gt;أنا في ال meeting دلوقتي، هبعت ال PR بعدين&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Russian (Translit + English)&lt;/strong&gt;: &lt;code&gt;davai zavtra obsudim release plan&lt;/code&gt; → &lt;code&gt;давай завтра обсудим release plan&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A model serving an input method has three hard constraints that general chat LLMs violate out of the box:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Boundary preservation&lt;/strong&gt;: Recognized English words, code identifiers, flags, URLs, and &lt;code&gt;@handles&lt;/code&gt; must stay in Latin script unless they are phonetic syllables of the target script.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ambiguous homophone disambiguation in context&lt;/strong&gt;: Token-level syllables like &lt;code&gt;you&lt;/code&gt; (English pronoun &lt;em&gt;you&lt;/em&gt; vs. Chinese Pinyin &lt;em&gt;有/又&lt;/em&gt;), &lt;code&gt;main&lt;/code&gt; (English &lt;em&gt;main&lt;/em&gt; vs. Hindi &lt;em&gt;मैं&lt;/em&gt;), or &lt;code&gt;de&lt;/code&gt; / &lt;code&gt;to&lt;/code&gt; (English prepositions vs. Chinese/Japanese particles) can only be resolved by looking at the surrounding clause.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sub-second latency &amp;amp; zero conversational chatter&lt;/strong&gt;: An IME cannot wait 3 seconds for a chain-of-thought reasoning block or strip conversational filler like &lt;em&gt;"Here is your converted text:"&lt;/em&gt;.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  2. Training &lt;code&gt;UnimeType/Transliteration-2.0-0.8B&lt;/code&gt; and &lt;code&gt;4B&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;To make full-sentence mixed-script conversion fast enough for local desktop inference (via LM Studio / &lt;code&gt;llama.cpp&lt;/code&gt; / MLX) and low-latency cloud routing, we fine-tuned two model sizes on &lt;code&gt;Qwen/Qwen3.5&lt;/code&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://huggingface.co/UnimeType/Transliteration-2.0-0.8B" rel="noopener noreferrer"&gt;UnimeType/Transliteration-2.0-0.8B&lt;/a&gt;&lt;/strong&gt; (&lt;a href="https://huggingface.co/UnimeType/Transliteration-2.0-0.8B-GGUF" rel="noopener noreferrer"&gt;GGUF&lt;/a&gt; · &lt;a href="https://huggingface.co/UnimeType/Transliteration-2.0-0.8B-Safetensors" rel="noopener noreferrer"&gt;Safetensors&lt;/a&gt;): Ultra-lightweight model (~500–800 MB quantized) designed for instant local CPU/GPU inference on laptops.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://huggingface.co/UnimeType/Transliteration-2.0-4B" rel="noopener noreferrer"&gt;UnimeType/Transliteration-2.0-4B&lt;/a&gt;&lt;/strong&gt; (&lt;a href="https://huggingface.co/UnimeType/Transliteration-2.0-4B-GGUF" rel="noopener noreferrer"&gt;GGUF&lt;/a&gt; · &lt;a href="https://huggingface.co/UnimeType/Transliteration-2.0-4B-Safetensors" rel="noopener noreferrer"&gt;Safetensors&lt;/a&gt;): High-accuracy 4B model for complex code-switched sentences, regional dialects (Egyptian/Levantine/Gulf Arabizi), and polyphonic kanji selection.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Both models use a compact &lt;strong&gt;Short-Protocol (&lt;code&gt;v2.1&lt;/code&gt;)&lt;/strong&gt; system prompt with thinking disabled (&lt;code&gt;enable_thinking=False&lt;/code&gt;) so the first output token is emitted immediately.&lt;/p&gt;

&lt;p&gt;We published our full benchmark methodology—covering 900+ multi-script test cases, homophone collision traps, and English-retention stress tests—in &lt;strong&gt;&lt;a href="https://unimetype.com/blog/how-we-evaluate-transliteration-models" rel="noopener noreferrer"&gt;How We Evaluate Transliteration Models&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Try It in the Browser (Zero Install) or Locally
&lt;/h2&gt;

&lt;p&gt;We recently shipped four free, no-sign-in browser converters powered by the same conversion pipeline so you can test full-sentence mixed-script conversion directly in the browser:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://unimetype.com/tools/pinyin-to-chinese" rel="noopener noreferrer"&gt;Free Pinyin to Chinese Sentence Converter&lt;/a&gt;&lt;/strong&gt; (see also the &lt;a href="https://unimetype.com/latin-to-chinese-keyboard" rel="noopener noreferrer"&gt;Latin to Chinese Keyboard guide&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://unimetype.com/tools/romaji-to-hiragana" rel="noopener noreferrer"&gt;Free Romaji to Hiragana &amp;amp; Kanji Converter&lt;/a&gt;&lt;/strong&gt; (see also the &lt;a href="https://unimetype.com/romaji-keyboard" rel="noopener noreferrer"&gt;Japanese Romaji Keyboard guide&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://unimetype.com/tools/english-to-hindi" rel="noopener noreferrer"&gt;Free Hinglish (English to Hindi Devanagari) Converter&lt;/a&gt;&lt;/strong&gt; (see also the &lt;a href="https://unimetype.com/latin-to-hindi-keyboard" rel="noopener noreferrer"&gt;Latin to Hindi Keyboard guide&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://unimetype.com/tools/translit-to-cyrillic" rel="noopener noreferrer"&gt;Free Russian Translit to Cyrillic Converter&lt;/a&gt;&lt;/strong&gt; (and the &lt;a href="https://unimetype.com/english-to-arabic-typing-keyboard" rel="noopener noreferrer"&gt;English to Arabic Arabizi Keyboard guide&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you want system-wide conversion inside any native app (VS Code, Slack, Notion, WeChat, browsers, terminals), along with in-place &lt;strong&gt;&lt;a href="https://unimetype.com/ai-keyboard-polish-writing" rel="noopener noreferrer"&gt;AI Polish Writing&lt;/a&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;a href="https://unimetype.com/ai-text-explainer" rel="noopener noreferrer"&gt;AI Text Explainer&lt;/a&gt;&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Download native clients (macOS, Windows, iOS, Android, Linux, ChromeOS)&lt;/strong&gt;: &lt;a href="https://unimetype.com/download" rel="noopener noreferrer"&gt;https://unimetype.com/download&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;macOS Homebrew Tap&lt;/strong&gt;: &lt;code&gt;brew tap losdwind/tap &amp;amp;&amp;amp; brew install --cask unimetype&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local offline inference guide (LM Studio + GGUF)&lt;/strong&gt;: &lt;a href="https://unimetype.com/docs/ai-service-models-and-credits" rel="noopener noreferrer"&gt;AI Service Models &amp;amp; Local Setup Docs&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Feedback on tricky bilingual boundary cases or host-editor quirks is very welcome!&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>machinelearning</category>
      <category>softwaredevelopment</category>
    </item>
  </channel>
</rss>
