土耳其语词干分析器

TurkishStemmer的Python项目详细描述


用于python的土耳其语词干分析器

注:大部分文档取自ElasticSearch分析TurkishStemmer项目。

土耳其语的词干分析器算法。

土耳其语词法概论

< Buff行情>

土耳其语是一种凝集性语言,有着非常丰富的词法。 结构。在土耳其语中,通过 附加一系列后缀。例如,单词"doktoruymu_sunuz" 意思是"你曾经是他的医生"。这个词的词干是"doktor"和 它需要三个不同的后缀-su、-ymu_和-sunuz。

来自"雪球说明":

< Buff行情>

单词通常由一个词干和至少两个或三个词缀组成 附加到它。

< Buff行情>

我们可以把土耳其语中的名词后缀分为两组来分析。名词后缀(如 "doktor um"的意思是"我的医生")和名词动词后缀(如"doktor dur" 意思是"是医生")。以名词性动词后缀结尾的单词可以是 用作句子中的动词。有三十多个不同的后缀 分为这两大类后缀。

< Buff行情>

在土耳其语中,后缀根据 订购规则。

来自"土耳其语词缀剥离形态分析仪"的论文:

< Buff行情>

土耳其语在自然语言中有特殊的地位,不仅仅是 完全连接的语言,但也有后缀作为唯一的词缀 类型。这种语言的另一个特点是,懂土耳其语的人可以 即使他/她不知道词干,也可以轻松地分析一个词。

< Buff行情>

土耳其语的语音规则是影响 这个功能。 例如:(任意单词)ler im=>;(任意单词)-ler im "ler"复数后缀,"im"单数人称所有格。

