我在字符识别和机器学习方面完全是个初学者。
我想编写一个能够处理以下输入的程序:
- 一个汉字(可以是像素或矢量格式),例如:
- 前述汉字的分解,即上面的例子为:
汉字的分解总是由三部分组成:两个其他字符和描述这两个字符如何形成初始字符的模式(称为“组合类型”)。在上面的例子中,组合类型是“水平对齐”。
给定这样的输入,我希望我的程序能够指出初始字符中的哪些像素或轮廓属于其分解中的哪个子字符。
从哪里开始呢?
回答:
嗯,我不能说我提供了完整的答案,但请考虑以下几点:
1) 阅读关于Google翻译应用程序如何工作的论文。你知道,当你用iPhone的摄像头对准文字时,它会立即翻译文字(甚至保留字体!)。它支持中文语言,所以你可以看看他们是否解决了类似的任务,以及他们是如何做的。
2) 另一个需要回答的大问题是如何准备你的输入数据。你需要至少提供一些输入数据——即至少一些字符的分解。尝试手动对几个字符进行分解,并尝试总结你到底在做什么——这将帮助你更好地阐明你希望你的算法做什么。
3) 尝试使用你的#2中的数据来训练一个深度神经网络。使用带有卷积层的网络。用RBM(受限玻尔兹曼机)进行预训练。之后,仔细观察生成的神经网络。不要期望得到任何好的结果,但观察ANN层将帮助你理解网络从数据中学到了什么,并可能为你提供一些关于下一步该怎么做的见解。