大千世界的各种路名的各种说法(完)
Posted: 2013-11-21 14:15
好久不来了,在公司和家两头跑,摸鱼的时间也都拿来看小白文了——最近看了个150万字的小白文(你真是够了你!),晚上拿手机刷刷恶人谷,都没工夫写贴回帖了。
来说个行业虱子,呃,大概勉强算得上行业虱子的段子吧。
话说我们的车载客户,今年又有了新要求,就是打算让用户们能够更flexible的用语音搜索街名。例如一条街,叫作N. 1st Street NW (这种街名Jun在DC一定比较常见),当然我们不能期待用户能完整的记下这么艹蛋的名字,很多用户,大概就打算说,N 1st, 或者,1st Street NW, 或者,1st NW,等等等等。总之嘛,大千世界无数人口,这名字可以任意组合一下被人说出来,既然有这种被部分说出来的可能,用户就要求,就要允许部分说出来的街名能够被搜索到。
注意,这里说的是语音搜索。
这种fuzzy match在touch screen上并不算特别困难,整个string中任何一部分被输入了,就能被找到,这个是目前几乎所有的导航都能做到的。
但是,语音,是另外一件事。
首先一点,语音的数据,并不完全。
先简单讲讲语音搜索(我也只知道个大概),在数据里,每个街名(或者POI或者城市州国家等等等),除了有名字,语音也对应了一个长长的乱码一样的字符串来记录这个词在不同语言下的发音(例如在我们收到的供应商的语音数据里,Minnesota的语音,在西班牙语里的发音里写出来是“mi|ne|"so|ta”,在英语里的发音写出来是“%mI|nI|*"so|t@”),语音引擎可以读入这个字符串转化成发音,这个发音,可以用来给出导航指示。或者,在用户说一个语音的时候,语音引擎会把这个听到的语音进行分析,也转化成这种乱码一样的字符串,在数据库中进行匹配,然后在屏幕上显示匹配的结果。
——是不是写得太罗嗦了?这么简单的问题写那么多行,好像很蠢的感觉。
然后说说我们拿到的数据。
我们每拿到一条街名,对应的,这个街名会被切分成若干分保存,一个完整的街名(N 1st Street NW),一个base街名(1st),一个街的类型(Street),一个prefix(N.),一个Suffix(NW),相应的,语音数据也有几种:完整街名的语音,Base的语音,街类型的语音,Prefix的语音,以及,Suffix的语音;后面这三个是单独的三个表,因为这三种成分是——供应商认为——普适的。
那么简单的方法就是把这些语音排列组合的加在一起,拼成各种可能的街名的说法,N 1st,就把Prefix+Base的语音加在一起,1st NW,就是把Base和Suffix的语音加一起。
于是第一个问题来了,这些语音Prefix,街型和Suffix的发音,并不是普适的。虽然我们认为N.在哪里都发North的音,在数据里,很显然,并不是如此,显然North在有些词前面,发一种音,在另一些词前面的时候,发另外一种音。同理可以推广到街型和Suffix,于是这三个普适的表格,不足够我们所用。
更大的问题是——这个小美大概一看开头就拍大腿说不行了?——,在有些语言里面,例如德语法语西班牙语等等语,两个词连在一起的说法,和两个词分开以后的语音相加,完全不是一回事儿。
于是我们又找公司里的法语和德语支持来开会,问他们在德国法国的街名情况。
两个人都坚定地回答,在德国/法国,没有prefix/suffix这些东西,一条街名就是一条街名,人们或者说Avenue Des Champs-Elysees(噢对,在法语里,街的类型又跑Base前面去了),或者说Champs-Elysee,没了。
德语支持说得更有意思,她说她们那里的街名,不一定是什么什么街,有可能是一个landmark,例如某个地方若干年前有条小溪,人家那街名就叫beim stillen bach,不仅没有prefix/suffix,连type都没有了!还可能某地方几月几日打过一场仗,就给那里的街名命名为几月几日了。
我百思不得其解,于是问,那,那个什么Beim Stillen Bach,街型算是Beim吗?德国姑娘说不是,这就是街名,当然,这个街名我们是从来不说的,我们给人说走某街的时候,说的是Stiller Bach。。。
法国小哥还振振有词的说,我们的街名,那都是几百年几百年流传下来的,并不像美国这样,我们给这些街取名的时候,都还没有东南西北之类的概念。
我沉思一秒,立即反驳道,这不可能,别说几百年前,中国上千年的街名,也是有东南西北的。美国大叔立即支持我,说,对阿,你们的北京,北不就是North的意思嘛,意思是北边的城市?
我还沉浸在古时候街名的回忆中,在想,东西南北这些方向词,在我们历史长河里,到底有没有出现在街名里过呢。——当然,方向,那是一定有的,东西南北自古有之,随便搜篇徐霞客游记都能被他满篇满篇的方向词绕晕(这人就是个活丈量地图阿!)。我们一直说的青龙白虎朱雀玄武,也是基于东南西北的,显然不是没有,只是有没有在街名里而已。
我深觉这简直是可以拿来写篇历史地理论文的体裁,不过当然这不是我们开会的重点,重点是,欧洲的街名里没有Prefix和Suffix,人们说一条街,或者说整个街名,或者只说Base,简单明快又方便,更重要的是,数据里有现成的语音,我们不用自己瞎拼了!
会议圆满结束,皆大欢喜。
我乐滋滋想,这好像是第一次,欧洲的情形比美国要简单呢。
等下,可是,中国呢?
我跟上海同事聊天,问道,那么淮海南路,这个南,到底是路名base的一部分,还是Suffix呢?——如果是Suffix,那这个suffix,又跑到Base和街型之间了。那么,会不会有人在找街名的时候,说淮海南来找这条街?
因为中国数据我们没法查到,于是不了了之,同事挥挥手说,别管中国了,反正不是我们做,算了算了。
于是欢喜结束。
我们只要把英语街名,准确的说,美国的英语街名这骨头啃下来,就好了。
来说个行业虱子,呃,大概勉强算得上行业虱子的段子吧。
话说我们的车载客户,今年又有了新要求,就是打算让用户们能够更flexible的用语音搜索街名。例如一条街,叫作N. 1st Street NW (这种街名Jun在DC一定比较常见),当然我们不能期待用户能完整的记下这么艹蛋的名字,很多用户,大概就打算说,N 1st, 或者,1st Street NW, 或者,1st NW,等等等等。总之嘛,大千世界无数人口,这名字可以任意组合一下被人说出来,既然有这种被部分说出来的可能,用户就要求,就要允许部分说出来的街名能够被搜索到。
注意,这里说的是语音搜索。
这种fuzzy match在touch screen上并不算特别困难,整个string中任何一部分被输入了,就能被找到,这个是目前几乎所有的导航都能做到的。
但是,语音,是另外一件事。
首先一点,语音的数据,并不完全。
先简单讲讲语音搜索(我也只知道个大概),在数据里,每个街名(或者POI或者城市州国家等等等),除了有名字,语音也对应了一个长长的乱码一样的字符串来记录这个词在不同语言下的发音(例如在我们收到的供应商的语音数据里,Minnesota的语音,在西班牙语里的发音里写出来是“mi|ne|"so|ta”,在英语里的发音写出来是“%mI|nI|*"so|t@”),语音引擎可以读入这个字符串转化成发音,这个发音,可以用来给出导航指示。或者,在用户说一个语音的时候,语音引擎会把这个听到的语音进行分析,也转化成这种乱码一样的字符串,在数据库中进行匹配,然后在屏幕上显示匹配的结果。
——是不是写得太罗嗦了?这么简单的问题写那么多行,好像很蠢的感觉。
然后说说我们拿到的数据。
我们每拿到一条街名,对应的,这个街名会被切分成若干分保存,一个完整的街名(N 1st Street NW),一个base街名(1st),一个街的类型(Street),一个prefix(N.),一个Suffix(NW),相应的,语音数据也有几种:完整街名的语音,Base的语音,街类型的语音,Prefix的语音,以及,Suffix的语音;后面这三个是单独的三个表,因为这三种成分是——供应商认为——普适的。
那么简单的方法就是把这些语音排列组合的加在一起,拼成各种可能的街名的说法,N 1st,就把Prefix+Base的语音加在一起,1st NW,就是把Base和Suffix的语音加一起。
于是第一个问题来了,这些语音Prefix,街型和Suffix的发音,并不是普适的。虽然我们认为N.在哪里都发North的音,在数据里,很显然,并不是如此,显然North在有些词前面,发一种音,在另一些词前面的时候,发另外一种音。同理可以推广到街型和Suffix,于是这三个普适的表格,不足够我们所用。
更大的问题是——这个小美大概一看开头就拍大腿说不行了?——,在有些语言里面,例如德语法语西班牙语等等语,两个词连在一起的说法,和两个词分开以后的语音相加,完全不是一回事儿。
于是我们又找公司里的法语和德语支持来开会,问他们在德国法国的街名情况。
两个人都坚定地回答,在德国/法国,没有prefix/suffix这些东西,一条街名就是一条街名,人们或者说Avenue Des Champs-Elysees(噢对,在法语里,街的类型又跑Base前面去了),或者说Champs-Elysee,没了。
德语支持说得更有意思,她说她们那里的街名,不一定是什么什么街,有可能是一个landmark,例如某个地方若干年前有条小溪,人家那街名就叫beim stillen bach,不仅没有prefix/suffix,连type都没有了!还可能某地方几月几日打过一场仗,就给那里的街名命名为几月几日了。
我百思不得其解,于是问,那,那个什么Beim Stillen Bach,街型算是Beim吗?德国姑娘说不是,这就是街名,当然,这个街名我们是从来不说的,我们给人说走某街的时候,说的是Stiller Bach。。。
法国小哥还振振有词的说,我们的街名,那都是几百年几百年流传下来的,并不像美国这样,我们给这些街取名的时候,都还没有东南西北之类的概念。
我沉思一秒,立即反驳道,这不可能,别说几百年前,中国上千年的街名,也是有东南西北的。美国大叔立即支持我,说,对阿,你们的北京,北不就是North的意思嘛,意思是北边的城市?
我还沉浸在古时候街名的回忆中,在想,东西南北这些方向词,在我们历史长河里,到底有没有出现在街名里过呢。——当然,方向,那是一定有的,东西南北自古有之,随便搜篇徐霞客游记都能被他满篇满篇的方向词绕晕(这人就是个活丈量地图阿!)。我们一直说的青龙白虎朱雀玄武,也是基于东南西北的,显然不是没有,只是有没有在街名里而已。
我深觉这简直是可以拿来写篇历史地理论文的体裁,不过当然这不是我们开会的重点,重点是,欧洲的街名里没有Prefix和Suffix,人们说一条街,或者说整个街名,或者只说Base,简单明快又方便,更重要的是,数据里有现成的语音,我们不用自己瞎拼了!
会议圆满结束,皆大欢喜。
我乐滋滋想,这好像是第一次,欧洲的情形比美国要简单呢。
等下,可是,中国呢?
我跟上海同事聊天,问道,那么淮海南路,这个南,到底是路名base的一部分,还是Suffix呢?——如果是Suffix,那这个suffix,又跑到Base和街型之间了。那么,会不会有人在找街名的时候,说淮海南来找这条街?
因为中国数据我们没法查到,于是不了了之,同事挥挥手说,别管中国了,反正不是我们做,算了算了。
于是欢喜结束。
我们只要把英语街名,准确的说,美国的英语街名这骨头啃下来,就好了。