使用马尔可夫模型将全部大写字母转换为混合大小写和相关问题

hip*_*ail 5 unicode nlp ambiguity n-gram markov-models

我一直在考虑使用马尔可夫技术将缺失的信息恢复为自然语言文本.

  • 将全部大写文本恢复为大小写混合.
  • 将重音符号/变音符号恢复为应具有它们但已转换为纯ASCII的语言.
  • 将粗略的拼音转换回原生字母.

这似乎是最难困难的顺序.基本上,问题在于解决基于上下文的歧义.

我可以使用维基词典和维基百科作为语料库,使用n-gram和隐马尔可夫模型来解决模糊问题.

我是在正确的轨道上吗?是否已经有一些服务,库或工具用于此类事情?

例子

  • 乔治在公共汽车里丢失了他的SIM卡⇨乔治在灌木丛中丢失了他的SIM卡
  • tantot il rit a gorgedeployee⇨antanttilritàgorgedéployée

Sto*_*ken 2

我将尝试详细说明如何实现这些目标。

大写

这与命名实体识别相当接近,并且是“序列标记问题”的一个示例。专有名词最初应大写,缩写词的组织名称应全部大写,还有其他示例不属于这些类别。在我看来,它比 NER 更难,因此基于字典的简单方法可能不是理想的解决方案。

如果您要使用隐马尔可夫模型,这相当于让 HMM 的“隐藏”状态为 [lowerCase、initCaps、allCaps] 并对您认为正确的一些数据进行训练(例如维基百科,但还有许多其他来源)也)。然后,您可以推断您不确定大写字母是否正确的单词的隐藏状态。那里有很多 HMM 库,我相信您可以找到一个适合您的需求。我想说尝试 HMM 是一个不错的初始选择。

非 ASCII 字符

正如你所猜测的,这是一个更棘手的问题。如果你尝试在单词级别使用隐马尔可夫模型来做到这一点,你将拥有大量的隐藏状态,每个重音单词都有一个隐藏状态,这可能无法训练。这个问题在角色级别更容易处理,但如果您只考虑前一个角色,您会丢失大量上下文。如果您开始使用 n-gram 而不是字符,您的缩放问题就会再次出现。简而言之,我认为这个问题不像前一个问题,因为标签数量太大,无法将其视为序列标记问题(我的意思是你可以,只是不切实际)。

我没有听说过这方面的研究,再说一遍,我不是专家。我最好的猜测是对您感兴趣的语言使用通用语言模型。您可以使用它来给出该语言中句子的概率。然后,您可以尝试替换可能的重音字符以给出这些句子的概率并采取最有可能的,或者对差异使用一些阈值,或者类似的东西。您可以在某种语言的大型语料库上相当轻松地训练 n-gram 语言模型。

我不知道这是否真的有效,无论是在准确性还是效率方面。我对这个特定问题没有直接经验。

音译

老实说,不知道。我不知道你在哪里可以找到数据来制作你自己的系统。经过简短的搜索,我找到了Google Transliteration服务(带 API)。也许它可以满足您的需求。我什至没有足够的使用其他脚本的语言的经验来真正了解它在做什么。