498. Foursquare - Location Matching | foursquare-location-matching
我发布了我们的推理代码。
代码比较乱,但我希望它能对你有所帮助。
我发布了关于 Word Tour 的笔记本。
“Word Tour”是该解决方案的重要组成部分之一,很可能也适用于其他任务。请查看并点赞。
我们发布我们的解决方案。
由于是通过谷歌翻译生成的英文,我想可能有一些不自然的地方,但请原谅,我会尽可能在稍后进行修正。
我们根据每种语言对“名称”和“地址”进行了预处理,并将其转换为嵌入。
我们根据距离、名称相似度、单词和字符的精确率以及基于多元回归的召回率生成了候选者。
通过 LightGBM 二分类进行预测。
在后处理中,通过并查集树将预测值超过阈值的边划分为子图,然后选择最短距离在2以内的那些。

大家关心的从 0.933 到 0.951 的跳跃发生在我将 5 折交叉验证中的一折替换为使用所有数据训练 2000 次迭代的模型时,而之前的那一折是在 500 次迭代时早停的。
由于名称和地址是多语言的,我准备了三个独立的处理过程。
此外,由于地址有很多缺失值,我们通过连接距离最近的三个邻居来进行补充。
基本上,所有语言都统一进行符号移除 -> 小写化/数字数字化 -> 字母化。
由于日语、中文和泰语是需要分词的语言,因此单独进行处理。
对于日语,使用分词器 Sudachi 获取分词和读音,然后使用 Pykakasi 将其转换为罗马字。
中文通过 zh_segmentation 进行分词,并通过 unidecode 转换为罗马字。
泰语使用 PyThaiNLP 进行分词和罗马化。
对于城市和州,我们按出现次数的顺序提取了大约 2000 个,并将其归类为距离附近的 2000 个类别之一。
我们还使用 cities1000 数据集将其转换为前 2000 个地名,并将其作为一个类别。(以下简称 geo_name)
对于上一节第3点的文本,名称和地址使用不同的句子片段被分割成 32000 个子词。
在此基础上,我们通过以下三种基于 word2vec 的无监督预学习来学习嵌入。
在进行这些学习时,获取负样本