波兰语给笔记本电脑用的是买猫那个词尾,词典说这是错的,用户就这么搜
本文目录
- 为什么波兰语用户搜狗粮和搜吸尘器,用的不是同一套词尾?
- 一家波兰宠物站的零结果日志
- 同一个动词后面,两个名词的结尾不一样
- 这不是变格类别的差异
- 判据是先问它是不是活的
- 语法上的活,跟生物学上的活是一回事吗?
- 语法把这条线画在了另一个位置
- 波兰语还多分了一层男性人称
- 已经不动了的东西反而还算活的
- 这条线是被记下来的,不是被推出来的
- 哪些品类词会跨到有生那一边?
- 电子产品是最近几十年跨过去的一批
- 汽车品牌和货币早就在那边了
- 食品饮料里有一半在摇摆
- 判断办法只有一个,去查真实语料
- 词典给的形态和用户打的形态不一致时,该收哪一个?
- 词典把两种都记下来了,还标了身份
- 搜索框里的分布跟词典的排序相反
- 跟着词典走这条通用策略在这里失效
- 两个形态都要进表,但落地位置不同
- 品牌名和型号会不会也被拉进有生变格?
- 外来品牌名进句子就跟着变
- 型号和字母数字组合是另一回事
- 品牌名的这一格由用户填,不由你填
- 站内搜索必须认这些形态
- 俄语和捷克语的这条线,画在同一个位置吗?
- 俄语的线画得比波兰语保守
- 捷克语在单复数上的表现不一样
- 乌克兰语要跟俄语分开记
- 跨语言复用这张表的风险
- 这一层会在站内搜索和筛选器上错成什么样?
- 零结果里藏着最贵的那批查询
- 筛选器的取值命名会跟着一起错
- 词干还原能不能把两个形态并回去
- 关键词表要为这件事多加哪几列?
- 一个布尔字段不够用
- 规范形态和口语形态各占一列
- 复核触发条件要写清楚
- 一套两天能跑完的排查流程
- 第一步,把品类词按有生性分三堆
- 第二步,拿语料验摇摆的那一堆
- 第三步,把结论写成开发能执行的规则
- 第四步,验收只看三个数
- 哪些事不归这一层管
- 格系统本身不在这篇里
- 锚文本的变形是另一篇的事
- 引擎那一半交给平台层
- 常见问题解答
- 不懂波兰语,怎么自己判断一个词该走哪一套形态?
- 只做匹配层的覆盖,页面上完全不用口语形态,行不行?
- 词干还原器能不能一次性解决这个问题?
- 这件事在广告投放那一侧会不会也有影响?
- 宠物之外的品类,需要花同样的功夫吗?
- 怎么跟不懂这门语言的开发解释这个问题?
- 这批形态会不会随着时间变化,做完就得一直维护?
- 权威参考资料
摘要:斯拉夫语里名词的宾格形式不由这个词长什么样决定,而由它指的东西算不算活的决定。麻烦在于,语法回答这个问题的方式跟生物学不一样:波兰语口语把笔记本电脑、汽车品牌、香烟都归进活的那一边,词典说这是错的,用户就这么搜。宠物品类更极端,整张关键词表的核心词全是有生名词,等于全表都要换一套形态。本文讲清这条线画在哪、哪些品类词正在跨界、词典形态和口语形态各该放页面哪个位置、站内搜索和筛选器会错成什么样,以及关键词表该为这件事多加哪三列。
为什么波兰语用户搜狗粮和搜吸尘器,用的不是同一套词尾?
一家波兰宠物站的零结果日志
有个客户做波兰市场的宠物用品,主营狗粮、猫砂、牵引绳这几类。
词表是照着标准流程建的:工具导出、按量排序、母语同事过了一遍,六百多条。
上线八个月,页面收录没问题,外链也在做,可品类页的自然流量一直卡在一个很低的水平上。
保哥让他们把站内搜索日志导出来看,发现零结果查询占比高得离谱,而且集中在几个最核心的词上。
更奇怪的是,这些零结果查询看上去跟词表里的词几乎一模一样,只是最后一两个字母不同。不是拼错,是同一个词的另一个形态,而且用户打得非常一致,成千上万次都是那一种。
把这批查询按品类分开之后,规律就出来了:出问题的全是宠物本身相关的词,而配件、器具、清洁用品这几类一点事都没有。同一个站、同一套模板、同一批人做的词表,偏偏只有一半的品类在漏水,这就说明问题不在流程上,在语言的某一条规则上。
还有一个细节当时被忽略了:这批零结果查询的时间分布跟别的查询不一样,它们更集中在晚上和周末。这说明打这些词的是真正在家里养宠物的人,不是白天顺手比价的那一批,商业价值只会更高不会更低。
同一个动词后面,两个名词的结尾不一样
把两组查询摆在一起看,差别一眼就能看出来。
用户搜买猫的时候,猫这个词是一种形态;搜买吸尘器的时候,吸尘器那个词保持原样没变。
两句话的句法结构完全相同,都是同一个动词加一个宾语,可宾语的形态一个变了一个没变。
这不是用户随手打的两种习惯,波兰语里这两种写法各自都是唯一正确的,写反了母语者立刻觉得别扭。
换句话说,你的关键词表如果只收了词典原形,那么在宠物这一半品类上,你收的形态跟用户实际打的形态从第一天起就不是同一个。跟着的是一整批查询悄悄落空,而报表上什么异常都看不到,因为这些词的搜索量本来就统计在另一个形态底下。
这里还有一条容易被跳过的确认:先排除掉输入法和键盘的因素。变音符号打不打、大小写对不对,这些都是另一类问题,而本文这一类差异出现在词尾且完全没有变音符号参与,两者的排查路径完全不同,混在一起会白绕一圈。
这不是变格类别的差异
第一反应通常是:会不会这两个词属于不同的变格类别,所以词尾表本来就不同。
不是。这两个词的性别相同、词尾相同、结尾的辅音也是同一类,按任何一本语法书的分类它们都归在同一组。
真正把它们分开的是另一个维度,这个维度不看词本身,看这个词指的是什么东西。
这一点很值得停一下。关键词表里其它所有的形态规则,你都可以拿词形算出来:看词尾是什么、看重音在哪、看它归哪一类。波兰语七个格那一篇整理的就是这一类可计算的规则。
只有这一条不行。要用上这一条规则,你必须先回答一个跟语法无关的问题:它是活的吗。这是关键词表里唯一一个取值由词指的东西决定、而不是由词本身决定的语法维度,也是唯一一个你没法靠看字符串算出来的维度。
这里可以顺手记一条判别法:如果两个词在语法书里归在同一组,实际形态却不同,那差异一定来自某个不看词形的维度。这类维度在任何语言里都很少,但只要存在一个,靠算法就一定推不出来。
判据是先问它是不是活的
把这条规则说白了就一句话:宾格用哪个形态,取决于这个名词指的东西在语法上算不算活的。
算活的,宾格就跟属格长得一样;不算活的,宾格就跟主格长得一样。
猫、狗、仓鼠、鹦鹉全部算活的,所以宠物品类的核心词整批走第一条路。
吸尘器、碗、垫子、笼子全部算不活的,所以配件和器具那一半走第二条路,形态跟词典原形一致,词表正好收对了。
于是同一个站上会出现一个很有意思的分布:品类树上有一半的分支需要额外的形态,另一半完全不需要。而这条分界线不在你的商品分类体系里,也不在任何一份技术文档里,它在语言那一头,按东西活不活来切。
顺带说一句,这个分布对排期反而是好消息。你不需要重做整张词表,只要把品类树上活物那半边挑出来单独处理,工作量立刻从六百条缩到一百多条,一个下午就能收口。
语法上的活,跟生物学上的活是一回事吗?
语法把这条线画在了另一个位置
如果这条线跟生物学重合,那这件事就好办了,写个规则表就完了。
问题在于它不重合,而且不重合的地方恰好落在电商最常卖的那些东西上。
语法上的生命度是一个形态句法范畴,它记录的是这个词在历史上被怎么用,不是这个东西在自然界里是什么。
通用依存标注体系把它单列成一个特征,正是因为它必须靠标注而不能靠推理得到。
这里有一个反直觉的推论:正因为它是历史沉淀下来的,所以它会漂移。今天算不活的东西,二十年后可能就算活的了,而这个变化不会有任何人发公告通知你。
这个特征还带来一个组织上的后果:因为它是标注出来的,所以它可以被外包,也可以被验收。你不需要在团队里养一个懂斯拉夫语形态学的人,你需要的是一份标好的清单和一条什么时候重标的规则。
波兰语还多分了一层男性人称
波兰语在这件事上比俄语更细,它把阳性名词又切成了三档。
第一档是男性人称,指人的阳性名词单独算一类;第二档是有生但不指人,动物属于这一档;第三档是无生。
三档在单数和复数上的表现还不一样,复数那一层的分界线跟单数不在同一个位置。
对做SEO的人来说,三档里最要紧的是第二档,因为宠物、活体动物、以及一大批被口语拉过去的物品都落在这里。
值得提一句的是,第一档在电商上也不是完全用不上。招聘页、服务页、以及所有写给人看的角色词都会踩到它,比如兽医、训练师、寄养人这些词在句子里的形态跟商品词不是一套。这一层跟作者署名与资质信号那一篇讲的人名处理是同一片区域。
三档这件事在实操上还有一层影响:工具导出的词表通常只给一个原形,你没法从原形看出它属于哪一档。所以分档这一步只能人工做一次,做完之后才谈得上自动化,顺序反过来的团队会在脚本上白花两周。
已经不动了的东西反而还算活的
最能说明这条线跟生物学无关的,是几个边界例子。
俄语里表示死者的那个词在语法上算有生,尽管它指的东西按任何标准都不再活着。
玩偶、棋子里的某些词也归在有生那一边,因为它们在语言里长期被当成人来说。
反过来,某些确实活着的东西在语法上却算无生,微生物这一类词在不同语言里的归属并不一致。
所以正确的说法不是这门语言把活的和死的分开了,而是这门语言在几百年里逐渐攒出了一份名单,名单上的词走一条路,名单外的词走另一条路。名单的成因有语义的成分,但绝不只有语义。
这几个边界例子的价值不在于你会卖玩偶或者棋子,而在于它们能一次性说服团队:这条线不能靠常识判断。只要有人拿这两个例子问一句那按常识该归哪边,讨论就会自动转向去查语料。
这条线是被记下来的,不是被推出来的
既然是名单,那处理办法就跟处理规则完全不同。
规则可以写进代码,名单只能查表,而且要定期更新。
这跟颜色范畴那一篇的结论有一处相通:凡是取值由语言的历史约定决定的维度,交付物都是一张要维护的表,不是一段能跑的逻辑。
差别在于颜色那张表是多对多的映射,这张表是一列布尔值加一列例外说明,结构简单得多,但更新频率反而更高。
还有一个实操上的好消息:这份名单里跟你有关的部分非常有限。全站六百条词里真正需要标这一列的可能只有一百多条,其中会引起争议的不超过二十条,两小时就能过一遍。
更新频率高这一点有个具体原因:名单的增长方向是单向的,新词不断被拉进有生那一边,很少有词反过来跑出去。所以你每次复核要找的不是变动,是新增,这让复核这件事变得机械而且可交付。
哪些品类词会跨到有生那一边?
电子产品是最近几十年跨过去的一批
最典型的一族是电子产品,尤其是随身设备。
波兰语口语里买笔记本电脑这句话,笔记本电脑那个词用的是有生形态,跟买猫是同一套词尾。
手机、平板、路由器在口语里也大量出现同样的形态。
这批词的共同点是它们都是近几十年才进入这门语言的外来词,而新词在归属上本来就不稳定。
更有意思的是,这个现象在年轻使用者那里比在年长使用者那里更普遍,也就是说它还在往前走,不是残留而是趋势。这一层跟口语短词那一篇的方向一致:口语先跑,规范在后面追。
这里还有个可以直接用的信号:一个词跨界的程度跟它进入这门语言的时间长短成反比。越新的外来词越不稳定,越老的外来词已经定档。所以新品类上线时这一层的风险最高,而那恰好是没人有精力做语言核对的时刻。
汽车品牌和货币早就在那边了
另外几族跨界得更早,早到已经被词典正式收录。
汽车品牌名在句子里当名词用时按有生变格,我有一辆某某牌车这句话,品牌名带的是有生词尾。
货币单位、香烟品牌、部分舞蹈名称也在同一份名单上。
这几族的共同点是它们都经常出现在口语的拥有和购买句式里,也就是最高频的那几个句型。
对做电商的人来说,这里有个很直接的推论:越是高频出现在买和有这两个动词后面的词,越容易被拉进有生那一边。而那批词恰好就是你的核心商业词,一个都躲不开。
这一族对做本地化的人还有一个提醒:它们大量出现在用户评论和社区帖子里,也就是你最可能拿来做语料的那批文本。如果你从社区里挖词,挖出来的默认就是有生形态,而你的商品库里存的是另一个,两边对不上很正常。
食品饮料里有一半在摇摆
第三类最麻烦,因为它没定下来。
某些食品名称在语料里两种形态都有相当的出现次数,比例接近对半开。
词典对这一批的处理方式是两个形态都列出来,不判对错。
这种摇摆状态对关键词工作反而是最容易出事的,因为你无论选哪一个都会漏掉将近一半的查询。
处理办法只有一个:摇摆的这一批不做取舍,两个形态全部进匹配层。展示层可以只选一个,但匹配层做取舍等于主动扔掉一半的量,而这一半没有任何东西能替你补回来。
摇摆状态还有一个容易被误判的地方:它在不同体裁里的比例不一样。新闻语料里规范形态占优,论坛语料里口语形态占优,而搜索行为更接近论坛那一头。所以查语料时要留意语料的体裁构成,别拿新闻的比例去推搜索的比例。
判断办法只有一个,去查真实语料
既然规则推不出来,那就只剩下查。
波兰语国家语料库提供公开的检索界面,把两个形态分别丢进去看出现次数,几分钟就有结论。
俄语那边有对应的国家语料库,检索方式类似,也能按体裁和年代拆分。
这一步不需要你懂这门语言,你要做的只是输入两个字符串然后比较两个数字。
需要注意的是查询要限定在同一个句法位置上,否则数字会被别的格的形态污染。稳妥的做法是连动词一起查,把买和有这两个动词分别加在前面各查一遍,得到的分布才是可信的。
查语料还有一个额外收获:出现次数本身就是一个粗糙的需求信号。某个形态在语料里几乎不出现,那它在搜索框里大概率也是稀有的,这一层判断跟关键词工具没数据那一篇里用语料补量的思路是同一套。
词典给的形态和用户打的形态不一致时,该收哪一个?
词典把两种都记下来了,还标了身份
这件事最特别的地方在于,规范和用法的冲突是被公开记录的。
波兰语的几部主流词典在这一批词的词条里会同时列出两个形态,并给其中一个加上口语标注。
也就是说,词典自己承认存在两种写法,并且告诉你哪一种更正式。
这跟绝大多数语言问题都不一样。拼写、变音符号、大小写这些事上,词典只给一个答案,你照着抄就行。
而这里,正确写法和高频写法被并排写在同一个词条里,你没法用跟着词典走这条通用策略把问题绕过去,因为词典自己就没有做取舍。
顺带说一句,这种并列记录的做法本身是词典编纂的美德,它忠实反映了语言的实际状态。只是这份忠实到了工程这一侧就变成了一个必须由你来做的决定,而做决定的人往往是词表里最没有语言背景的那一个。
搜索框里的分布跟词典的排序相反
把语料频次和搜索行为放在一起看,会看到一个很尴尬的对照。
词典把规范形态排在前面,口语形态排在后面加个标注。
搜索日志里的排序常常正好倒过来,口语形态的量明显更大。
原因不难理解:搜索框是最口语的一个输入场景,人在那里打的是他嘴里的话,不是他写作文时的话。
这里可以顺手推出一条更一般的经验:凡是某个写法被标注为口语的,它在搜索框里的占比就一定高于它在书面语料里的占比,而且高得不是一点。判断一个词该不该进匹配层,看的应该是搜索场景的分布,不是书面语的分布。
这个倒挂还有个副作用:如果你的母语审校只看页面文本不看搜索日志,他会诚实地把口语形态改回规范形态,而且改得完全正确。母语审校验收那一篇讲的正是这类改对了却改坏了的情形。
跟着词典走这条通用策略在这里失效
大多数团队面对语言问题都有一条兜底策略:拿不准就按词典来。
这条策略在九成的场合都对,也正因为它太可靠,没人会想到它有失效的时候。
它失效的条件很清楚:当词典自己给出两个并列答案的时候,这条策略就没有输出了。
而它失效的时候通常不会报错,团队会默认取词典列在前面的那一个,然后以为自己做对了。
保哥见过好几次这种情况:所有人都遵守了流程,所有人都没做错任何一步,结果是一半的查询接不住。流程越规范,这类问题活得越久,因为没有任何一个环节会举手。
识别这条策略是不是正在失效,有个很简单的自查动作:翻开词典看这一条词条里有没有并列的第二个答案。有,就说明这个位置需要你自己做取舍,词典帮不了你;没有,那照抄就是。这个动作十秒钟,却能挡住一整类静默错误。
两个形态都要进表,但落地位置不同
结论其实很简单,难的是分清楚位置。
匹配层全收:站内搜索的同义词表、广告的关键词列表、结构化数据的别名字段,两个形态一律都放。
展示层选一个:标题、面包屑、筛选器的取值名称只用规范形态,因为那些位置是给人看的,观感成本比覆盖率更重要。
正文可以两个都出现,只要写得自然,一段里出现一次口语形态不会有任何观感问题。
这条按位置分工的原则不是这一篇独有的,首字母缩略语那一篇用的是同一套分工。区别在于那一篇分的是英文原形和本地变形,这一篇分的是规范形态和口语形态,位置表可以直接复用。
把位置分工写成一张表贴在词表旁边比写进文档管用得多。表里只要三行:展示层用哪一列、匹配层用哪几列、正文可以混用。新人接手时看这三行就够,不需要理解背后那套语法。
品牌名和型号会不会也被拉进有生变格?
外来品牌名进句子就跟着变
会,而且这一条经常让品牌方措手不及。
汽车品牌是最早被拉过去的一批,本地人说我有一辆某某车的时候,品牌名带的是有生词尾。
这个用法不是不规范,它已经进了词典,属于正式承认的写法。
对品牌方来说,麻烦在于品牌名恰恰是你最希望字符串保持稳定的那个词。
这跟品牌名音译那一篇的处境正好相反。那一篇讲的是一个名字长出三种写法之后你要主动收敛成一种;这一篇里你收敛不了,因为决定加哪个词尾的不是你的品牌手册,是这句话的语法。
还有一个观察值得记下来:品牌名跨界的速度往往比同品类的通用词更快。原因不难猜,品牌名在口语里出现的频率高、句式固定,正好是最容易固化形态的环境。所以别拿品类词的结论去推品牌词。
型号和字母数字组合是另一回事
型号则要单独拿出来说。
带数字和字母的型号串在句子里通常不加词尾,本地人也觉得加了别扭。
这是好事,说明型号这一层是稳定的,可以放心当成不变的字符串处理。
唯一要注意的是纯字母的型号名,如果它读起来像一个本地词,就有可能被顺手加上词尾。
判断办法很土但很有效:把型号念出来给本地同事听,问他会不会在句子里给它加尾巴。念得出来的容易变,念不出来的通常不变,这条经验在斯拉夫语族里相当可靠。
还有一个更省事的做法:把型号在页面上跟品类词之间用符号隔开,别让它直接嵌进句子里。隔开之后本地人的语感就不会去给它加尾巴,这跟希伯来语那边靠断开连缀结构来绕开形态计算是同一个思路。
品牌名的这一格由用户填,不由你填
把品牌名这件事往上抽一层,会看到一个值得记下来的结构。
品牌名的拼写你说了算,商标注册和视觉规范都在你手里。
品牌名的语法归属你说了不算,它由这门语言的使用者在几年时间里投票投出来。
你能做的只有观察和跟随,观察的窗口是站内搜索日志和本地社区里的实际写法。
所以品牌名在这门语言里的处理要分成两件事:写法收敛是你的职责,形态覆盖是语言的现实。前者要在上线前定死,后者要在上线后持续采集,两件事的节奏完全不同。
这条结构还有一个延伸判断:凡是你能在上线前定死的东西都属于品牌资产,凡是要在上线后持续采集的东西都属于市场事实。把两类东西记在同一份文档里是很多混乱的起点,因为它们的复核节奏差了一个数量级。
站内搜索必须认这些形态
最容易被忽略的落地位置是站内搜索。
用户在自己的站上搜品牌名,打的是他嘴里那个形态,也就是带词尾的那个。
站内搜索如果只做精确匹配,这一批查询全部返回空白。
而在自己的站上被自己的搜索框拒绝,这个体验的杀伤力比排不上名大得多。
最省事的修法是在同义词表里为每个品牌名挂上两到三个形态,几十个品牌也就一两百行配置,一次做完长期有效。这条一样适用于品类词,两件事可以合并到同一次改动里。
再补一句排期上的建议:站内搜索这一处应该排在所有改动的最前面。它的改动范围最小、见效最快、而且完全不影响页面内容,属于那种可以在一次常规发布里顺手带上的动作。
俄语和捷克语的这条线,画在同一个位置吗?
俄语的线画得比波兰语保守
同属斯拉夫语族,这条线的位置并不一致。
俄语也有这套区分,但它把物品拉进有生那一边的程度明显低于波兰语。
波兰语口语里已经跨过去的那批电子产品,在俄语里基本还留在无生这一边。
这意味着你不能拿一门语言的名单去套另一门语言,哪怕两门语言的使用者互相能听懂大半。
这跟俄语变格那一篇给的方法论并不冲突:那一篇解决的是一个词有几种形态,这一篇解决的是该走哪一套形态,两个问题要分开问。
两条线不一致这件事有个很实际的用处:它能帮你判断俄语市场和波兰语市场的词表能共用多少。答案通常是结构可以共用、取值必须各做一份,而这个结论跟跨市场搜索意图那一篇给出的分工是一致的。
捷克语在单复数上的表现不一样
捷克语这边又是另一种情况。
它的区分主要体现在阳性名词上,而且单数和复数的规则不对称。
同一个词在单数上按有生走,在复数上可能就看不出区别了。
做关键词表时如果只验了单数形态,很容易得出一个过于乐观的结论。
稳妥的做法是单复数各验一遍,把四个格子都填上。这一点跟捷克语与斯洛伐克语那一篇的判据可以放在一起用:两门语言能不能共用一套内容,形态这一层的差异要单独算一笔。
另外提醒一句,捷克语的检索资源跟波兰语不在同一个地方,语料库入口和查询语法都不一样。开工前先花十分钟确认这门语言有没有可公开检索的语料库,没有的话这套流程就得换成找本地同事抽样确认,工期要另算。
乌克兰语要跟俄语分开记
乌克兰语的情况需要单独说一句。
它有自己的一套区分,跟俄语相近但不完全重合。
由于两种语言在同一批用户那里同时流通,词表里如果不标语言,两套形态很容易混进同一列。
混进去之后最直接的后果是统计口径乱掉,你会看到一批查询量对不上任何一个形态。
处理办法是在词表里加一列语言标记,这一步跟乌俄双语市场那一篇讲的内容拆分是同一件事的两个侧面:内容要拆,词表也要拆,而且词表这一层更容易被漏掉。
另外要留意的是这两种语言的用户可能在同一个站上共存,而站内搜索通常不区分语言。这意味着同义词表里两套形态会挤在同一个命名空间里,如果不加前缀,排查的时候你会分不清某一行是哪门语言的。
跨语言复用这张表的风险
做多语言站的人天然想复用。
这张表可以复用的部分是结构,也就是那三列字段。
不能复用的部分是取值,每门语言的名单必须各自验一遍。
省这一步的代价通常不是错得很离谱,而是错得很轻微,轻微到没人会发现。
保哥的经验是:跨语言复用取值这件事,出事的时候从来不会有一条曲线掉下来,只会有一片流量从头到尾没来过。这类缺席型的损失,监控系统天生看不见。
这一层会在站内搜索和筛选器上错成什么样?
零结果里藏着最贵的那批查询
站内搜索的零结果日志是这件事最好的探针。
打进来搜宠物名称的人,购买意图通常比搜配件的人更明确。
他们打的是有生形态,而你的商品标题里是词典原形,精确匹配直接落空。
更糟的是这类用户不会换个词再试一次,他默认这个站没有这个东西。
所以这批零结果查询的商业价值密度是全站最高的一档,而它们在报表上只表现为一个不起眼的零结果比例数字。把这个数字按品类拆开看,宠物那一半会明显高出来,这个对比本身就是最好的立项材料。
把这个对比做成图表其实很容易:横轴放品类,纵轴放零结果比例,活物那几个品类会明显高出一截。这张图不需要任何解释就能看懂,比任何一段语法说明都更适合放进立项材料的第一页。
筛选器的取值命名会跟着一起错
筛选器是第二个受害点。
适用宠物这类筛选项的取值是名词,而它出现在界面上的位置决定了它用哪个形态。
取值如果照抄词表,就会把形态问题一路带进结构化数据。
而枚举值这一层跟正文不一样,正文可以模糊,枚举值必须严格相等。
这条跟属性枚举值那一篇是同一个机制的两个实例:那一篇的错源是范畴切分不同,这一篇的错源是形态选错,但落到筛选器上的症状完全一样,都是点了没结果。
筛选器这一层还有个额外的坑:取值一旦被写进结构化数据并被抓取,改起来就要等重新抓取和重新处理,周期以周计。所以这一处宁可上线前多花半小时核对,也别指望后面能悄悄改掉。
词干还原能不能把两个形态并回去
技术上的第一反应是让词干还原器替你摆平。
波兰语和俄语都有成熟的词干还原算法,把两个形态削到同一个词干在多数情况下是做得到的。
但这条路有个前提:削完之后不能把不该并的词也并进来。
而斯拉夫语的形态密度很高,削得越狠误并的概率越大,这一点在否定构词那一篇里已经吃过一次亏。
比较稳的做法是不依赖还原器,直接在同义词表里把形态对显式写死。行数不多,行为可预测,出了问题一眼能查到是哪一行。这个取舍的原则是:形态数量有限且可枚举时,宁可查表也别算法。
另外要留意的是还原器的版本。同一个算法不同实现之间在后缀清单上会有出入,换一次搜索引擎版本可能就把你验过的行为改掉了。显式写死的同义词表没有这个问题,它的行为跟版本无关。
关键词表要为这件事多加哪几列?
一个布尔字段不够用
最容易想到的方案是加一列是否有生,填是或否。
跑两天就会发现不够,因为有相当一批词的答案是两者都有。
摇摆状态如果被硬压成一个布尔值,信息就在入库那一刻丢了。
后面的人看到这一列会以为它是确定的,不会再去查语料。
所以这一列的取值至少要有三档:稳定有生、稳定无生、两可。第三档不是数据缺失,它是一个有信息量的结论,代表这个词的两个形态都要进匹配层。
三档这个设计还有一个好处:它逼着填表的人承认自己不确定。布尔字段会诱导人猜一个,三档给了不确定一个合法的落点,而这个落点恰好对应一个明确的动作,也就是两个形态都进匹配层。
规范形态和口语形态各占一列
光有一个分类还不够,形态本身要落成字符串。
词表里要有一列规范形态、一列口语形态,两列都填实际的字符串而不是规则描述。
这样下游取用的时候不需要懂语法,取哪一列由位置决定。
展示层取规范列,匹配层两列都取,逻辑简单到可以写进配置。
这一步还有个附带好处:两列并排放着的时候,谁在什么时候把哪一列改动过是一目了然的,而如果只存一个规则描述,改动就会淹没在讨论里。
复核触发条件要写清楚
最后一列是时间。
这批词的归属会随时间漂移,而且没有任何机构会发公告。
所以复核不能等通知,只能主动排日历。
建议记的是下次复核日而不是上次确认日,前者是一个动作,后者只是一条记录。
触发条件除了日历还要加一条:新品类上线时必须为新词跑一次。新词是最不稳定的一批,而新品类的词又几乎全是新词,两者叠在一起正好是风险最高的时刻。
另外建议把这一列的粒度定在词而不是品类。同一个品类里的词跨界程度可以差很远,按品类打包复核会把稳定的词和摇摆的词混在一起,下次翻开表的人分不清哪些是查过的哪些是估的。
一套两天能跑完的排查流程
第一步,把品类词按有生性分三堆
先不查任何东西,凭常识把词表分堆。
明显指活物的一堆,明显指器物的一堆,剩下拿不准的进第三堆。
这一步不需要懂波兰语,看中文词表就能分,一个人半小时能过六百条。
分完之后你会发现第三堆通常只有几十条,工作量一下子就可控了。
这里有个筛选技巧:优先看那些经常出现在买和有后面的词,它们跨界的概率最高。而这批词跟你的核心商业词高度重合,所以先排它们的投入产出比也最好。
分堆的时候建议顺手记一列理由,哪怕只写两个字。半年后复核的人看到理由才知道当初是查过的还是估的,没有这一列的表格在第二次复核时只能整张重做。
第二步,拿语料验摇摆的那一堆
第三堆逐条丢进语料库检索。
两个形态各查一次,记下出现次数和比例。
比例悬殊的直接定档,接近对半的标成两可。
整个过程是机械的,可以交给任何一个会用浏览器的人做。
唯一需要注意的是把动词一起带上查,单独查名词形态会混进别的格。这一条是这套流程里最容易被省掉、也最容易导致结论反过来的一步,别省。
还有一个能省时间的做法:把查询串预先拼好放进表格,验的人只需要复制粘贴。这一步看着琐碎,但它把一件需要理解的工作变成了一件只需要执行的工作,能交出去的工作才有可能真的被做完。
第三步,把结论写成开发能执行的规则
验完之后要落成配置,不能停在一份表格上。
交给开发的东西应该是同义词表的增量行,不是一段语法说明。
规则描述会被理解错,字符串对不会。
顺带把筛选器取值和结构化数据的别名字段一起改掉,三处改动本来就是同一批数据。
验收的时候不要问开发是不是理解了生命度,问他把这一百行配置导进去之后,站内搜索这一百个查询是不是都有结果了。这个问法不需要任何语言学背景,而且答案是二值的。
还有一个交付细节:把这批配置单独放一个文件,别混进主同义词表。这样下次复核的时候你能一眼看出上次改了什么,也能在出问题时整体回滚,而不用在几千行配置里找那一百行。
第四步,验收只看三个数
上线之后盯三个数字就够。
第一个是宠物类查询的零结果比例,它应该在几天内明显下降。
第二个是站内搜索里两个形态各自的出现次数,用来确认用户确实在用口语形态。
第三个是这批词对应品类页的展现量,它的变化会比点击更早出现。
三个数里第一个最快见效也最容易解释,适合拿去汇报;后两个是给自己看的,用来判断这次改动的方向对不对,以及下一批该往哪儿扩。
三个数之外还可以补一个定性的检查:随机挑十条改动过的查询,自己在站内搜索里跑一遍,看返回的商品对不对得上。数字会告诉你有没有结果,只有亲眼看一遍才知道结果是不是相关的。
哪些事不归这一层管
格系统本身不在这篇里
这篇只处理一个问题:宾格该走哪一套形态。
一个名词总共有几个格、每个格长什么样、哪几个格会出现在搜索框里,这些是另一件事。
那部分在波兰语七个格那一篇里已经按格拆过一遍,方法论可以直接拿来用。
两篇的关系是:那一篇告诉你要覆盖哪几个格,这一篇告诉你其中一个格里还藏着一个二选一。
把两件事混在一起谈是这个话题最常见的误区,混完的结果通常是词表膨胀好几倍,而真正漏掉的那批查询还是没接住。
锚文本的变形是另一篇的事
内链锚文本在这类语言里会跟着句子变形,这也是一个真问题。
但它的处理逻辑跟关键词表不同,因为锚文本的形态由行文决定,不由你选。
锚文本变形那一篇讲的是怎么把审计口径从字符串换成词干。
这一篇不重复那一套,只补一句:做锚文本审计时,有生形态和无生形态要算成同一个词的两个形态,别当成两个不同的锚。
否则你会看到锚文本多样性这个指标虚高,而它虚高的原因纯粹是语法,跟你的内链策略一点关系都没有。
顺带提一句,锚文本这一层跟本文的关系其实是单向的:把形态处理好之后锚文本审计会跟着变准,反过来则不成立。所以两件事要做的话先做词表这一层,顺序反了会白算一遍指标。
引擎那一半交给平台层
最后还有一半功课不在语言这一层。
搜索引擎自己怎么处理形态变化、本地搜索引擎跟通用搜索引擎的处理有没有差别,这些属于引擎的行为。
本站把引擎那一半放在平台与多引擎那个方向里单独讲,这篇不展开。
把两边分开的好处是判断责任归属时不会互相甩锅:形态没覆盖是你的事,覆盖了还是不出现才轮到去查引擎。
顺序反过来的团队通常会在引擎行为上花掉几周时间,最后发现问题在自己的词表第三列里。这个顺序值得写进排查手册的第一行。
划清这条边界还有一个组织上的好处:语言这一层的活可以交给内容和本地化的人,引擎那一层要找技术或者投放的人。责任分不清的时候,两拨人会同时觉得这件事归对方管,于是它谁都不做。
常见问题解答
不懂波兰语,怎么自己判断一个词该走哪一套形态?
有一条几乎不需要语言能力的路径。先把这个词的两个候选形态写出来,规范形态就是词典原形,有生形态是在词尾加一个特定字母,这一步查任何一部在线波兰语词典的变格表都能拿到。然后把两个形态分别丢进波兰语国家语料库的检索界面,记下各自的出现次数。数字差十倍以上的直接定档,接近对半的标成两可。整个过程你需要的语言能力为零,需要的只是知道该查哪两个字符串。
要提醒的是查询时把买或者有这个动词一起带上,否则会混进其它格的形态,得到的比例是假的。做完之后可以再花十分钟把结论发给本地同事确认一遍,但确认的问题要问得具体,问他平时会怎么打这个查询,而不是问哪一种写法正确。另外提醒一点,语料库检索出来的次数不要直接当成搜索量看,它反映的是这个形态在书面语里的流通度,量级和口径都跟搜索工具不一样。
只做匹配层的覆盖,页面上完全不用口语形态,行不行?
大部分情况下可以,而且这是最稳妥的起步方案。匹配层包括站内搜索的同义词表、广告关键词、结构化数据的别名字段,这三处全部收两个形态,成本很低而且没有任何观感风险。页面可见文本继续用规范形态,标题和面包屑保持整齐。这样做能接住绝大部分的量,因为搜索引擎在处理形态变化上本来就有一定能力,你要做的是别让站内那一层先拒绝用户。
等这一版跑一段时间之后,再看要不要在正文里补几处口语形态。补的时候记住只补正文和问答区,别动标题,标题是搜索结果页上唯一露出的一行字,观感成本最高。还有一个附带的好处是这个方案完全可逆,如果后面发现效果不明显,把同义词配置删掉就回到了原样,不留任何痕迹。
词干还原器能不能一次性解决这个问题?
能解决一部分,但不建议只依赖它。斯拉夫语的成熟词干还原算法确实能把有生形态和无生形态削到同一个词干,站内搜索接上之后召回会立刻改善。问题在于这类算法是按后缀规则工作的,削得越狠误并的概率越大,而斯拉夫语里字符串相近语义相反的词对并不少见。更现实的方案是两条腿走路:还原器负责兜底,覆盖那些你没预料到的形态;同义词表负责核心词,把最重要的那一两百个词对显式写死。
这样出了问题能一眼看出是哪一行配置的事,而不用去猜算法这次为什么削多了一刀。如果只能选一条,选同义词表,因为它的行为是可预测的。另外提醒一句,站内搜索引擎自带的语言分析器不一定装了这门语言的模块,上线前先确认一下,别把它默认当成已经装好的。
这件事在广告投放那一侧会不会也有影响?
有,而且比自然搜索那一侧更直接。广告的关键词匹配是按词元工作的,形态不同在某些匹配类型下会被当成不同的词处理,于是你出价的那个形态可能恰好不是用户打的那个。更麻烦的是否定关键词,如果你只否定了一个形态,另一个形态的流量会照样进来,钱就白花了。稳妥做法是把两个形态成对加进关键词列表和否定列表,两边都要成对,缺一边比两边都不加还糟。
搜索词报告是最好的校验工具,跑两周之后把实际触发的搜索词拉出来,看看有没有你没加过的形态混在里面,那批词通常就是你名单上还缺的那几条。还有一点容易忘:广告的搜索词报告只显示达到一定展现量的词,量小的形态不会出现在里面,所以那份报告能证明有、不能证明没有。
宠物之外的品类,需要花同样的功夫吗?
不需要花同样的功夫,但需要花一次功夫做筛查。判断标准很简单:这个品类的核心词里有没有指活物的。有的话按本文的流程走一遍,没有的话只需要检查那批可能跨界的物品词,也就是电子产品、汽车相关、烟酒这几族。绝大多数品类跑完筛查会发现只有个位数的词需要处理,半小时就完事。真正需要整批处理的只有宠物、水族、园艺里的活体植物这几个类目,它们的共同点是商品本身就是活的。
顺带说一句,即便是纯器物类目,品牌名那一层仍然要单独看,因为品牌名跨界跟品类无关。另外一个省事的筛法是看商品图,图里出现的是活物还是器物,这个判断连语言都不需要,一眼就能分完大半张表。
怎么跟不懂这门语言的开发解释这个问题?
别解释语法,直接给数据。最有效的说法是:这一百个查询在我们站内搜索里返回零结果,用户打的字符串在这里,我们商品标题里的字符串在这里,两者差一个字母。然后把一百行同义词配置递过去。开发不需要知道为什么差这一个字母,他需要知道的是导进去之后哪一百个查询应该有结果。如果对方追问原因,一句话就够:这门语言里指活物的名词在这个位置有另一种写法。
再多的语法细节只会让讨论跑偏,而且对落地没有任何帮助。验收也按同样的方式做,跑那一百个查询看返回条数,二值判断,不需要任何语言学知识。如果对方还是不放心,可以让他先只导一个品类的配置上线看效果,跑通之后再导全量,这比反复解释语法有效得多。
这批形态会不会随着时间变化,做完就得一直维护?
会变,而且方向是单向的:越来越多的物品词被拉进有生那一边,很少有反过来的。变化速度不快,以年为单位,所以半年复核一次完全够用,熟练之后一次一小时。复核的动作就是重跑一遍语料检索,看那批标成两可的词比例有没有明显移动。真正需要额外注意的是新品类上线的时刻,新词是最不稳定的一批,值得单独跑一次而不是等到下一个复核日。
另外建议把复核记录留在词表里而不是留在文档里,因为文档会被人遗忘,而词表每次改动都要被打开。这一点跟别的语言维护工作是一样的道理:让检查项待在人每天都会经过的地方。还有一个信号可以顺手盯:如果某个词的口语形态在站内搜索里的占比连续两个季度上升,那它已经跨过去了,词表里那一格该改成稳定有生。
本文标题:《波兰语给笔记本电脑用的是买猫那个词尾,词典说这是错的,用户就这么搜》
本文链接:https://zhangwenbao.com/minor-language-animacy-accusative-keyword-forms.html
版权声明:本文原创,转载与引用请注明作者与原文链接。许可协议: CC BY 4.0