<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>emre şahin's digital garden 🍃 - Linguistics</title>
    <link>https://emresahin.net/categories/linguistics/</link>
    <description>Posts in the Linguistics category</description>
    <language>en</language>
    <managingEditor>contact@emresahin.net (Emre Şahin)</managingEditor>
    <lastBuildDate>Tue, 15 Sep 2026 19:46:32 +0000</lastBuildDate>
    <atom:link href="https://emresahin.net/categories/linguistics/rss.xml" rel="self" type="application/rss+xml"/>
    <item>
      <title>Development Journal, June 9</title>
      <published>2018-06-09T23:42:56+00:00</published>
      <updated>2018-06-09T23:42:56+00:00</updated>
      <author>Emre Şahin</author>
      <pubDate>Sat, 09 Jun 2018 23:42:56 +0000</pubDate>
      <link>https://emresahin.net/dev-journal-14209-35016/</link>
      <guid isPermaLink="true">https://emresahin.net/dev-journal-14209-35016/</guid>
      <description>I began implementing an Ottoman translator using Finite State Transducers via OpenFST . Instead of using ad-hoc algorithms to translate between Ottoman and Turkish, I’ll be creating FSTs. In the past, I have used FOMA and TRmorph as a building block and basis for Ottoman conversion. However, I sa...</description>
      <category>Development</category>
      <category>Linguistics</category>
      <category>Ottoman Turkish</category>
      <category>FST</category>
      <category>OpenFST</category>
      <category>Common Lisp</category>
      <category>mocl</category>
      <category>dervaze</category>
      <content:encoded><![CDATA[<p>I began implementing an Ottoman translator using Finite State Transducers via
<a href="http://www.openfst.org/twiki/bin/view/FST/WebHome">OpenFST</a>. Instead of using ad-hoc algorithms to translate between
Ottoman and Turkish, I’ll be creating FSTs.</p>
<p>In the past, I have used <a href="https://fomafst.github.io/">FOMA</a> and <a href="http://coltekin.net/cagri/trmorph/">TRmorph</a> as a building block
and basis for Ottoman conversion. However, I saw that writing something on top of
a morphological analyzer to convert Ottoman to Turkish requires almost another
morphological analyzer. (This is also true for Turkish to Ottoman conversion as
well, because spelling rules of Ottoman require another layer of FSTs.)</p>
<p>After that initial failure, I decided to write an ad-hoc algorithm that uses
surface-level representations of Turkish and Ottoman. The result has been running in
<a href="http://dervaze.com">dervaze</a> for two years now.</p>
<p>But as it can be observed, it’s slow. I was working to replace it with a C
library that will also be used in mobile applications. I have completed the
dictionary part that’s used to search for words. In this version of the library,
I was using trie structures.</p>
<p>I have decided, however, that using FSTs to translate may be more robust and
formal in the long run. When you use tries, it’s almost like using half of FSTs
without much thought on states. As I’m developing this solo and my main concern
is expandability, converting ad-hoc rules to states seemed easier than writing a
C library.</p>
<p>I will be writing about this experience in the coming days.</p>
<hr>
<p>I’ve learned that there is a specialized Common Lisp implementation for mobile
devices, <a href="https://wukix.com/mocl">mocl</a>.</p>
<p>It should also be possible to write C-compatible shared libraries in CL and use
them in iOS and Android. Although I began to prefer writing libraries in plain C
(instead of any other language), I may switch to CL if there is enough
motivation.</p>]]></content:encoded>
    </item>
    <item>
      <title>A Need for Yet Another Transliteration Alphabet for Ottoman</title>
      <published>2012-09-25T14:00:00+00:00</published>
      <updated>2012-09-25T14:00:00+00:00</updated>
      <author>Emre Şahin</author>
      <pubDate>Tue, 25 Sep 2012 14:00:00 +0000</pubDate>
      <link>https://emresahin.net/12126-3-1424/</link>
      <guid isPermaLink="true">https://emresahin.net/12126-3-1424/</guid>
      <description>The Ottoman Text Archival Project has its own reversible transcription system. However, for word labels, this is an overkill and requires too much work from experts. I’m looking for a one-to-one mapping between the different visual elements of a word and its representation in UTF-8. The labels sh...</description>
      <category>Dervaze</category>
      <category>Linguistics</category>
      <category>Typography</category>
      <category>transliteration</category>
      <category>Ottoman</category>
      <category>visual encoding</category>
      <category>UTF-8</category>
      <category>alphabet</category>
      <category>transcription</category>
      <content:encoded><![CDATA[<p>The Ottoman Text Archival Project has its own reversible transcription
system. However, for word labels, this is an overkill and requires
too much work from experts.</p>
<p>I’m looking for a one-to-one mapping between the different <em>visual</em> elements
of a word and its representation in UTF-8. The labels should be simple
to remember, yet distinctive enough to represent visual variations of
words.</p>
<p>I’m considering creating letter+digit codes. The letter part will reflect the
most similar sound, and the digit will reflect the visual variation. In this
case, I need a Latin letter for each letter in the Ottoman alphabet, but
there are not enough letters in the standard Turkish alphabet to denote all
the letters of Ottoman. So, how can I solve this?</p>]]></content:encoded>
    </item>
    <item>
      <title>A Regular Conversion Algorithm Between Turkish and Ottoman</title>
      <published>2012-09-24T14:00:00+00:00</published>
      <updated>2012-09-24T14:00:00+00:00</updated>
      <author>Emre Şahin</author>
      <pubDate>Mon, 24 Sep 2012 14:00:00 +0000</pubDate>
      <link>https://emresahin.net/12125-3-3162/</link>
      <guid isPermaLink="true">https://emresahin.net/12125-3-3162/</guid>
      <description>Modern Turkish spells all words of Turkish, Arabic, or Farsi origin according to their pronunciation. When it comes to converting from one system to another, this creates a problem that can be addressed with the aid of regular expressions. For example, in Ottoman, a word is spelled as mnwr (mim-n...</description>
      <category>Dervaze</category>
      <category>Linguistics</category>
      <category>NLP</category>
      <category>Turkish</category>
      <category>Ottoman</category>
      <category>transliteration</category>
      <category>regular expressions</category>
      <category>dictionary search</category>
      <category>handwriting recognition</category>
      <category>spelling conversion</category>
      <content:encoded><![CDATA[<p>Modern Turkish spells all words of Turkish, Arabic, or Farsi origin according to
their pronunciation. When it comes to converting from one system to another,
this creates a problem that can be addressed with the aid of regular
expressions.</p>
<p>For example, in Ottoman, a word is spelled as <em>mnwr</em> (mim-nun-vav-ra), following the Arabic
orthography, but in Modern Turkish, the spelling reflects the pronunciation as <em>münevver</em>.
Since a one-to-one mapping is not possible between these two writing systems, a set of
<em>possible Ottoman spellings</em> must be produced using a regular expression.</p>
<p>When the parser sees <em>münevver</em>, it should convert this to a pattern like
<code>mv?nh?(a1)?ww?h?r</code>. This pattern produces a set of strings, where <code>mvnha1vvhr</code>
might be the longest and <code>mnwr</code> the shortest. By performing a dictionary search,
the system can verify that there is a word in Ottoman spelled as <em>mnwr</em>, thus
selecting it as the correct spelling.</p>
<p>The dictionary in our study consists of word labels. The system will look up a set
of handwritten word images after this label lookup and search for these
images in the document. It can also <em>create</em> a set of candidate images from the
regular expression by rendering each candidate spelling.</p>]]></content:encoded>
    </item>
  </channel>
</rss>