规则

  1. 土耳其语中唯一的词缀类型是后缀。

  2. 复数后缀不能跟在所有格后缀后面。

  3. 土耳其语中的后缀可以有多个同构以提供声音 所附单词中的和声。

  4. 在土耳其语中,每个元音表示一个不同的音节。

  5. 在土耳其语中,单音节词大多是词干本身

  6. 如果一个单词有名词性的动词后缀,它们总是出现在 这个词。它们跟随名词后缀或词干本身 名词后缀的数量

  7. 在土耳其语中,"-lar"后缀可以同时用作名词动词后缀(第三个 人称复数现在时)和作为名词后缀(复数屈折变化)。

  8. 在土耳其语中,单词不以辅音"b"、"c"、"d"和"湫"结尾。 然而,当一个以元音开头的后缀被附加到一个以元音结尾的单词上时 使用"p"、"_"、"t"或"k",最后一个辅音转换为"b"、"c", 分别是"d"或"_"。尾声程序转换最后的辅音 "b"、"c"、"d"或"_"分别回到"p"、"_"、"t"或"k"之后 填塞完成。

  9. < > >

    后缀类

    <表><广告>类 键入< /广告><正文>名词动词后缀屈折派生后缀派生的名词后缀屈折时态和人称动词后缀屈折动词后缀屈折

    后缀同构

    后缀同构是用来创造一个良好的声音和谐。它们不会改变 这个词的意思。如果一个后缀有一个大写字母,那么它有一个 异类。如果后缀的括号中有一个字母,则可以省略。 可能的同构如下:

    <表><广告>字母 变形 < /广告><正文> u ,I,U,ü>c/td>c,_ > a,e d d,t<,我

    名词动词后缀

    <表><广告>< a/a后缀< /广告><正文>–(y)um–太阳–(y)uz–苏努兹–拉尔–总经理–n–k–努兹–dur–外壳–(y)du–(Y)SA–(y)μ_–(Y)肯

    名词动词的后缀转换顺序见参考文献[5]

    名词后缀

    <表><广告>< a/a后缀< /广告><正文>–拉尔–(u)m–(u)muz–(u)n–(u)nuz–(s)u–拉里–(y)u–努–(n)联合国–(y)a–不适用–DA–保密协议–丹–乌干达–(y)洛杉矶–ki–(n)ca

    名词的后缀转换顺序见参考文献[5]

    派生后缀

    <表><广告>< a/a后缀< /广告><正文>–卢克–铜–CUK–拉_–洛杉矶–局域网–加州–lu–苏兹

    最初,我们只处理上面后缀的一小部分 在我们的领域更常见。

    元音和声

    这个例程检查单词的最后两个元音是否服从元音 和谐法则。以下是对土耳其语元音和声的简要描述。

    土耳其语元音和声是一个二维元音和声系统,其中元音 具有两个特征,即正面和圆形。有 每个特征的元音和声规则。

    1. 正面元音和声规则:土耳其语元音分为两类 根据它们的产地。前面产生的元音形成于 嘴的前部('e','i','oe','u')和后面产生的元音是 在靠近喉咙的地方生产("A"、"_"、"O"、"U")。根据元音 和声规则,单词不能同时包含前后元音。这是一个 为什么包含元音的后缀可以采用不同的形式 遵守元音和声。

    2. 圆度的元音和声规则:土耳其语元音分为两类 根据嘴唇是否是圆的。"O"、"O"、"U"和 "ü"是四舍五入的元音,而"a"、"e"、"_"和"i"是没有四舍五入的元音。 根据元音和声规则,如果一个音节的元音是 以下元音也没有发音。如果a的元音 音节是圆形的,以下元音是"a"、"e"、"u"或"ü"。

    3. < > >

      最后一个辅音

      在土耳其语中检测后缀的另一个有趣的例子是 后缀,如果单词以元音结尾,则在 剩下的单词和后缀。这些合并辅音可以是"y"、"n"或 "S"。当一个合并辅音可以插入到后缀之前时, 回复后缀的词尾以可选的辅音开头,辅音被 偏执狂(如(y)um,-(n)ca)。对于这类后缀,如果存在 考虑合并辅音,检查候选词干是否 以元音结尾。

      如果后缀前没有"y"辅音,则只有 后缀(如-um)标记为词干。如果有一个y辅音 在元音之前,"y"被视为一个合并辅音,"y"和 候选后缀(例如,-um)被标记为词干。如果有辅音 就在"y"之前,决定是辅音"y"和候选者 后缀实际上是词干的一部分。在这种情况下,游标不前进 防止堵塞过度。最后一种情况可能发生,特别是当茎 源于另一种语言,如"lityum"(意思是元素 锂)。如果没有检查元音和谐度,这个词将是 词干为"lit",因为"-(y)um"将被视为附加在其上的后缀。但是 根据土耳其语的词形规则,最后一个词是litim, 不是"lit y um",如果"lit"是单词的词干和后缀"-(y)um" 都贴在上面了。所以把"lit"作为词干的检测就结束了 -堵塞。

      合并元音

      与合并辅音类似,有些后缀也有合并元音 从辅音开始。在它们之前可以合并像in'-(u)这样的元音。 附加在以辅音结尾的词干上的muz'后缀。在这样的 大小写,插入一个u元音(‘305’、‘i’、‘u’或‘ü’取决于元音和声) 在词干和真正的后缀之间(例如"-muz"),以便发音。

      一些示例

      <表><广告> 单词/分析 含义/词干 < /广告><正文>Kallerimizdekilerden从我们的城堡里 羽衣甘蓝 羽衣甘蓝 圣科姆乌姆卡斯纳好像我是她的孩子切克-(s)u-(y)mu_-(y)um肠衣切克凯迪里尔带着他们的猫kedi lar-(s)u-(y)la凯迪切克拉尔毫米有人告诉我他们是我的孩子ocuk lar-(u)m-(y)mu_切克Kitab_m_zd_那是我们的书基塔普乌姆兹-(Y)duKITAP

      未来工作

      • 添加更多动词后缀。
      • 添加更多派生后缀。

      参考文献

      1. lucene中使用的土耳其语词干分析器
      2. 雪球实现
      3. 雪球说明
      4. 土耳其语词缀剥离形态分析仪
      5. 潜在客户开发
      6. 元音和谐
      7. 土耳其语后缀
      8. 土耳其语语法
      9. 土耳其语
      10. 格子花纹
      11. 土耳其文本信息检索
      < H2>安装

      将模块文件夹复制到pythonxx/lib/site包或应用程序目录中。

      用法

      >>>fromTurkishStemmerimportTurkishStemmer>>>stemmer=TurkishStemmer()>>>stemmer.stem("okuldakilerden")okul

      贡献

      1. 分叉(http://github.com/<;我的github用户名>;/turkishstemmer python/fork
      2. 创建您的功能分支(git checkout-b我的新功能
      3. 提交更改(git commit-am'add some feature'
      4. 推到分支(git push origin my new feature
      5. 创建新的拉取请求

      许可证

      TurkishStemmer Python是在2.0版Apache软件许可下获得许可的。

      欢迎加入QQ群-->: 979659372 Python中文网_新手群

      推荐PyPI第三方库


热门话题
java我能知道文件的哪个条目正在被修改吗?   多线程Java并发线程   java抓取包含多个页面的多个字母标签的网站   为什么if语句不排除Java中的另一个if语句?   Java可序列化哈希映射到ByteArray以创建blob   JavaEclipseLombokBuilder添加新建议   java将文件路径数组转换为文件数组,并计算每个文件的大小   在Java8流中添加大小数   Bouncy Castle 1.46之前版本的java兼容性问题   无法在AWS设备场上运行安卓 Java Appium测试   java为什么不使用mavenwarplugin将键与“WEBINF/classes/METAINF/MANIFEST.MF”合并?   java如何在引用子类的成员时调用super()   找不到java TestFx无头MonoclePlatformFactory   java AbstractMethodError onClientSessionEvent和“缺少控制媒体的权限”   正则表达式如何使用JAVA在字符串的大写字母前插入空格?   我的Spring安全项目中的java BCrypt(Spring安全)   java在我的网站上查看小程序更新时遇到问题   java如何使用schedule方法