avidyalalala / sunpinyin

Automatically exported from code.google.com/p/sunpinyin
0 stars 0 forks source link

请大神指导一下:关于智能纠错那部分代码sunpinyin中d_string_pair_list这个vector中为什么string是用pair存储的?存储的是什么? #308

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
如果您能抽空帮我解决一下问题,我会十分感激的:
static const char * auto_correction_pairs[] = {
    "ign",      "ing",
    "img",      "ing",
    "uei",      "ui",
    "uen",      "un",
    "iou",      "iu",
};这个应该是自动纠错的一个列表.
很明了就是输入如uen然后直接切换到un.

因为要做拼音的智能纠错,我一步一步跟进去看代码,不是很理
解m_correctionPairs
std::string& k = it->first;
std::string& v = it->second;
为什么是两个string(用pair存储的).他们分别代表什么?能否举个
例子.
然后就到这步了:
if (l != strlen(v)) 
{
     // e.g. uen -> un    这里体现了纠错
      m_segs.back().m_len += l - strlen(v);
     m_pystr.resize(m_inputBuf.length());
 }
因为不知道上面k和v分别代表什么,所以这步就看不懂了.
比方说我猜k存的是uen,然后v存的是un,是这种对应关系吗?
假设是这样那上面if中的代码该怎么理解,能否举个例子.

下面的问题我也很迷惑:
1.sunpinyin,ibus-sunpinyin,ibus之间是如何相互调用的?我看了前两部
分的代码,之间有的是相互调用的.
2.网上可以下载的代码全吗?有的是否用了库之类的?
3.因为本人是一个菜鸟,正在做输入法的相关项目.想把这套输�
��法完全搞懂,需要做哪些准备和方法?或者看哪些书.

期待大神的回复.谢谢.

Original issue reported on code.google.com by 1042026...@qq.com on 22 Mar 2013 at 8:31