2011-09-28 67 views
2

我有一组对字符串,例如:推导字符串转换规则

ABBA - ABA, 哈哈 - 啊哈, 咩 - BA, EXB - ESP, XA - ZA

该对中的第二个(右)字符串与第一个(左)字符串有些相似。

也就是说,来自第一个字符串的字符可以由无,本身或小字符集中的字符表示。

对于这种字符到字符映射没有简单的规则,虽然有一些模式。

给定数千个这样的字符串对,我如何推导出这样的转换规则,如果我将它们应用到左边的字符串,我会得到正确的字符串?

该解决方案可以是近似的,对80-95%的字符串正确工作。

你会推荐使用某种遗传算法吗?如果是这样,怎么样?

+0

这里完全不清楚你在问什么。像这样的陈述“也就是说,第一个字符串中的字符可以表示为无,本身或小字符集中的字符”在这种情况下没有明确说明。 – RBarryYoung

+0

您的示例使其看起来像使用字符串对本身作为映射一样简单。 –

+0

@RBarryYoung:我只是想强调一下,字符映射没有简单的字符,左边的同一个字符可以用右边的不同字符表示,具体取决于周围的字符或可能是整个左边的字符串。问题是如何在给定一组这些字符串的情况下找到左字符串到右字符串的转换/规则。 –

回答

0

如果您可以对齐字符或字符组,您可以制定表格,说明aa => a,bb => z等等。如果你有这样的表格,你可以使用http://en.wikipedia.org/wiki/Dynamic_time_warping来对齐字符。因此,一种方法是猜测对齐(例如一对一,仅仅作为一个起点,或者只是对齐每个序列的第一个和最后一个字符),从中找出一个转换表,使用DTW获得一个新的对齐,工作出一个修改后的翻译表,并以这种方式迭代。也许你可以用足够的数学来证明这一点,以证明这种通过增加的最优性或可能性有一定程度的上升,达到局部最大值。

可能有某种方法可以通过对隐马尔可夫模型进行建模来同时生成两个序列,然后从该模型导出规则,但除非我已经熟悉HMM并且有软件才能使用,否则我不会选择这种方法作为我很乐意修改的起点。

+1

论文如http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.101.9855&rep=rep1&type=pdf表明,这是一个棘手的问题,值得积极研究。 – mcdowella

0

您可以使用文本到语音来创建声波。然后将声波与其他声波进行比较,并将其与百分比进行匹配。

这是我的理论谷歌如何拥有如此先进的拼写检查器。

+0

一个简单的拼写检查器只需要一个单词列表。不知道Google的先进程度如何,但Goggle拥有大量数据并能够快速查找。匹配声波不是我需要或想要的。这是我需要的更多音素转换的字形,我需要它,而不是将每个“单词”与其“发音”一起存储。 –