我有一些糟糕的OCR软件生成的文字。
输出包含单词和以空格分隔的字符的混合,这些字符应该被分组为单词。例如,
Expr e s s i o n Syntax
S u m m a r y o f T e r minology
应该是
Expression Syntax
Summary of Terminology
哪些算法可以将字符组合成单词?
如果我使用Python,C#,Java,C或C ++编程,哪些库提供了算法的实现?
感谢。
答案 0 :(得分:4)
最小方法:
更复杂,矫枉过正的方法:
在没有空格的情况下分割单词的问题是通常在没有空格的情况下编写的语言中的现实问题,例如中文和日文。我熟悉日语,所以我主要是参考这个。
典型方法使用字典和序列模型。训练模型以学习标签之间的过渡属性 - 词性标注与词典结合用于计算不同潜在位置分割单词的相对可能性。然后,使用(例如)维特比算法解决整个句子的最可能的分裂序列。
如果您只是清理OCR数据,那么创建这样的系统几乎肯定会有点过分,但如果您感兴趣,可能值得研究。
一个示例案例,其中更复杂的方法将起作用,而简单的方法不会:
Playforthefunofit
Play forth efunofit
(forth
长于for
)Play for the fun of it
(forth efunofit
是低频 - 即非自然 - 过渡,而for the
则不是)通过在字典中添加常见的短字序列作为单位,您可以通过简单的方法解决问题。例如,将forthe
添加为字典单词,并在后处理步骤中将其拆分。
希望有所帮助 - 祝你好运!